|
|
@ -1,179 +1,13 @@
|
|
|
|
module Docs
|
|
|
|
module Docs
|
|
|
|
class Dojo < UrlScraper
|
|
|
|
class Dojo < UrlScraper
|
|
|
|
|
|
|
|
include StubRootPage
|
|
|
|
self.name = 'Dojo'
|
|
|
|
self.name = 'Dojo'
|
|
|
|
self.slug = 'dojo'
|
|
|
|
self.slug = 'dojo'
|
|
|
|
self.type = 'dojo'
|
|
|
|
self.type = 'dojo'
|
|
|
|
self.version = '1.10'
|
|
|
|
self.version = '1.10'
|
|
|
|
self.base_url = 'http://dojotoolkit.org/api/1.10/'
|
|
|
|
self.base_url = 'http://dojotoolkit.org/api/1.10/'
|
|
|
|
|
|
|
|
|
|
|
|
# This is a cut down list of the actually paths taken from the tree.json api on the dojo site
|
|
|
|
|
|
|
|
# Dojo used javascript and xhr requests to allow users to browse it's documentation so it can't
|
|
|
|
|
|
|
|
# be scrapped by just following links from the base page. This list was generating with a little
|
|
|
|
|
|
|
|
# bash and then cut down in order to remove a lot of the more unused documentation e.g. kernel,
|
|
|
|
|
|
|
|
# main, dnd and some others
|
|
|
|
|
|
|
|
self.initial_paths = %w(
|
|
|
|
|
|
|
|
dojo/AdapterRegistry
|
|
|
|
|
|
|
|
dojo/aspect
|
|
|
|
|
|
|
|
dojo/back
|
|
|
|
|
|
|
|
dojo/_base/array
|
|
|
|
|
|
|
|
dojo/_base/browser
|
|
|
|
|
|
|
|
dojo/_base/Color
|
|
|
|
|
|
|
|
dojo/_base/Color.named
|
|
|
|
|
|
|
|
dojo/_base/config
|
|
|
|
|
|
|
|
dojo/_base/config.modulePaths
|
|
|
|
|
|
|
|
dojo/_base/connect
|
|
|
|
|
|
|
|
dojo/_base/declare
|
|
|
|
|
|
|
|
dojo/_base/Deferred
|
|
|
|
|
|
|
|
dojo/_base/event
|
|
|
|
|
|
|
|
dojo/_base/fx
|
|
|
|
|
|
|
|
dojo/_base/html
|
|
|
|
|
|
|
|
dojo/_base/json
|
|
|
|
|
|
|
|
dojo/_base/kernel
|
|
|
|
|
|
|
|
dojo/_base/lang
|
|
|
|
|
|
|
|
dojo/_base/loader
|
|
|
|
|
|
|
|
dojo/_base/NodeList
|
|
|
|
|
|
|
|
dojo/_base/query
|
|
|
|
|
|
|
|
dojo/_base/sniff
|
|
|
|
|
|
|
|
dojo/_base/unload
|
|
|
|
|
|
|
|
dojo/_base/window
|
|
|
|
|
|
|
|
dojo/_base/window.doc
|
|
|
|
|
|
|
|
dojo/_base/window.global
|
|
|
|
|
|
|
|
dojo/_base/xhr
|
|
|
|
|
|
|
|
dojo/_base/xhr.contentHandlers
|
|
|
|
|
|
|
|
dojo/behavior
|
|
|
|
|
|
|
|
dojo/cache
|
|
|
|
|
|
|
|
dojo/cldr/monetary
|
|
|
|
|
|
|
|
dojo/cldr/supplemental
|
|
|
|
|
|
|
|
dojo/colors
|
|
|
|
|
|
|
|
dojo/cookie
|
|
|
|
|
|
|
|
dojo/currency
|
|
|
|
|
|
|
|
dojo/data/api/Identity
|
|
|
|
|
|
|
|
dojo/data/api/Item
|
|
|
|
|
|
|
|
dojo/data/api/Notification
|
|
|
|
|
|
|
|
dojo/data/api/Read
|
|
|
|
|
|
|
|
dojo/data/api/Request
|
|
|
|
|
|
|
|
dojo/data/api/Write
|
|
|
|
|
|
|
|
dojo/data/ItemFileReadStore
|
|
|
|
|
|
|
|
dojo/data/ItemFileWriteStore
|
|
|
|
|
|
|
|
dojo/data/ObjectStore
|
|
|
|
|
|
|
|
dojo/data/util/filter
|
|
|
|
|
|
|
|
dojo/data/util/simpleFetch
|
|
|
|
|
|
|
|
dojo/data/util/sorter
|
|
|
|
|
|
|
|
dojo/date
|
|
|
|
|
|
|
|
dojo/date/locale
|
|
|
|
|
|
|
|
dojo/date/stamp
|
|
|
|
|
|
|
|
dojo/debounce
|
|
|
|
|
|
|
|
dojo/Deferred
|
|
|
|
|
|
|
|
dojo/DeferredList
|
|
|
|
|
|
|
|
dojo/dom
|
|
|
|
|
|
|
|
dojo/dom-attr
|
|
|
|
|
|
|
|
dojo/dom-class
|
|
|
|
|
|
|
|
dojo/dom-construct
|
|
|
|
|
|
|
|
dojo/dom-form
|
|
|
|
|
|
|
|
dojo/dom-geometry
|
|
|
|
|
|
|
|
dojo/dom-prop
|
|
|
|
|
|
|
|
dojo/dom-prop.names
|
|
|
|
|
|
|
|
dojo/domReady
|
|
|
|
|
|
|
|
dojo/dom-style
|
|
|
|
|
|
|
|
dojo/errors/CancelError
|
|
|
|
|
|
|
|
dojo/errors/create
|
|
|
|
|
|
|
|
dojo/errors/RequestError
|
|
|
|
|
|
|
|
dojo/errors/RequestTimeoutError
|
|
|
|
|
|
|
|
dojo/Evented
|
|
|
|
|
|
|
|
dojo/fx
|
|
|
|
|
|
|
|
dojo/fx/easing
|
|
|
|
|
|
|
|
dojo/fx.easing
|
|
|
|
|
|
|
|
dojo/fx/Toggler
|
|
|
|
|
|
|
|
dojo/fx.Toggler
|
|
|
|
|
|
|
|
dojo/gears
|
|
|
|
|
|
|
|
dojo/gears.available
|
|
|
|
|
|
|
|
dojo/has
|
|
|
|
|
|
|
|
dojo/hash
|
|
|
|
|
|
|
|
dojo/hccss
|
|
|
|
|
|
|
|
dojo/html
|
|
|
|
|
|
|
|
dojo/html._ContentSetter
|
|
|
|
|
|
|
|
dojo/i18n
|
|
|
|
|
|
|
|
dojo/i18n.cache
|
|
|
|
|
|
|
|
dojo/io/iframe
|
|
|
|
|
|
|
|
dojo/io-query
|
|
|
|
|
|
|
|
dojo/io/script
|
|
|
|
|
|
|
|
dojo/json
|
|
|
|
|
|
|
|
dojo/keys
|
|
|
|
|
|
|
|
dojo/loadInit
|
|
|
|
|
|
|
|
dojo/main
|
|
|
|
|
|
|
|
dojo/mouse
|
|
|
|
|
|
|
|
dojo/node
|
|
|
|
|
|
|
|
dojo/NodeList
|
|
|
|
|
|
|
|
dojo/NodeList-data
|
|
|
|
|
|
|
|
dojo/NodeList-dom
|
|
|
|
|
|
|
|
dojo/NodeList-fx
|
|
|
|
|
|
|
|
dojo/NodeList-html
|
|
|
|
|
|
|
|
dojo/NodeList-manipulate
|
|
|
|
|
|
|
|
dojo/NodeList._nodeDataCache
|
|
|
|
|
|
|
|
dojo/NodeList-traverse
|
|
|
|
|
|
|
|
dojo/number
|
|
|
|
|
|
|
|
dojo/on
|
|
|
|
|
|
|
|
dojo/on/asyncEventListener
|
|
|
|
|
|
|
|
dojo/on/debounce
|
|
|
|
|
|
|
|
dojo/on/throttle
|
|
|
|
|
|
|
|
dojo/parser
|
|
|
|
|
|
|
|
dojo/promise/all
|
|
|
|
|
|
|
|
dojo/promise/first
|
|
|
|
|
|
|
|
dojo/promise/instrumentation
|
|
|
|
|
|
|
|
dojo/promise/Promise
|
|
|
|
|
|
|
|
dojo/promise/tracer
|
|
|
|
|
|
|
|
dojo/query
|
|
|
|
|
|
|
|
dojo/ready
|
|
|
|
|
|
|
|
dojo/regexp
|
|
|
|
|
|
|
|
dojo/request
|
|
|
|
|
|
|
|
dojo/request/default
|
|
|
|
|
|
|
|
dojo/request/handlers
|
|
|
|
|
|
|
|
dojo/request/iframe
|
|
|
|
|
|
|
|
dojo/request/node
|
|
|
|
|
|
|
|
dojo/request/notify
|
|
|
|
|
|
|
|
dojo/request/registry
|
|
|
|
|
|
|
|
dojo/request/script
|
|
|
|
|
|
|
|
dojo/request/util
|
|
|
|
|
|
|
|
dojo/request/watch
|
|
|
|
|
|
|
|
dojo/request/xhr
|
|
|
|
|
|
|
|
dojo/require
|
|
|
|
|
|
|
|
dojo/robot
|
|
|
|
|
|
|
|
dojo/robot._runsemaphore
|
|
|
|
|
|
|
|
dojo/robotx
|
|
|
|
|
|
|
|
dojo/robotx._runsemaphore
|
|
|
|
|
|
|
|
dojo/router
|
|
|
|
|
|
|
|
dojo/router/RouterBase
|
|
|
|
|
|
|
|
dojo/rpc/JsonpService
|
|
|
|
|
|
|
|
dojo/rpc/JsonService
|
|
|
|
|
|
|
|
dojo/rpc/RpcService
|
|
|
|
|
|
|
|
dojo/selector/acme
|
|
|
|
|
|
|
|
dojo/selector/lite
|
|
|
|
|
|
|
|
dojo/selector/_loader
|
|
|
|
|
|
|
|
dojo/sniff
|
|
|
|
|
|
|
|
dojo/Stateful
|
|
|
|
|
|
|
|
dojo/store/api/Store
|
|
|
|
|
|
|
|
dojo/store/api/Store.PutDirectives
|
|
|
|
|
|
|
|
dojo/store/api/Store.QueryOptions
|
|
|
|
|
|
|
|
dojo/store/api/Store.QueryResults
|
|
|
|
|
|
|
|
dojo/store/api/Store.SortInformation
|
|
|
|
|
|
|
|
dojo/store/api/Store.Transaction
|
|
|
|
|
|
|
|
dojo/store/Cache
|
|
|
|
|
|
|
|
dojo/store/DataStore
|
|
|
|
|
|
|
|
dojo/store/JsonRest
|
|
|
|
|
|
|
|
dojo/store/Memory
|
|
|
|
|
|
|
|
dojo/store/Observable
|
|
|
|
|
|
|
|
dojo/store/util/QueryResults
|
|
|
|
|
|
|
|
dojo/store/util/SimpleQueryEngine
|
|
|
|
|
|
|
|
dojo/string
|
|
|
|
|
|
|
|
dojo/text
|
|
|
|
|
|
|
|
dojo/throttle
|
|
|
|
|
|
|
|
dojo/topic
|
|
|
|
|
|
|
|
dojo/touch
|
|
|
|
|
|
|
|
dojo/uacss
|
|
|
|
|
|
|
|
dojo/when
|
|
|
|
|
|
|
|
dojo/window)
|
|
|
|
|
|
|
|
# Add the rest of the url to the path
|
|
|
|
|
|
|
|
self.initial_paths = self.initial_paths.map { |l| l + ".html?xhr=true" }
|
|
|
|
|
|
|
|
# Dojo expects all the requests to be xhrs or it redirects you back to the docs home page
|
|
|
|
# Dojo expects all the requests to be xhrs or it redirects you back to the docs home page
|
|
|
|
# where it uses js to call the backend based on the URL so you get the appropriate documentation
|
|
|
|
# where it uses js to call the backend based on the URL so you get the appropriate documentation
|
|
|
|
self.headers = { 'User-Agent' => 'devdocs.io' , 'X-Requested-With' => 'XMLHttpRequest' }
|
|
|
|
self.headers = { 'User-Agent' => 'devdocs.io' , 'X-Requested-With' => 'XMLHttpRequest' }
|
|
|
@ -185,10 +19,27 @@ module Docs
|
|
|
|
html_filters.push 'dojo/clean_html', 'dojo/entries'
|
|
|
|
html_filters.push 'dojo/clean_html', 'dojo/entries'
|
|
|
|
|
|
|
|
|
|
|
|
# Don't use default selector on xhrs as no body or html document exists
|
|
|
|
# Don't use default selector on xhrs as no body or html document exists
|
|
|
|
options[:container] = ->(filter) { filter.root_page? ? '#content' : false }
|
|
|
|
options[:container] = false
|
|
|
|
options[:follow_links] = false
|
|
|
|
|
|
|
|
options[:skip_links] = true
|
|
|
|
def root_page_body
|
|
|
|
options[:only] = self.initial_paths
|
|
|
|
require 'json'
|
|
|
|
|
|
|
|
require 'set'
|
|
|
|
|
|
|
|
response = Typhoeus::Request.new("dojotoolkit.org/api/1.10/tree.json",
|
|
|
|
|
|
|
|
headers: { 'User-Agent' => 'devdocs.io' , 'X-Requested-With' => 'XMLHttpRequest' }).run
|
|
|
|
|
|
|
|
treeJSON = JSON.parse(response.response_body)
|
|
|
|
|
|
|
|
treeJSON = treeJSON["children"].bsearch { |framework| framework["name"] == "dojo" }
|
|
|
|
|
|
|
|
@url_set = Set.new
|
|
|
|
|
|
|
|
def get_url_list treeJSON
|
|
|
|
|
|
|
|
@url_set.add(self.class.base_url + treeJSON["fullname"] + ".html?xhr=true")
|
|
|
|
|
|
|
|
if (treeJSON["children"])
|
|
|
|
|
|
|
|
treeJSON["children"].each do |child|
|
|
|
|
|
|
|
|
get_url_list child
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
get_url_list treeJSON
|
|
|
|
|
|
|
|
@url_set.map { |l| "<a href='#{l}'>#{l}</a>"}.join "<br>"
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
options[:attribution] = <<-HTML
|
|
|
|
options[:attribution] = <<-HTML
|
|
|
|
The Dojo Toolkit is Copyright © 2005–2013 <br>
|
|
|
|
The Dojo Toolkit is Copyright © 2005–2013 <br>
|
|
|
|