Showing the changes to lib/docs (84 of 168 files). Show all
Unified · Split
| @@ -95,6 +95,9 @@ module Docs · 94 unmodified lines | ||
| 95 | 95 | false |
| 96 | 96 | end |
| 97 | 97 | end |
| 98 | + rescue Docs::SetupError => error | |
| 99 | + puts "ERROR: #{error.message}" | |
| 100 | + false | |
| 98 | 101 | end |
| 99 | 102 | |
| 100 | 103 | def store_pages(store) |
| @@ -118,6 +121,9 @@ module Docs · 17 unmodified lines | ||
| 118 | 121 | false |
| 119 | 122 | end |
| 120 | 123 | end |
| 124 | + rescue Docs::SetupError => error | |
| 125 | + puts "ERROR: #{error.message}" | |
| 126 | + false | |
| 121 | 127 | end |
| 122 | 128 | |
| 123 | 129 | private |
| @@ -1,5 +1,7 @@ | ||
| 1 | 1 | module Docs |
| 2 | 2 | class Requester < Typhoeus::Hydra |
| 3 | + include Instrumentable | |
| 4 | + | |
| 3 | 5 | attr_reader :request_options |
| 4 | 6 | |
| 5 | 7 | def self.run(urls, options = {}, &block) |
| @@ -20,7 +22,7 @@ module Docs · 14 unmodified lines | ||
| 20 | 22 | def initialize(options = {}) |
| 21 | 23 | @request_options = options.extract!(:request_options)[:request_options].try(:dup) || {} |
| 22 | 24 | options[:max_concurrency] ||= 20 |
| 23 | − options[:pipelining] = false | |
| 25 | + options[:pipelining] = 0 | |
| 24 | 26 | super |
| 25 | 27 | end |
| 26 | 28 | |
| @@ -52,9 +54,11 @@ module Docs · 25 unmodified lines | ||
| 52 | 54 | end |
| 53 | 55 | |
| 54 | 56 | def handle_response(response) |
| 55 | − on_response.each do |callback| | |
| 56 | − result = callback.call(response) | |
| 57 | − result.each { |url| request(url) } if result.is_a? Array | |
| 57 | + instrument 'handle_response.requester', url: response.url do | |
| 58 | + on_response.each do |callback| | |
| 59 | + result = callback.call(response) | |
| 60 | + result.each { |url| request(url) } if result.is_a?(Array) | |
| 61 | + end | |
| 58 | 62 | end |
| 59 | 63 | end |
| 60 | 64 | end |
| @@ -1,14 +1,13 @@ | ||
| 1 | 1 | module Docs |
| 2 | 2 | class FileScraper < Scraper |
| 3 | + SOURCE_DIRECTORY = File.expand_path '../../../../../docs', __FILE__ | |
| 4 | + | |
| 3 | 5 | Response = Struct.new :body, :url |
| 4 | 6 | |
| 5 | 7 | class << self |
| 6 | − attr_accessor :dir | |
| 7 | − | |
| 8 | 8 | def inherited(subclass) |
| 9 | 9 | super |
| 10 | 10 | subclass.base_url = base_url |
| 11 | − subclass.dir = dir | |
| 12 | 11 | end |
| 13 | 12 | end |
| 14 | 13 | |
| @@ -16,13 +15,25 @@ module Docs · 1 unmodified line | ||
| 16 | 15 | |
| 17 | 16 | html_filters.push 'clean_local_urls' |
| 18 | 17 | |
| 18 | + def source_directory | |
| 19 | + @source_directory ||= File.join(SOURCE_DIRECTORY, self.class.path) | |
| 20 | + end | |
| 21 | + | |
| 19 | 22 | private |
| 20 | 23 | |
| 24 | + def assert_source_directory_exists | |
| 25 | + unless Dir.exists?(source_directory) | |
| 26 | + raise SetupError, "The #{self.class.name} scraper requires the original documentation files to be stored in the \"#{source_directory}\" directory." | |
| 27 | + end | |
| 28 | + end | |
| 29 | + | |
| 21 | 30 | def request_one(url) |
| 22 | − Response.new read_file(file_path_for(url)), URL.parse(url) | |
| 31 | + assert_source_directory_exists | |
| 32 | + Response.new read_file(url_to_path(url)), URL.parse(url) | |
| 23 | 33 | end |
| 24 | 34 | |
| 25 | 35 | def request_all(urls) |
| 36 | + assert_source_directory_exists | |
| 26 | 37 | queue = [urls].flatten |
| 27 | 38 | until queue.empty? |
| 28 | 39 | result = yield request_one(queue.shift) |
| @@ -34,12 +45,12 @@ module Docs · 5 unmodified lines | ||
| 34 | 45 | response.body.present? |
| 35 | 46 | end |
| 36 | 47 | |
| 37 | − def file_path_for(url) | |
| 38 | − File.join self.class.dir, url.remove(base_url.to_s) | |
| 48 | + def url_to_path(url) | |
| 49 | + url.remove(base_url.to_s) | |
| 39 | 50 | end |
| 40 | 51 | |
| 41 | 52 | def read_file(path) |
| 42 | − File.read(path) | |
| 53 | + File.read(File.join(source_directory, path)) | |
| 43 | 54 | rescue |
| 44 | 55 | instrument 'warn.doc', msg: "Failed to open file: #{path}" |
| 45 | 56 | nil |
| @@ -72,7 +72,7 @@ module Docs · 71 unmodified lines | ||
| 72 | 72 | |
| 73 | 73 | if base == dest |
| 74 | 74 | '' |
| 75 | − elsif dest.start_with? File.join(base, '') | |
| 75 | + elsif dest.start_with?(::File.join(base, '')) | |
| 76 | 76 | url.path[(path.length)..-1] |
| 77 | 77 | end |
| 78 | 78 | end |
| @@ -20,8 +20,8 @@ module Docs · 19 unmodified lines | ||
| 20 | 20 | def additional_entries |
| 21 | 21 | return [] unless subpath.start_with?('helpers') && subpath != 'helpers/' |
| 22 | 22 | |
| 23 | − css('h2').each_with_object [] do |node, entries| | |
| 24 | − next if node['id'] == 'access-from-helpers' | |
| 23 | + css('h2, h3').each_with_object [] do |node, entries| | |
| 24 | + next if node['id'] == 'access-from-helpers' || node.content !~ /\s*[a-z_]/ | |
| 25 | 25 | entries << ["#{node.content} (#{name})", node['id']] |
| 26 | 26 | end |
| 27 | 27 | end |
| @@ -2,7 +2,7 @@ module Docs · 1 unmodified line | ||
| 2 | 2 | class Cordova |
| 3 | 3 | class CleanHtmlFilter < Filter |
| 4 | 4 | def call |
| 5 | − @doc = at_css('.page-content > div') | |
| 5 | + @doc = at_css('#page-toc-source') || at_css('.page-content > div') | |
| 6 | 6 | |
| 7 | 7 | at_css('h1').content = 'Apache Cordova' if root_page? |
| 8 | 8 | |
| @@ -31,6 +31,8 @@ module Docs · 30 unmodified lines | ||
| 31 | 31 | 'Keywords' |
| 32 | 32 | elsif subpath.start_with?('experimental') |
| 33 | 33 | 'Experimental libraries' |
| 34 | + elsif subpath.start_with?('language/') | |
| 35 | + 'Language' | |
| 34 | 36 | elsif type = at_css('.t-navbar > div:nth-child(4) > :first-child').try(:content) |
| 35 | 37 | type.strip! |
| 36 | 38 | type.remove! ' library' |
| @@ -6,13 +6,16 @@ module Docs · 5 unmodified lines | ||
| 6 | 6 | 'CSS_Background_and_Borders' => 'Backgrounds & Borders', |
| 7 | 7 | 'CSS_Columns' => 'Multi-column Layout', |
| 8 | 8 | 'CSS_Flexible_Box_Layout' => 'Flexible Box Layout', |
| 9 | + 'CSS_Fonts' => 'Fonts', | |
| 9 | 10 | 'CSS_Grid_Layout' => 'Grid Layout', |
| 10 | 11 | 'CSS_Images' => 'Images', |
| 11 | 12 | 'CSS_Lists_and_Counters' => 'Lists', |
| 12 | 13 | 'CSS_Transforms' => 'Transforms', |
| 13 | 14 | 'Media_Queries' => 'Media Queries', |
| 15 | + 'filter-function' => 'Filter Effects', | |
| 14 | 16 | 'transform-function' => 'Transforms', |
| 15 | 17 | '@media' => 'Media Queries', |
| 18 | + 'overscroll' => 'Overscroll', | |
| 16 | 19 | 'text-size-adjust' => 'Miscellaneous', |
| 17 | 20 | 'resolved_value' => 'Miscellaneous', |
| 18 | 21 | 'touch-action' => 'Miscellaneous', |
| @@ -42,7 +45,7 @@ module Docs · 23 unmodified lines | ||
| 42 | 45 | end |
| 43 | 46 | |
| 44 | 47 | def get_type |
| 45 | − if slug.include?('-webkit') || slug.include?('-moz') | |
| 48 | + if slug.include?('-webkit') || slug.include?('-moz') || slug.include?('-ms') | |
| 46 | 49 | 'Extensions' |
| 47 | 50 | elsif type = TYPE_BY_PATH[slug.split('/').first] |
| 48 | 51 | type |
| @@ -66,19 +69,22 @@ module Docs · 17 unmodified lines | ||
| 66 | 69 | 'Pseudo-Elements' |
| 67 | 70 | elsif name.start_with?(':') |
| 68 | 71 | 'Selectors' |
| 72 | + elsif name.start_with?('display-') | |
| 73 | + 'Display' | |
| 69 | 74 | else |
| 70 | 75 | 'Miscellaneous' |
| 71 | 76 | end |
| 72 | 77 | end |
| 73 | 78 | |
| 74 | 79 | STATUSES = { |
| 75 | − 'spec-Living' => 0, | |
| 76 | − 'spec-REC' => 1, | |
| 77 | − 'spec-CR' => 2, | |
| 78 | − 'spec-PR' => 3, | |
| 79 | − 'spec-LC' => 4, | |
| 80 | − 'spec-WD' => 5, | |
| 81 | − 'spec-ED' => 6 | |
| 80 | + 'spec-Living' => 0, | |
| 81 | + 'spec-REC' => 1, | |
| 82 | + 'spec-CR' => 2, | |
| 83 | + 'spec-PR' => 3, | |
| 84 | + 'spec-LC' => 4, | |
| 85 | + 'spec-WD' => 5, | |
| 86 | + 'spec-ED' => 6, | |
| 87 | + 'spec-Obsolete' => 7 | |
| 82 | 88 | } |
| 83 | 89 | |
| 84 | 90 | PRIORITY_STATUSES = %w(spec-REC spec-CR) |
| @@ -86,6 +92,7 @@ module Docs · 1 unmodified line | ||
| 86 | 92 | |
| 87 | 93 | def get_spec |
| 88 | 94 | return unless table = at_css('#Specifications + table') || css('.standard-table').last |
| 95 | + | |
| 89 | 96 | specs = table.css('tbody tr').to_a |
| 90 | 97 | # [link, span] |
| 91 | 98 | specs.map! { |node| [node.at_css('> td:nth-child(1) > a'), node.at_css('> td:nth-child(2) > span')] } |
| @@ -110,8 +117,8 @@ module Docs · 18 unmodified lines | ||
| 110 | 117 | 'shape' => [ |
| 111 | 118 | %w(rect() Syntax) ], |
| 112 | 119 | 'timing-function' => [ |
| 113 | − %w(cubic-bezier() The_cubic-bezier()_class_of_timing-functions), | |
| 114 | − %w(steps() The_steps()_class_of_timing-functions), | |
| 120 | + %w(cubic-bezier()), | |
| 121 | + %w(steps()), | |
| 115 | 122 | %w(linear linear), |
| 116 | 123 | %w(ease ease), |
| 117 | 124 | %w(ease-in ease-in), |
| @@ -30,7 +30,7 @@ module Docs · 29 unmodified lines | ||
| 30 | 30 | end |
| 31 | 31 | |
| 32 | 32 | # Remove <div> wrapping .overheadIndicator |
| 33 | − css('div > .overheadIndicator:first-child:last-child').each do |node| | |
| 33 | + css('div > .overheadIndicator:first-child:last-child', 'div > .blockIndicator:first-child:last-child').each do |node| | |
| 34 | 34 | node.parent.replace(node) |
| 35 | 35 | end |
| 36 | 36 | |
| @@ -6,6 +6,7 @@ module Docs · 5 unmodified lines | ||
| 6 | 6 | 'EXT_' => 'WebGL', |
| 7 | 7 | 'OES_' => 'WebGL', |
| 8 | 8 | 'WEBGL_' => 'WebGL', |
| 9 | + 'Sensor API' => 'Sensors', | |
| 9 | 10 | 'Ambient Light' => 'Ambient Light', |
| 10 | 11 | 'Audio' => 'Audio', |
| 11 | 12 | 'Battery Status' => 'Battery Status', |
| @@ -22,10 +23,12 @@ module Docs · 10 unmodified lines | ||
| 22 | 23 | 'Encrypted Media Extensions' => 'Encrypted Media', |
| 23 | 24 | 'Fetch' => 'Fetch', |
| 24 | 25 | 'File API' => 'File', |
| 26 | + 'Fullscreen' => 'Fullscreen', | |
| 25 | 27 | 'Geolocation' => 'Geolocation', |
| 26 | 28 | 'Geometry' => 'Geometry', |
| 27 | 29 | 'High Resolution Time' => 'Performance', |
| 28 | 30 | 'Intersection' => 'Intersection Observer', |
| 31 | + 'Keyboard' => 'Keyboard', | |
| 29 | 32 | 'Media Capabilities' => 'Media', |
| 30 | 33 | 'Media Capture' => 'Media', |
| 31 | 34 | 'Media Session' => 'Media', |
| @@ -35,6 +38,7 @@ module Docs · 3 unmodified lines | ||
| 35 | 38 | 'MIDI' => 'Audio', |
| 36 | 39 | 'Navigation Timing' => 'Performance', |
| 37 | 40 | 'Network Information' => 'Network Information', |
| 41 | + 'Orientation Sensor' => 'Sensors', | |
| 38 | 42 | 'Payment' => 'Payments', |
| 39 | 43 | 'Performance Timeline' => 'Performance', |
| 40 | 44 | 'Pointer Events' => 'Pointer Events', |
| @@ -53,11 +57,13 @@ module Docs · 12 unmodified lines | ||
| 53 | 57 | 'Web App Manifest' => 'Web App Manifest', |
| 54 | 58 | 'Budget' => 'Budget', |
| 55 | 59 | 'Web Authentication' => 'Authentication', |
| 60 | + 'Web Locks' => 'Locks', | |
| 56 | 61 | 'Web Workers' => 'Web Workers', |
| 57 | 62 | 'WebGL' => 'WebGL', |
| 58 | 63 | 'WebRTC' => 'WebRTC', |
| 59 | 64 | 'WebUSB' => 'WebUSB', |
| 60 | − 'WebVR' => 'WebVR' } | |
| 65 | + 'WebVR' => 'WebVR', | |
| 66 | + 'WebVTT' => 'WebVTT' } | |
| 61 | 67 | |
| 62 | 68 | TYPE_BY_NAME_STARTS_WITH = { |
| 63 | 69 | 'AbortController' => 'Fetch', |
| @@ -89,10 +95,12 @@ module Docs · 25 unmodified lines | ||
| 89 | 95 | 'Fetch' => 'Fetch', |
| 90 | 96 | 'File' => 'File', |
| 91 | 97 | 'GlobalEventHandlers' => 'GlobalEventHandlers', |
| 98 | + 'HMDVR' => 'WebVR', | |
| 92 | 99 | 'history' => 'History', |
| 93 | 100 | 'HTML Drag' => 'Drag & Drop', |
| 94 | 101 | 'HTML' => 'Elements', |
| 95 | 102 | 'IDB' => 'IndexedDB', |
| 103 | + 'Keyboard' => 'Keyboard', | |
| 96 | 104 | 'location' => 'Location', |
| 97 | 105 | 'navigator' => 'Navigator', |
| 98 | 106 | 'MediaKeySession' => 'Encrypted Media', |
| @@ -122,6 +130,7 @@ module Docs · 23 unmodified lines | ||
| 122 | 130 | 'StyleSheet' => 'CSS', |
| 123 | 131 | 'Stylesheet' => 'CSS', |
| 124 | 132 | 'SVG' => 'SVG', |
| 133 | + 'TextTrack' => 'WebVTT', | |
| 125 | 134 | 'TimeRanges' => 'Media', |
| 126 | 135 | 'timing' => 'Performance', |
| 127 | 136 | 'Timing' => 'Performance', |
| @@ -160,6 +169,7 @@ module Docs · 32 unmodified lines | ||
| 160 | 169 | 'timing' => 'Performance', |
| 161 | 170 | 'Timing' => 'Performance', |
| 162 | 171 | 'udio' => 'Audio', |
| 172 | + 'VRDevice' => 'WebVR', | |
| 163 | 173 | 'WebGL' => 'WebGL', |
| 164 | 174 | 'WEBGL' => 'WebGL', |
| 165 | 175 | 'WebRTC' => 'WebRTC', |
| @@ -239,7 +249,7 @@ module Docs · 73 unmodified lines | ||
| 239 | 249 | |
| 240 | 250 | def include_default_entry? |
| 241 | 251 | return true if type == 'Console' |
| 242 | − return true unless node = doc.at_css('.overheadIndicator') | |
| 252 | + return true unless node = doc.at_css('.overheadIndicator, .blockIndicator') | |
| 243 | 253 | node = node.parent while node.parent != doc |
| 244 | 254 | return true if node.previous_element.try(:name).in?(%w(h2 h3)) |
| 245 | 255 | content = node.content |
| @@ -65,6 +65,10 @@ module Docs · 64 unmodified lines | ||
| 65 | 65 | end |
| 66 | 66 | end |
| 67 | 67 | |
| 68 | + css('pre code').each do |node| | |
| 69 | + node.before(node.children).remove | |
| 70 | + end | |
| 71 | + | |
| 68 | 72 | doc |
| 69 | 73 | end |
| 70 | 74 | end |
| @@ -52,7 +52,7 @@ module Docs · 51 unmodified lines | ||
| 52 | 52 | return [] if subpath.start_with?('users_guide') |
| 53 | 53 | return [] if IGNORE_ENTRIES_PATHS.include?(subpath.split('/').last) |
| 54 | 54 | |
| 55 | − css('#synopsis > ul > li').each_with_object [] do |node, entries| | |
| 55 | + css('#synopsis > details > ul > li').each_with_object [] do |node, entries| | |
| 56 | 56 | link = node.at_css('a') |
| 57 | 57 | name = node.content.strip |
| 58 | 58 | name.remove! %r{\A(?:module|data|newtype|class|type family m|type)\s+} |
| @@ -75,7 +75,7 @@ module Docs · 16 unmodified lines | ||
| 75 | 75 | end |
| 76 | 76 | |
| 77 | 77 | def include_default_entry? |
| 78 | − subpath.start_with?('users_guide') || at_css('#synopsis > ul > li') | |
| 78 | + subpath.start_with?('users_guide') || at_css('#synopsis > details > ul > li') | |
| 79 | 79 | end |
| 80 | 80 | end |
| 81 | 81 | end |
| @@ -28,7 +28,7 @@ module Docs · 27 unmodified lines | ||
| 28 | 28 | |
| 29 | 29 | def include_default_entry? |
| 30 | 30 | return false if %w(Element/Heading_Elements).include?(slug) |
| 31 | − (node = doc.at_css '.overheadIndicator').nil? || node.content.exclude?('not on a standards track') | |
| 31 | + (node = doc.at_css '.overheadIndicator, .blockIndicator').nil? || node.content.exclude?('not on a standards track') | |
| 32 | 32 | end |
| 33 | 33 | |
| 34 | 34 | def additional_entries |
| @@ -11,12 +11,12 @@ module Docs · 10 unmodified lines | ||
| 11 | 11 | |
| 12 | 12 | def other |
| 13 | 13 | # Remove "style" attribute |
| 14 | − css('.inheritsbox', '.overheadIndicator').each do |node| | |
| 14 | + css('.inheritsbox', '.overheadIndicator', '.blockIndicator').each do |node| | |
| 15 | 15 | node.remove_attribute 'style' |
| 16 | 16 | end |
| 17 | 17 | |
| 18 | 18 | # Remove <div> wrapping .overheadIndicator |
| 19 | − css('div > .overheadIndicator:first-child:last-child').each do |node| | |
| 19 | + css('div > .overheadIndicator:first-child:last-child', 'div > .blockIndicator:first-child:last-child').each do |node| | |
| 20 | 20 | node.parent.replace(node) |
| 21 | 21 | end |
| 22 | 22 | end |
| @@ -88,7 +88,7 @@ module Docs · 87 unmodified lines | ||
| 88 | 88 | end |
| 89 | 89 | |
| 90 | 90 | def include_default_entry? |
| 91 | − node = doc.at_css '.overheadIndicator, .warning' | |
| 91 | + node = doc.at_css '.blockIndicator, .warning' | |
| 92 | 92 | |
| 93 | 93 | # Can't use :first-child because #doc is a DocumentFragment |
| 94 | 94 | return true unless node && node.parent == doc && !node.previous_element |
| @@ -14,6 +14,8 @@ module Docs · 13 unmodified lines | ||
| 14 | 14 | '#Quick_Links', |
| 15 | 15 | 'hr'] |
| 16 | 16 | |
| 17 | + BROWSER_UNNECESSARY_CLASS_REGEX = /\s*bc-browser[\w_-]+/ | |
| 18 | + | |
| 17 | 19 | def call |
| 18 | 20 | css(*REMOVE_NODES).remove |
| 19 | 21 | |
| @@ -61,6 +63,94 @@ module Docs · 41 unmodified lines | ||
| 61 | 63 | node.previous_element << node |
| 62 | 64 | end |
| 63 | 65 | |
| 66 | + # New compatibility tables | |
| 67 | + | |
| 68 | + css('.bc-data #Legend + dl', '.bc-data #Legend', '.bc-data #Legend_2 + dl', '.bc-data #Legend_2', '.bc-browser-name').remove | |
| 69 | + | |
| 70 | + css('abbr.only-icon[title="Full support"]', | |
| 71 | + 'abbr.only-icon[title="Partial support"]', | |
| 72 | + 'abbr.only-icon[title="No support"]', | |
| 73 | + 'abbr.only-icon[title="See implementation notes"]').remove | |
| 74 | + | |
| 75 | + css('.bc-data .ic-altname', '.bc-data .ic-deprecated', '.bc-data .ic-non-standard', '.bc-data .ic-experimental').each do |node| | |
| 76 | + node.parent.remove | |
| 77 | + end | |
| 78 | + | |
| 79 | + css('abbr.only-icon').each do |node| | |
| 80 | + node.replace(node.content) | |
| 81 | + end | |
| 82 | + | |
| 83 | + css('.bc-table .bc-platforms td', '.bc-table .bc-browsers td').each do |node| | |
| 84 | + node.name = 'th' | |
| 85 | + end | |
| 86 | + | |
| 87 | + css('.bc-data').each do |node| | |
| 88 | + link = node.at_css('.bc-github-link') | |
| 89 | + prev = node.previous_element | |
| 90 | + prev = prev.previous_element until prev.name == 'h2' | |
| 91 | + prev.add_child(link) | |
| 92 | + | |
| 93 | + node.before(node.children).remove | |
| 94 | + end | |
| 95 | + | |
| 96 | + css('.bc-table').each do |node| | |
| 97 | + desktop_table = node | |
| 98 | + | |
| 99 | + mobile_table = node.dup | |
| 100 | + desktop_table.after(mobile_table) | |
| 101 | + | |
| 102 | + if desktop_table.at_css('.bc-platform-server') | |
| 103 | + server_table = node.dup | |
| 104 | + mobile_table.after(server_table) | |
| 105 | + end | |
| 106 | + | |
| 107 | + desktop_columns = desktop_table.at_css('th.bc-platform-desktop')['colspan'].to_i | |
| 108 | + mobile_columns = desktop_table.at_css('th.bc-platform-mobile')['colspan'].to_i | |
| 109 | + | |
| 110 | + desktop_table.css('.bc-platform-mobile').remove | |
| 111 | + desktop_table.css('.bc-platform-server').remove | |
| 112 | + desktop_table.css('.bc-browsers th').to_a[(desktop_columns + 1)..-1].each(&:remove) | |
| 113 | + desktop_table.css('tr:not(.bc-platforms):not(.bc-browsers)').each do |line| | |
| 114 | + line.css('td').to_a[(desktop_columns)..-1].each(&:remove) | |
| 115 | + end | |
| 116 | + | |
| 117 | + mobile_table.css('.bc-platform-desktop').remove | |
| 118 | + mobile_table.css('.bc-platform-server').remove | |
| 119 | + mobile_table.css('.bc-browsers th').to_a[1..(desktop_columns)].each(&:remove) | |
| 120 | + mobile_table.css('.bc-browsers th').to_a[(mobile_columns + 1)..-1].each(&:remove) | |
| 121 | + mobile_table.css('tr:not(.bc-platforms):not(.bc-browsers)').each do |line| | |
| 122 | + line.css('td').to_a[0..(desktop_columns - 1)].each(&:remove) | |
| 123 | + line.css('td').to_a[(mobile_columns)..-1].each(&:remove) | |
| 124 | + end | |
| 125 | + | |
| 126 | + if server_table | |
| 127 | + server_table.css('.bc-platform-desktop').remove | |
| 128 | + server_table.css('.bc-platform-mobile').remove | |
| 129 | + server_table.css('.bc-browsers th').to_a[1..(desktop_columns + mobile_columns)].each(&:remove) | |
| 130 | + server_table.css('tr:not(.bc-platforms):not(.bc-browsers)').each do |line| | |
| 131 | + line.css('td').to_a[0..(desktop_columns + mobile_columns - 1)].each(&:remove) | |
| 132 | + end | |
| 133 | + end | |
| 134 | + end | |
| 135 | + | |
| 136 | + # Reduce page size to make the offline bundle smaller. | |
| 137 | + css('.bc-supports-unknown').remove_attr('class') | |
| 138 | + css('td[class*="bc-platform"], th[class*="bc-platform"]').remove_attr('class') | |
| 139 | + css('td[class*="bc-browser"], th[class*="bc-browser"]').each do |node| | |
| 140 | + class_name = node['class'] | |
| 141 | + class_name.remove!(BROWSER_UNNECESSARY_CLASS_REGEX) | |
| 142 | + | |
| 143 | + if class_name.present? | |
| 144 | + node['class'] = class_name | |
| 145 | + else | |
| 146 | + node.remove_attribute('class') | |
| 147 | + end | |
| 148 | + end | |
| 149 | + | |
| 150 | + css('abbr[title*="Compatibility unknown"]').each do |node| | |
| 151 | + node.before(node.children).remove | |
| 152 | + end | |
| 153 | + | |
| 64 | 154 | doc |
| 65 | 155 | end |
| 66 | 156 | end |
| @@ -16,7 +16,7 @@ module Docs · 15 unmodified lines | ||
| 16 | 16 | |
| 17 | 17 | css('pre').each do |node| |
| 18 | 18 | if lang = node.at_css('code')['class'] |
| 19 | − node['data-language'] = lang.remove('lang-') | |
| 19 | + node['data-language'] = lang.remove(%r{lang(uage)?-}) | |
| 20 | 20 | end |
| 21 | 21 | |
| 22 | 22 | node.content = node.content |
| @@ -26,6 +26,7 @@ module Docs · 25 unmodified lines | ||
| 26 | 26 | |
| 27 | 27 | def get_type |
| 28 | 28 | type = at_css('h1').content.strip |
| 29 | + type.remove! %r{\[.*\]} | |
| 29 | 30 | REPLACE_TYPES[type] || "#{type.first.upcase}#{type[1..-1]}" |
| 30 | 31 | end |
| 31 | 32 | |
| @@ -40,6 +41,7 @@ module Docs · 8 unmodified lines | ||
| 40 | 41 | |
| 41 | 42 | klass = nil if node.name == 'h2' |
| 42 | 43 | name = node.content.strip |
| 44 | + name.remove! %r{\s*\[src\]} | |
| 43 | 45 | |
| 44 | 46 | # Skip constructors |
| 45 | 47 | if name.start_with? 'new ' |
| @@ -37,8 +37,10 @@ module Docs · 36 unmodified lines | ||
| 37 | 37 | end |
| 38 | 38 | |
| 39 | 39 | # Add class to differentiate Ruby code from C code |
| 40 | − css('.method-source-code > pre').each do |node| | |
| 41 | − node['class'] = node.at_css('.ruby-keyword') ? 'ruby' : 'c' | |
| 40 | + css('.method-source-code').each do |node| | |
| 41 | + node.parent.prepend_child(node) | |
| 42 | + pre = node.at_css('pre') | |
| 43 | + pre['class'] = pre.at_css('.ruby-keyword') ? 'ruby' : 'c' | |
| 42 | 44 | end |
| 43 | 45 | |
| 44 | 46 | # Remove code highlighting |
| @@ -6,9 +6,11 @@ module Docs · 5 unmodified lines | ||
| 6 | 6 | end |
| 7 | 7 | |
| 8 | 8 | def get_type |
| 9 | − link = at_css("nav a[href='#{result[:path].split('/').last}']") | |
| 9 | + link = css("nav a[href='#{result[:path].split('/').last}']").last | |
| 10 | 10 | return 'Miscellaneous' unless link |
| 11 | − link.ancestors('ul').last.previous_element.content | |
| 11 | + type = link.ancestors('ul').last.previous_element.content | |
| 12 | + type.remove! %r{\s*\(.*\)} | |
| 13 | + type | |
| 12 | 14 | end |
| 13 | 15 | |
| 14 | 16 | def additional_entries |
| @@ -25,6 +27,8 @@ module Docs · 10 unmodified lines | ||
| 25 | 27 | 'Reference: Component' |
| 26 | 28 | elsif slug == 'react-api' |
| 27 | 29 | 'Reference: React' |
| 30 | + elsif slug == 'hooks-reference' | |
| 31 | + 'Hooks' | |
| 28 | 32 | else |
| 29 | 33 | 'Reference' |
| 30 | 34 | end |
| @@ -21,7 +21,7 @@ module Docs · 20 unmodified lines | ||
| 21 | 21 | when 'PFADD' then 'HyperLogLog' |
| 22 | 22 | when 'CLUSTER ADDSLOTS' then 'Cluster' |
| 23 | 23 | when 'GEOADD' then 'Geo' |
| 24 | − when 'XADD' then 'Stream' | |
| 24 | + when 'XACK' then 'Stream' | |
| 25 | 25 | else 'Miscellaneous' |
| 26 | 26 | end |
| 27 | 27 | end |
| @@ -1,3 +1,5 @@ | ||
| 1 | +# frozen_string_literal: true | |
| 2 | + | |
| 1 | 3 | module Docs |
| 2 | 4 | class Rust |
| 3 | 5 | class CleanHtmlFilter < Filter |
| @@ -74,10 +76,10 @@ module Docs · 70 unmodified lines | ||
| 74 | 76 | node.remove |
| 75 | 77 | end |
| 76 | 78 | |
| 77 | − css('h2 .important-traits', 'h3 .important-traits', 'h4 .important-traits').each do |node| | |
| 79 | + css('.important-traits').to_a.each_with_index do |node, index| | |
| 78 | 80 | content = node.at_css('.content.hidden .content') |
| 79 | 81 | node.at_css('.content.hidden').replace(content) if content |
| 80 | − node.parent.after(node) | |
| 82 | + node.parent.after(node) if node.parent.name.in?(%(h2 h3 h4)) | |
| 81 | 83 | end |
| 82 | 84 | |
| 83 | 85 | css('code.content').each do |node| |
| @@ -43,13 +43,12 @@ module Docs · 42 unmodified lines | ||
| 43 | 43 | end |
| 44 | 44 | else |
| 45 | 45 | css('.method') |
| 46 | − .select {|node| !node.at_css('.fnname').nil?} | |
| 47 | − .map {|node| | |
| 48 | − name = node.at_css('.fnname').content | |
| 46 | + .each_with_object({}) { |node, entries| | |
| 47 | + name = node.at_css('.fnname').try(:content) | |
| 48 | + next unless name | |
| 49 | 49 | name.prepend "#{self.name}::" |
| 50 | − [name, node['id']] | |
| 51 | − } | |
| 52 | − .uniq {|item| item[0]} | |
| 50 | + entries[name] ||= [name, node['id']] | |
| 51 | + }.values | |
| 53 | 52 | end |
| 54 | 53 | end |
| 55 | 54 | end |
| @@ -34,7 +34,8 @@ module Docs · 33 unmodified lines | ||
| 34 | 34 | 'rtree' => 'R*Tree Module', |
| 35 | 35 | 'rbu' => 'RBU Extension', |
| 36 | 36 | 'limits' => 'Limits', |
| 37 | − 'howtocorrupt' => 'How To Corrupt' | |
| 37 | + 'howtocorrupt' => 'How To Corrupt', | |
| 38 | + 'geopoly' => 'Geopoly' | |
| 38 | 39 | } |
| 39 | 40 | |
| 40 | 41 | def get_type |
| @@ -15,8 +15,28 @@ module Docs · 14 unmodified lines | ||
| 15 | 15 | Licensed under the GNU General Public License version 3. |
| 16 | 16 | HTML |
| 17 | 17 | |
| 18 | + version '2.7' do | |
| 19 | + self.release = '2.7.1' | |
| 20 | + self.base_url = 'https://docs.ansible.com/ansible/2.7/' | |
| 21 | + | |
| 22 | + options[:skip] = %w( | |
| 23 | + installation_guide/index.html | |
| 24 | + reference_appendices/glossary.html | |
| 25 | + reference_appendices/faq.html | |
| 26 | + reference_appendices/tower.html | |
| 27 | + user_guide/quickstart.html | |
| 28 | + modules/modules_by_category.html | |
| 29 | + modules/list_of_all_modules.html) | |
| 30 | + | |
| 31 | + options[:skip_patterns] = [ | |
| 32 | + /\Acommunity.*/i, | |
| 33 | + /\Adev_guide.*/i, | |
| 34 | + /\Aroadmap.*/i, | |
| 35 | + ] | |
| 36 | + end | |
| 37 | + | |
| 18 | 38 | version '2.6' do |
| 19 | − self.release = '2.6.1' | |
| 39 | + self.release = '2.6.7' | |
| 20 | 40 | self.base_url = 'https://docs.ansible.com/ansible/2.6/' |
| 21 | 41 | |
| 22 | 42 | options[:skip] = %w( |
| @@ -3,7 +3,7 @@ module Docs · 2 unmodified lines | ||
| 3 | 3 | self.name = 'Apache HTTP Server' |
| 4 | 4 | self.slug = 'apache_http_server' |
| 5 | 5 | self.type = 'apache' |
| 6 | − self.release = '2.4.34' | |
| 6 | + self.release = '2.4.37' | |
| 7 | 7 | self.base_url = 'https://httpd.apache.org/docs/2.4/en/' |
| 8 | 8 | self.links = { |
| 9 | 9 | home: 'https://httpd.apache.org/' |
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | module Docs |
| 2 | 2 | class Async < UrlScraper |
| 3 | 3 | self.type = 'async' |
| 4 | − self.release = '2.6.0' | |
| 4 | + self.release = '2.6.1' | |
| 5 | 5 | self.base_url = 'https://caolan.github.io/async/' |
| 6 | 6 | self.root_path = 'docs.html' |
| 7 | 7 | self.links = { |
| @@ -14,7 +14,7 @@ module Docs · 6 unmodified lines | ||
| 14 | 14 | options[:skip_links] = true |
| 15 | 15 | |
| 16 | 16 | options[:attribution] = <<-HTML |
| 17 | − © 2010–2017 Caolan McMahon<br> | |
| 17 | + © 2010–2018 Caolan McMahon<br> | |
| 18 | 18 | Licensed under the MIT License. |
| 19 | 19 | HTML |
| 20 | 20 | end |
| @@ -1,7 +1,6 @@ | ||
| 1 | 1 | module Docs |
| 2 | 2 | class C < FileScraper |
| 3 | 3 | self.type = 'c' |
| 4 | − self.dir = '/Users/Thibaut/DevDocs/Docs/c' | |
| 5 | 4 | self.base_url = 'http://en.cppreference.com/w/c/' |
| 6 | 5 | self.root_path = 'header.html' |
| 7 | 6 | |
| @@ -2,7 +2,7 @@ module Docs · 1 unmodified line | ||
| 2 | 2 | class Codeception < UrlScraper |
| 3 | 3 | self.name = 'Codeception' |
| 4 | 4 | self.type = 'codeception' |
| 5 | − self.release = '2.4.0' | |
| 5 | + self.release = '2.5.1' | |
| 6 | 6 | self.base_url = 'https://codeception.com/docs/' |
| 7 | 7 | self.root_path = 'index.html' |
| 8 | 8 | self.links = { |
| @@ -3,7 +3,7 @@ module Docs · 2 unmodified lines | ||
| 3 | 3 | self.name = 'CodeceptJS' |
| 4 | 4 | self.type = 'simple' |
| 5 | 5 | self.root_path = 'index.html' |
| 6 | − self.release = '1.3.1' | |
| 6 | + self.release = '1.4.4' | |
| 7 | 7 | self.base_url = 'https://codecept.io/' |
| 8 | 8 | self.links = { |
| 9 | 9 | home: 'https://codecept.io/', |
| @@ -24,10 +24,15 @@ module Docs · 23 unmodified lines | ||
| 24 | 24 | end |
| 25 | 25 | |
| 26 | 26 | options[:attribution] = <<-HTML |
| 27 | − © 2012–2017 The Apache Software Foundation<br> | |
| 27 | + © 2012–2018 The Apache Software Foundation<br> | |
| 28 | 28 | Licensed under the Apache License 2.0. |
| 29 | 29 | HTML |
| 30 | 30 | |
| 31 | + version '8' do | |
| 32 | + self.release = '8.1.2' | |
| 33 | + self.base_url = 'https://cordova.apache.org/docs/en/8.x/' | |
| 34 | + end | |
| 35 | + | |
| 31 | 36 | version '7' do |
| 32 | 37 | self.release = '7.1.0' |
| 33 | 38 | self.base_url = 'https://cordova.apache.org/docs/en/7.x/' |
| @@ -3,7 +3,6 @@ module Docs · 2 unmodified lines | ||
| 3 | 3 | self.name = 'C++' |
| 4 | 4 | self.slug = 'cpp' |
| 5 | 5 | self.type = 'c' |
| 6 | − self.dir = '/Users/Thibaut/DevDocs/Docs/cpp' | |
| 7 | 6 | self.base_url = 'http://en.cppreference.com/w/cpp/' |
| 8 | 7 | self.root_path = 'header.html' |
| 9 | 8 | |
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | module Docs |
| 2 | 2 | class Crystal < UrlScraper |
| 3 | 3 | self.type = 'crystal' |
| 4 | − self.release = '0.26.0' | |
| 4 | + self.release = '0.27.0' | |
| 5 | 5 | self.base_url = 'https://crystal-lang.org/' |
| 6 | 6 | self.root_path = "api/#{release}/index.html" |
| 7 | 7 | self.initial_paths = %w(docs/index.html) |
| @@ -2,7 +2,7 @@ module Docs · 1 unmodified line | ||
| 2 | 2 | class D < UrlScraper |
| 3 | 3 | include MultipleBaseUrls |
| 4 | 4 | |
| 5 | − self.release = '2.081.0' | |
| 5 | + self.release = '2.083.0' | |
| 6 | 6 | self.type = 'd' |
| 7 | 7 | self.base_urls = ['https://dlang.org/phobos/', 'https://dlang.org/spec/'] |
| 8 | 8 | self.root_path = 'index.html' |
| @@ -17,7 +17,7 @@ module Docs · 16 unmodified lines | ||
| 17 | 17 | HTML |
| 18 | 18 | |
| 19 | 19 | version '5' do |
| 20 | − self.release = '5.4.0' | |
| 20 | + self.release = '5.7.0' | |
| 21 | 21 | self.base_url = 'https://github.com/d3/' |
| 22 | 22 | self.root_path = 'd3/blob/master/API.md' |
| 23 | 23 | |
| @@ -24,13 +24,11 @@ module Docs · 23 unmodified lines | ||
| 24 | 24 | |
| 25 | 25 | version '2' do |
| 26 | 26 | self.release = '2.0.0' |
| 27 | − self.dir = '/Users/Thibaut/DevDocs/Docs/Dart2' | |
| 28 | 27 | self.base_url = "https://api.dartlang.org/stable/#{release}/" |
| 29 | 28 | end |
| 30 | 29 | |
| 31 | 30 | version '1' do |
| 32 | 31 | self.release = '1.24.3' |
| 33 | − self.dir = '/Users/Thibaut/DevDocs/Docs/Dart1' | |
| 34 | 32 | self.base_url = "https://api.dartlang.org/stable/#{release}/" |
| 35 | 33 | end |
| 36 | 34 | end |
| @@ -36,37 +36,31 @@ module Docs · 35 unmodified lines | ||
| 36 | 36 | |
| 37 | 37 | version '2.1' do |
| 38 | 38 | self.release = '2.1.0' |
| 39 | − self.dir = '/Users/Thibaut/DevDocs/Docs/Django21' | |
| 40 | 39 | self.base_url = 'https://docs.djangoproject.com/en/2.1/' |
| 41 | 40 | end |
| 42 | 41 | |
| 43 | 42 | version '2.0' do |
| 44 | 43 | self.release = '2.0.7' |
| 45 | − self.dir = '/Users/Thibaut/DevDocs/Docs/Django20' | |
| 46 | 44 | self.base_url = 'https://docs.djangoproject.com/en/2.0/' |
| 47 | 45 | end |
| 48 | 46 | |
| 49 | 47 | version '1.11' do |
| 50 | 48 | self.release = '1.11.9' |
| 51 | − self.dir = '/Users/Thibaut/DevDocs/Docs/Django111' | |
| 52 | 49 | self.base_url = 'https://docs.djangoproject.com/en/1.11/' |
| 53 | 50 | end |
| 54 | 51 | |
| 55 | 52 | version '1.10' do |
| 56 | 53 | self.release = '1.10.8' |
| 57 | − self.dir = '/Users/Thibaut/DevDocs/Docs/Django110' | |
| 58 | 54 | self.base_url = 'https://docs.djangoproject.com/en/1.10/' |
| 59 | 55 | end |
| 60 | 56 | |
| 61 | 57 | version '1.9' do |
| 62 | 58 | self.release = '1.9.13' |
| 63 | − self.dir = '/Users/Thibaut/DevDocs/Docs/Django19' | |
| 64 | 59 | self.base_url = 'https://docs.djangoproject.com/en/1.9/' |
| 65 | 60 | end |
| 66 | 61 | |
| 67 | 62 | version '1.8' do |
| 68 | 63 | self.release = '1.8.18' |
| 69 | − self.dir = '/Users/Thibaut/DevDocs/Docs/Django18' | |
| 70 | 64 | self.base_url = 'https://docs.djangoproject.com/en/1.8/' |
| 71 | 65 | end |
| 72 | 66 | end |
| @@ -42,22 +42,18 @@ module Docs · 41 unmodified lines | ||
| 42 | 42 | |
| 43 | 43 | version '21' do |
| 44 | 44 | self.release = '21.0' |
| 45 | − self.dir = '/Users/Thibaut/DevDocs/Docs/Erlang21' | |
| 46 | 45 | end |
| 47 | 46 | |
| 48 | 47 | version '20' do |
| 49 | 48 | self.release = '20.3' |
| 50 | − self.dir = '/Users/Thibaut/DevDocs/Docs/Erlang20' | |
| 51 | 49 | end |
| 52 | 50 | |
| 53 | 51 | version '19' do |
| 54 | 52 | self.release = '19.3' |
| 55 | − self.dir = '/Users/Thibaut/DevDocs/Docs/Erlang19' | |
| 56 | 53 | end |
| 57 | 54 | |
| 58 | 55 | version '18' do |
| 59 | 56 | self.release = '18.3' |
| 60 | − self.dir = '/Users/Thibaut/DevDocs/Docs/Erlang18' | |
| 61 | 57 | end |
| 62 | 58 | end |
| 63 | 59 | end |
| @@ -2,7 +2,7 @@ module Docs · 1 unmodified line | ||
| 2 | 2 | class Eslint < UrlScraper |
| 3 | 3 | self.name = 'ESLint' |
| 4 | 4 | self.type = 'simple' |
| 5 | − self.release = '4.19.0' | |
| 5 | + self.release = '5.8.0' | |
| 6 | 6 | self.base_url = 'https://eslint.org/docs/' |
| 7 | 7 | self.root_path = 'user-guide/getting-started' |
| 8 | 8 | self.links = { |
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | module Docs |
| 2 | 2 | class Flow < UrlScraper |
| 3 | 3 | self.type = 'simple' |
| 4 | − self.release = '0.79.1' | |
| 4 | + self.release = '0.85.0' | |
| 5 | 5 | self.base_url = 'https://flow.org/en/docs/' |
| 6 | 6 | self.links = { |
| 7 | 7 | home: 'https://flow.org/', |
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | module Docs |
| 2 | 2 | class Git < UrlScraper |
| 3 | 3 | self.type = 'git' |
| 4 | − self.release = '2.17.0' | |
| 4 | + self.release = '2.19.1' | |
| 5 | 5 | self.base_url = 'https://git-scm.com/docs' |
| 6 | 6 | self.initial_paths = %w(/git.html) |
| 7 | 7 | self.links = { |
| @@ -48,13 +48,11 @@ module Docs · 47 unmodified lines | ||
| 48 | 48 | |
| 49 | 49 | version '7' do |
| 50 | 50 | self.release = '7.3.0' |
| 51 | − self.dir = '/Users/Thibaut/DevDocs/Docs/gcc7' | |
| 52 | 51 | self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/gcc/" |
| 53 | 52 | end |
| 54 | 53 | |
| 55 | 54 | version '7 CPP' do |
| 56 | 55 | self.release = '7.3.0' |
| 57 | − self.dir = '/Users/Thibaut/DevDocs/Docs/gcpp7' | |
| 58 | 56 | self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/cpp/" |
| 59 | 57 | |
| 60 | 58 | options[:replace_paths] = CPP_PATHS |
| @@ -62,7 +60,6 @@ module Docs · 1 unmodified line | ||
| 62 | 60 | |
| 63 | 61 | version '6' do |
| 64 | 62 | self.release = '6.4.0' |
| 65 | − self.dir = '/Users/Thibaut/DevDocs/Docs/gcc6' | |
| 66 | 63 | self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/gcc/" |
| 67 | 64 | |
| 68 | 65 | options[:root_title] = 'Using the GNU Compiler Collection (GCC)' |
| @@ -70,7 +67,6 @@ module Docs · 1 unmodified line | ||
| 70 | 67 | |
| 71 | 68 | version '6 CPP' do |
| 72 | 69 | self.release = '6.4.0' |
| 73 | − self.dir = '/Users/Thibaut/DevDocs/Docs/gcpp6' | |
| 74 | 70 | self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/cpp/" |
| 75 | 71 | |
| 76 | 72 | options[:replace_paths] = CPP_PATHS |
| @@ -78,7 +74,6 @@ module Docs · 1 unmodified line | ||
| 78 | 74 | |
| 79 | 75 | version '5' do |
| 80 | 76 | self.release = '5.4.0' |
| 81 | − self.dir = '/Users/Thibaut/DevDocs/Docs/gcc5' | |
| 82 | 77 | self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/gcc/" |
| 83 | 78 | |
| 84 | 79 | options[:root_title] = 'Using the GNU Compiler Collection (GCC)' |
| @@ -86,7 +81,6 @@ module Docs · 1 unmodified line | ||
| 86 | 81 | |
| 87 | 82 | version '5 CPP' do |
| 88 | 83 | self.release = '5.4.0' |
| 89 | − self.dir = '/Users/Thibaut/DevDocs/Docs/gcpp5' | |
| 90 | 84 | self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/cpp/" |
| 91 | 85 | |
| 92 | 86 | options[:replace_paths] = CPP_PATHS |
| @@ -94,7 +88,6 @@ module Docs · 1 unmodified line | ||
| 94 | 88 | |
| 95 | 89 | version '4' do |
| 96 | 90 | self.release = '4.9.3' |
| 97 | − self.dir = '/Users/Thibaut/DevDocs/Docs/gcc4' | |
| 98 | 91 | self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/gcc/" |
| 99 | 92 | |
| 100 | 93 | options[:root_title] = 'Using the GNU Compiler Collection (GCC)' |
| @@ -102,7 +95,6 @@ module Docs · 1 unmodified line | ||
| 102 | 95 | |
| 103 | 96 | version '4 CPP' do |
| 104 | 97 | self.release = '4.9.3' |
| 105 | − self.dir = '/Users/Thibaut/DevDocs/Docs/gcpp4' | |
| 106 | 98 | self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/cpp/" |
| 107 | 99 | |
| 108 | 100 | options[:replace_paths] = CPP_PATHS |
| @@ -8,25 +8,21 @@ module Docs · 7 unmodified lines | ||
| 8 | 8 | |
| 9 | 9 | version '7' do |
| 10 | 10 | self.release = '7.3.0' |
| 11 | − self.dir = '/Users/Thibaut/DevDocs/Docs/gfortran7' | |
| 12 | 11 | self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/gfortran/" |
| 13 | 12 | end |
| 14 | 13 | |
| 15 | 14 | version '6' do |
| 16 | 15 | self.release = '6.4.0' |
| 17 | − self.dir = '/Users/Thibaut/DevDocs/Docs/gfortran6' | |
| 18 | 16 | self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/gfortran/" |
| 19 | 17 | end |
| 20 | 18 | |
| 21 | 19 | version '5' do |
| 22 | 20 | self.release = '5.4.0' |
| 23 | − self.dir = '/Users/Thibaut/DevDocs/Docs/gfortran5' | |
| 24 | 21 | self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/gfortran/" |
| 25 | 22 | end |
| 26 | 23 | |
| 27 | 24 | version '4' do |
| 28 | 25 | self.release = '4.9.3' |
| 29 | − self.dir = '/Users/Thibaut/DevDocs/Docs/gfortran4' | |
| 30 | 26 | self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/gfortran/" |
| 31 | 27 | end |
| 32 | 28 | end |
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | module Docs |
| 2 | 2 | class Go < UrlScraper |
| 3 | 3 | self.type = 'go' |
| 4 | − self.release = '1.10.1' | |
| 4 | + self.release = '1.11.2' | |
| 5 | 5 | self.base_url = 'https://golang.org/pkg/' |
| 6 | 6 | self.links = { |
| 7 | 7 | home: 'https://golang.org/', |
| @@ -29,7 +29,7 @@ module Docs · 28 unmodified lines | ||
| 29 | 29 | end |
| 30 | 30 | |
| 31 | 31 | version '3.0' do |
| 32 | − self.release = '3.0' | |
| 32 | + self.release = '3.0.6' | |
| 33 | 33 | self.base_url = "http://docs.godotengine.org/en/#{self.version}/" |
| 34 | 34 | end |
| 35 | 35 | |
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | module Docs |
| 2 | 2 | class Graphite < UrlScraper |
| 3 | 3 | self.type = 'graphite' |
| 4 | − self.release = '1.1.3' | |
| 4 | + self.release = '1.1.4' | |
| 5 | 5 | self.base_url = 'https://graphite.readthedocs.io/en/latest/' |
| 6 | 6 | self.links = { |
| 7 | 7 | code: 'https://github.com/graphite-project/graphite-web' |
| @@ -57,7 +57,7 @@ module Docs · 56 unmodified lines | ||
| 57 | 57 | end |
| 58 | 58 | |
| 59 | 59 | version '8' do |
| 60 | − self.release = '8.2.1' | |
| 60 | + self.release = '8.6.1' | |
| 61 | 61 | self.base_url = "https://downloads.haskell.org/~ghc/#{release}/docs/html/" |
| 62 | 62 | end |
| 63 | 63 | |
| @@ -2,7 +2,7 @@ module Docs · 1 unmodified line | ||
| 2 | 2 | class Homebrew < UrlScraper |
| 3 | 3 | self.name = 'Homebrew' |
| 4 | 4 | self.type = 'simple' |
| 5 | − self.release = '1.4.2' | |
| 5 | + self.release = '1.8.1' | |
| 6 | 6 | self.base_url = 'https://docs.brew.sh/' |
| 7 | 7 | self.links = { |
| 8 | 8 | home: 'https://brew.sh', |
| @@ -13,8 +13,7 @@ module Docs · 4 unmodified lines | ||
| 13 | 13 | |
| 14 | 14 | options[:container] = ->(filter) { filter.root_page? ? '#home' : '#page' } |
| 15 | 15 | |
| 16 | − options[:skip_patterns] = [/maintainer/i, /core\-contributor/i] | |
| 17 | − options[:skip] = %w(Kickstarter-Supporters.html) | |
| 16 | + options[:skip_patterns] = [/maintainer/i, /core\-contributor/i, /kickstarter/i] | |
| 18 | 17 | |
| 19 | 18 | options[:attribution] = <<-HTML |
| 20 | 19 | © 2009–present Homebrew contributors<br> |
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | module Docs |
| 2 | 2 | class Jasmine < UrlScraper |
| 3 | 3 | self.type = 'simple' |
| 4 | − self.release = '3.2.1' | |
| 4 | + self.release = '3.3.0' | |
| 5 | 5 | self.base_url = 'https://jasmine.github.io/api/3.2/' |
| 6 | 6 | self.root_path = 'index.html' |
| 7 | 7 | self.links = { |
| @@ -8,12 +8,12 @@ module Docs · 7 unmodified lines | ||
| 8 | 8 | options[:only_patterns] = [/\Amanual\//, /\Astdlib\//] |
| 9 | 9 | |
| 10 | 10 | options[:attribution] = <<-HTML |
| 11 | − © 2009–2016 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors<br> | |
| 11 | + © 2009–2018 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors<br> | |
| 12 | 12 | Licensed under the MIT License. |
| 13 | 13 | HTML |
| 14 | 14 | |
| 15 | 15 | version '1.0' do |
| 16 | − self.release = '1.0.0' | |
| 16 | + self.release = '1.0.1' | |
| 17 | 17 | self.base_url = "https://docs.julialang.org/en/v#{release}/" |
| 18 | 18 | self.type = 'julia' |
| 19 | 19 | |
| @@ -3,7 +3,7 @@ · 2 unmodified lines | ||
| 3 | 3 | module Docs |
| 4 | 4 | class Koa < Github |
| 5 | 5 | self.base_url = 'https://github.com/koajs/koa/blob/master/docs/' |
| 6 | − self.release = '2.5.1' | |
| 6 | + self.release = '2.6.1' | |
| 7 | 7 | |
| 8 | 8 | self.root_path = 'api/index.md' |
| 9 | 9 | self.initial_paths = %w[ |
| @@ -20,7 +20,7 @@ module Docs · 19 unmodified lines | ||
| 20 | 20 | HTML |
| 21 | 21 | |
| 22 | 22 | version '1.3' do |
| 23 | − self.release = '1.3.0' | |
| 23 | + self.release = '1.3.4' | |
| 24 | 24 | self.base_url = "https://leafletjs.com/reference-#{release}.html" |
| 25 | 25 | end |
| 26 | 26 | |
| @@ -6,7 +6,7 @@ module Docs · 5 unmodified lines | ||
| 6 | 6 | self.type = 'sphinx' |
| 7 | 7 | self.root_path = 'index.html' |
| 8 | 8 | self.links = { |
| 9 | − home: 'http://matplotlib.org/', | |
| 9 | + home: 'https://matplotlib.org/', | |
| 10 | 10 | code: 'https://github.com/matplotlib/matplotlib' |
| 11 | 11 | } |
| 12 | 12 | |
| @@ -16,34 +16,52 @@ module Docs · 3 unmodified lines | ||
| 16 | 16 | options[:skip] = %w(api_changes.html tutorial.html faq.html) |
| 17 | 17 | |
| 18 | 18 | options[:attribution] = <<-HTML |
| 19 | − © 2012–2017 Matplotlib Development Team. All rights reserved.<br> | |
| 19 | + © 2012–2018 Matplotlib Development Team. All rights reserved.<br> | |
| 20 | 20 | Licensed under the Matplotlib License Agreement. |
| 21 | 21 | HTML |
| 22 | 22 | |
| 23 | + version '3.0' do | |
| 24 | + self.release = '3.0.0' | |
| 25 | + self.base_urls = [ | |
| 26 | + "https://matplotlib.org/#{release}/api/", | |
| 27 | + "https://matplotlib.org/#{release}/mpl_toolkits/mplot3d/", | |
| 28 | + "https://matplotlib.org/#{release}/mpl_toolkits/axes_grid/api/" | |
| 29 | + ] | |
| 30 | + end | |
| 31 | + | |
| 32 | + version '2.2' do | |
| 33 | + self.release = '2.2.3' | |
| 34 | + self.base_urls = [ | |
| 35 | + "https://matplotlib.org/#{release}/api/", | |
| 36 | + "https://matplotlib.org/#{release}/mpl_toolkits/mplot3d/", | |
| 37 | + "https://matplotlib.org/#{release}/mpl_toolkits/axes_grid/api/" | |
| 38 | + ] | |
| 39 | + end | |
| 40 | + | |
| 23 | 41 | version '2.1' do |
| 24 | 42 | self.release = '2.1.0' |
| 25 | 43 | self.base_urls = [ |
| 26 | − "http://matplotlib.org/#{release}/api/", | |
| 27 | − "http://matplotlib.org/#{release}/mpl_toolkits/mplot3d/", | |
| 28 | − "http://matplotlib.org/#{release}/mpl_toolkits/axes_grid/api/" | |
| 44 | + "https://matplotlib.org/#{release}/api/", | |
| 45 | + "https://matplotlib.org/#{release}/mpl_toolkits/mplot3d/", | |
| 46 | + "https://matplotlib.org/#{release}/mpl_toolkits/axes_grid/api/" | |
| 29 | 47 | ] |
| 30 | 48 | end |
| 31 | 49 | |
| 32 | 50 | version '2.0' do |
| 33 | 51 | self.release = '2.0.2' |
| 34 | 52 | self.base_urls = [ |
| 35 | − "http://matplotlib.org/#{release}/api/", | |
| 36 | − "http://matplotlib.org/#{release}/mpl_toolkits/mplot3d/", | |
| 37 | − "http://matplotlib.org/#{release}/mpl_toolkits/axes_grid/api/" | |
| 53 | + "https://matplotlib.org/#{release}/api/", | |
| 54 | + "https://matplotlib.org/#{release}/mpl_toolkits/mplot3d/", | |
| 55 | + "https://matplotlib.org/#{release}/mpl_toolkits/axes_grid/api/" | |
| 38 | 56 | ] |
| 39 | 57 | end |
| 40 | 58 | |
| 41 | 59 | version '1.5' do |
| 42 | 60 | self.release = '1.5.3' |
| 43 | 61 | self.base_urls = [ |
| 44 | − "http://matplotlib.org/#{release}/api/", | |
| 45 | − "http://matplotlib.org/#{release}/mpl_toolkits/mplot3d/", | |
| 46 | − "http://matplotlib.org/#{release}/mpl_toolkits/axes_grid/api/" | |
| 62 | + "https://matplotlib.org/#{release}/api/", | |
| 63 | + "https://matplotlib.org/#{release}/mpl_toolkits/mplot3d/", | |
| 64 | + "https://matplotlib.org/#{release}/mpl_toolkits/axes_grid/api/" | |
| 47 | 65 | ] |
| 48 | 66 | end |
| 49 | 67 | end |
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | module Docs |
| 2 | 2 | class Mocha < UrlScraper |
| 3 | 3 | self.type = 'simple' |
| 4 | − self.release = '5.0.1' | |
| 4 | + self.release = '5.2.0' | |
| 5 | 5 | self.base_url = 'https://mochajs.org/' |
| 6 | 6 | self.links = { |
| 7 | 7 | home: 'https://mochajs.org/', |
| @@ -2,7 +2,7 @@ module Docs · 1 unmodified line | ||
| 2 | 2 | class Nginx < UrlScraper |
| 3 | 3 | self.name = 'nginx' |
| 4 | 4 | self.type = 'nginx' |
| 5 | − self.release = '1.15.0' | |
| 5 | + self.release = '1.15.5' | |
| 6 | 6 | self.base_url = 'https://nginx.org/en/docs/' |
| 7 | 7 | self.links = { |
| 8 | 8 | home: 'https://nginx.org/', |
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | module Docs |
| 2 | 2 | class Nim < UrlScraper |
| 3 | 3 | self.type = 'simple' |
| 4 | − self.release = '0.18.0' | |
| 4 | + self.release = '0.19.0' | |
| 5 | 5 | self.base_url = 'https://nim-lang.org/docs/' |
| 6 | 6 | self.root_path = 'overview.html' |
| 7 | 7 | self.links = { |
| @@ -14,7 +14,7 @@ module Docs · 6 unmodified lines | ||
| 14 | 14 | options[:skip] = %w(theindex.html docgen.txt) |
| 15 | 15 | |
| 16 | 16 | options[:attribution] = <<-HTML |
| 17 | − © 2006–2017 Andreas Rumpf<br> | |
| 17 | + © 2006–2018 Andreas Rumpf<br> | |
| 18 | 18 | Licensed under the MIT License. |
| 19 | 19 | HTML |
| 20 | 20 | end |
| @@ -23,12 +23,17 @@ module Docs · 22 unmodified lines | ||
| 23 | 23 | HTML |
| 24 | 24 | |
| 25 | 25 | version do |
| 26 | − self.release = '10.9.0' | |
| 26 | + self.release = '11.1.0' | |
| 27 | + self.base_url = 'https://nodejs.org/dist/latest-v11.x/docs/api/' | |
| 28 | + end | |
| 29 | + | |
| 30 | + version '10 LTS' do | |
| 31 | + self.release = '10.13.0' | |
| 27 | 32 | self.base_url = 'https://nodejs.org/dist/latest-v10.x/docs/api/' |
| 28 | 33 | end |
| 29 | 34 | |
| 30 | 35 | version '8 LTS' do |
| 31 | − self.release = '8.11.4' | |
| 36 | + self.release = '8.12.0' | |
| 32 | 37 | self.base_url = 'https://nodejs.org/dist/latest-v8.x/docs/api/' |
| 33 | 38 | end |
| 34 | 39 | |
| @@ -1,9 +1,13 @@ | ||
| 1 | 1 | module Docs |
| 2 | 2 | class Nokogiri2 < Rdoc |
| 3 | + # Instructions: | |
| 4 | + # 1. Download the latest release at https://github.com/sparklemotion/nokogiri/releases | |
| 5 | + # 2. Run "bundle install && bundle exec rake docs" (in the Nokogiri directory) | |
| 6 | + # 4. Copy the "doc" directory to "docs/nokgiri" | |
| 7 | + | |
| 3 | 8 | self.name = 'Nokogiri' |
| 4 | 9 | self.slug = 'nokogiri' |
| 5 | − self.release = '1.8.1' | |
| 6 | − self.dir = '/Users/Thibaut/DevDocs/Docs/RDoc/Nokogiri' | |
| 10 | + self.release = '1.9.0' | |
| 7 | 11 | |
| 8 | 12 | html_filters.replace 'rdoc/entries', 'nokogiri2/entries' |
| 9 | 13 | |
| @@ -11,8 +15,8 @@ module Docs · 1 unmodified line | ||
| 11 | 15 | options[:only_patterns] = [/\ANokogiri/, /\AXSD/] |
| 12 | 16 | |
| 13 | 17 | options[:attribution] = <<-HTML |
| 14 | − © 2008–2017 Aaron Patterson, Mike Dalessio, Charles Nutter, Sergio Arbeo<br> | |
| 15 | − Patrick Mahoney, Yoko Harada, Akinori Musha, John Shahid<br> | |
| 18 | + © 2008–2018 Aaron Patterson, Mike Dalessio, Charles Nutter, Sergio Arbeo,<br> | |
| 19 | + Patrick Mahoney, Yoko Harada, Akinori Musha, John Shahid, Lars Kanis<br> | |
| 16 | 20 | Licensed under the MIT License. |
| 17 | 21 | HTML |
| 18 | 22 | end |
| @@ -2,7 +2,6 @@ module Docs · 1 unmodified line | ||
| 2 | 2 | class Numpy < FileScraper |
| 3 | 3 | self.name = 'NumPy' |
| 4 | 4 | self.type = 'sphinx' |
| 5 | − self.dir = '/Users/Thibaut/DevDocs/Docs/numpy/reference/' | |
| 6 | 5 | self.root_path = 'index.html' |
| 7 | 6 | self.links = { |
| 8 | 7 | home: 'http://www.numpy.org/', |
| @@ -1,11 +1,10 @@ | ||
| 1 | 1 | module Docs |
| 2 | 2 | class Openjdk < FileScraper |
| 3 | + # Downloaded from packages.debian.org/sid/openjdk-8-doc | |
| 4 | + # Extracting subdirectory /usr/share/doc/openjdk-8-jre-headless/api | |
| 3 | 5 | self.name = 'OpenJDK' |
| 4 | 6 | self.type = 'openjdk' |
| 5 | 7 | self.root_path = 'overview-summary.html' |
| 6 | − # Downloaded from packages.debian.org/sid/openjdk-8-doc | |
| 7 | − # Extracting subdirectory /usr/share/doc/openjdk-8-jre-headless/api | |
| 8 | − self.dir = '/Users/Thibaut/DevDocs/Docs/OpenJDK' | |
| 9 | 8 | |
| 10 | 9 | html_filters.insert_after 'internal_urls', 'openjdk/clean_urls' |
| 11 | 10 | html_filters.push 'openjdk/entries', 'openjdk/clean_html' |
| @@ -20,6 +20,11 @@ module Docs · 19 unmodified lines | ||
| 20 | 20 | Licensed under the 3-clause BSD License. |
| 21 | 21 | HTML |
| 22 | 22 | |
| 23 | + version '0.23' do | |
| 24 | + self.release = '0.23.4' | |
| 25 | + self.base_url = "http://pandas.pydata.org/pandas-docs/version/#{self.release}/" | |
| 26 | + end | |
| 27 | + | |
| 23 | 28 | version '0.22' do |
| 24 | 29 | self.release = '0.22.0' |
| 25 | 30 | self.base_url = "http://pandas.pydata.org/pandas-docs/version/#{self.release}/" |
| @@ -2,7 +2,6 @@ module Docs · 1 unmodified line | ||
| 2 | 2 | class Perl < FileScraper |
| 3 | 3 | self.name = 'Perl' |
| 4 | 4 | self.type = 'perl' |
| 5 | − self.dir = '/Users/Thibaut/DevDocs/Docs/Perl' | |
| 6 | 5 | self.root_path = 'index.html' |
| 7 | 6 | self.links = { |
| 8 | 7 | home: 'https://www.perl.org/' |
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | module Docs |
| 2 | 2 | class Phoenix < UrlScraper |
| 3 | 3 | self.type = 'elixir' |
| 4 | − self.release = '1.3.2' | |
| 4 | + self.release = '1.3.4' | |
| 5 | 5 | self.base_url = 'https://hexdocs.pm/' |
| 6 | 6 | self.root_path = 'phoenix/Phoenix.html' |
| 7 | 7 | self.initial_paths = %w( |
| @@ -1,5 +1,7 @@ | ||
| 1 | 1 | module Docs |
| 2 | 2 | class Php < FileScraper |
| 3 | + # Downloaded from php.net/download-docs.php | |
| 4 | + | |
| 3 | 5 | include FixInternalUrlsBehavior |
| 4 | 6 | |
| 5 | 7 | self.name = 'PHP' |
| @@ -23,9 +25,6 @@ module Docs · 17 unmodified lines | ||
| 23 | 25 | code: 'https://git.php.net/?p=php-src.git;a=summary' |
| 24 | 26 | } |
| 25 | 27 | |
| 26 | − # Downloaded from php.net/download-docs.php | |
| 27 | − self.dir = '/Users/Thibaut/DevDocs/Docs/PHP' | |
| 28 | − | |
| 29 | 28 | html_filters.push 'php/internal_urls', 'php/entries', 'php/clean_html', 'title' |
| 30 | 29 | text_filters.push 'php/fix_urls' |
| 31 | 30 | |
| @@ -1,6 +1,6 @@ | ||
| 1 | 1 | module Docs |
| 2 | 2 | class Puppeteer < Github |
| 3 | − self.release = '1.8.0' | |
| 3 | + self.release = '1.10.0' | |
| 4 | 4 | self.base_url = 'https://github.com/GoogleChrome/puppeteer/blob/v1.8.0/docs/api.md' |
| 5 | 5 | self.links = { |
| 6 | 6 | code: 'https://github.com/GoogleChrome/puppeteer' |
| @@ -23,33 +23,29 @@ module Docs · 22 unmodified lines | ||
| 23 | 23 | Licensed under the PSF License. |
| 24 | 24 | HTML |
| 25 | 25 | |
| 26 | − version '3.7' do | |
| 26 | + version '3.7' do # docs.python.org/3.7/download.html | |
| 27 | 27 | self.release = '3.7.0' |
| 28 | − self.dir = '/Users/Thibaut/DevDocs/Docs/Python37' # docs.python.org/3.7/download.html | |
| 29 | 28 | self.base_url = 'https://docs.python.org/3.7/' |
| 30 | 29 | |
| 31 | 30 | html_filters.push 'python/entries_v3', 'sphinx/clean_html', 'python/clean_html' |
| 32 | 31 | end |
| 33 | 32 | |
| 34 | − version '3.6' do | |
| 33 | + version '3.6' do # docs.python.org/3.6/download.html | |
| 35 | 34 | self.release = '3.6.6' |
| 36 | − self.dir = '/Users/Thibaut/DevDocs/Docs/Python36' # docs.python.org/3.6/download.html | |
| 37 | 35 | self.base_url = 'https://docs.python.org/3.6/' |
| 38 | 36 | |
| 39 | 37 | html_filters.push 'python/entries_v3', 'sphinx/clean_html', 'python/clean_html' |
| 40 | 38 | end |
| 41 | 39 | |
| 42 | − version '3.5' do | |
| 40 | + version '3.5' do # docs.python.org/3.5/download.html | |
| 43 | 41 | self.release = '3.5.3' |
| 44 | − self.dir = '/Users/Thibaut/DevDocs/Docs/Python35' # docs.python.org/3.5/download.html | |
| 45 | 42 | self.base_url = 'https://docs.python.org/3.5/' |
| 46 | 43 | |
| 47 | 44 | html_filters.push 'python/entries_v3', 'sphinx/clean_html', 'python/clean_html' |
| 48 | 45 | end |
| 49 | 46 | |
| 50 | − version '2.7' do | |
| 47 | + version '2.7' do # docs.python.org/2.7/download.html | |
| 51 | 48 | self.release = '2.7.13' |
| 52 | − self.dir = '/Users/Thibaut/DevDocs/Docs/Python27' # docs.python.org/2.7/download.html | |
| 53 | 49 | self.base_url = 'https://docs.python.org/2.7/' |
| 54 | 50 | |
| 55 | 51 | html_filters.push 'python/entries_v2', 'sphinx/clean_html', 'python/clean_html' |
| @@ -1,9 +1,14 @@ | ||
| 1 | 1 | module Docs |
| 2 | 2 | class Minitest < Rdoc |
| 3 | + # Instructions: | |
| 4 | + # 1. Run "gem update rdoc hoe" | |
| 5 | + # 2. Download the source code at https://github.com/seattlerb/minitest | |
| 6 | + # 3. Run "rake docs" (in the Minitest directory) | |
| 7 | + # 4. Copy the "docs" directory to "docs/minitest" | |
| 8 | + | |
| 3 | 9 | self.name = 'Ruby / Minitest' |
| 4 | 10 | self.slug = 'minitest' |
| 5 | − self.release = '5.10.3' | |
| 6 | − self.dir = '/Users/Thibaut/DevDocs/Docs/RDoc/Minitest' # rake docs | |
| 11 | + self.release = '5.11.3' | |
| 7 | 12 | self.links = { |
| 8 | 13 | code: 'https://github.com/seattlerb/minitest' |
| 9 | 14 | } |
| @@ -1,10 +1,17 @@ | ||
| 1 | 1 | module Docs |
| 2 | 2 | class Rails < Rdoc |
| 3 | + # Instructions: | |
| 4 | + # 1. Download a release at https://github.com/rails/rails/releases | |
| 5 | + # 2. Open "railties/lib/rails/api/task.rb" and comment out any code related to sdoc ("configure_sdoc") | |
| 6 | + # 3. Run "bundle install --without db && bundle exec rake rdoc" (in the Rails directory) | |
| 7 | + # 4. Run "cd guides && bundle exec rake guides:generate:html" | |
| 8 | + # 5. Copy the "guides/output" directory to "html/guides" | |
| 9 | + # 6. Copy the "html" directory to "docs/rails~[version]" | |
| 10 | + | |
| 3 | 11 | include FixInternalUrlsBehavior |
| 4 | 12 | |
| 5 | 13 | self.name = 'Ruby on Rails' |
| 6 | 14 | self.slug = 'rails' |
| 7 | − self.dir = '/Users/Thibaut/DevDocs/Docs/RDoc/Rails' | |
| 8 | 15 | self.initial_paths = %w(guides/index.html) |
| 9 | 16 | self.links = { |
| 10 | 17 | home: 'http://rubyonrails.org/', |
| @@ -68,7 +75,7 @@ module Docs · 57 unmodified lines | ||
| 68 | 75 | end |
| 69 | 76 | |
| 70 | 77 | version '5.2' do |
| 71 | − self.release = '5.2.0' | |
| 78 | + self.release = '5.2.2' | |
| 72 | 79 | end |
| 73 | 80 | |
| 74 | 81 | version '5.1' do |
| @@ -80,7 +87,7 @@ module Docs · 5 unmodified lines | ||
| 80 | 87 | end |
| 81 | 88 | |
| 82 | 89 | version '4.2' do |
| 83 | − self.release = '4.2.10' | |
| 90 | + self.release = '4.2.11' | |
| 84 | 91 | end |
| 85 | 92 | |
| 86 | 93 | version '4.1' do |
| @@ -1,16 +1,9 @@ | ||
| 1 | 1 | module Docs |
| 2 | 2 | class Ruby < Rdoc |
| 3 | − # Generated with: | |
| 4 | − # ./configure && make html | |
| 5 | − # or: | |
| 6 | − # rdoc \ | |
| 7 | − # --root . \ | |
| 8 | − # --page-dir doc \ | |
| 9 | − # --encoding=UTF-8 \ | |
| 10 | − # --visibility=public \ | |
| 11 | − # --format=darkfish \ | |
| 12 | − # --no-line-numbers \ | |
| 13 | − # --op html . | |
| 3 | + # Instructions: | |
| 4 | + # 1. Download Ruby's source code | |
| 5 | + # 2. Run "./configure && make html" (in the Ruby directory) | |
| 6 | + # 3. Copy the ".ext/html" directory to "docs/ruby~[version]" | |
| 14 | 7 | |
| 15 | 8 | include FixInternalUrlsBehavior |
| 16 | 9 | |
| @@ -77,23 +70,19 @@ module Docs · 60 unmodified lines | ||
| 77 | 70 | HTML |
| 78 | 71 | |
| 79 | 72 | version '2.5' do |
| 80 | − self.release = '2.5.0' | |
| 81 | − self.dir = '/Users/Thibaut/DevDocs/Docs/RDoc/Ruby25' | |
| 73 | + self.release = '2.5.3' | |
| 82 | 74 | end |
| 83 | 75 | |
| 84 | 76 | version '2.4' do |
| 85 | − self.release = '2.4.3' | |
| 86 | − self.dir = '/Users/Thibaut/DevDocs/Docs/RDoc/Ruby24' | |
| 77 | + self.release = '2.4.5' | |
| 87 | 78 | end |
| 88 | 79 | |
| 89 | 80 | version '2.3' do |
| 90 | − self.release = '2.3.6' | |
| 91 | − self.dir = '/Users/Thibaut/DevDocs/Docs/RDoc/Ruby23' | |
| 81 | + self.release = '2.3.8' | |
| 92 | 82 | end |
| 93 | 83 | |
| 94 | 84 | version '2.2' do |
| 95 | − self.release = '2.2.9' | |
| 96 | − self.dir = '/Users/Thibaut/DevDocs/Docs/RDoc/Ruby22' | |
| 85 | + self.release = '2.2.10' | |
| 97 | 86 | end |
| 98 | 87 | end |
| 99 | 88 | end |
| @@ -2,7 +2,7 @@ module Docs · 1 unmodified line | ||
| 2 | 2 | class React < UrlScraper |
| 3 | 3 | self.name = 'React' |
| 4 | 4 | self.type = 'simple' |
| 5 | − self.release = '16.4.0' | |
| 5 | + self.release = '16.6.0' | |
| 6 | 6 | self.base_url = 'https://reactjs.org/docs/' |
| 7 | 7 | self.root_path = 'hello-world.html' |
| 8 | 8 | self.links = { |
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | module Docs |
| 2 | 2 | class Redis < UrlScraper |
| 3 | 3 | self.type = 'redis' |
| 4 | − self.release = '4.0.11' | |
| 4 | + self.release = '5.0.0' | |
| 5 | 5 | self.base_url = 'https://redis.io/commands' |
| 6 | 6 | self.links = { |
| 7 | 7 | home: 'https://redis.io/', |
| @@ -1,7 +1,9 @@ | ||
| 1 | +# frozen_string_literal: true | |
| 2 | + | |
| 1 | 3 | module Docs |
| 2 | 4 | class Rust < UrlScraper |
| 3 | 5 | self.type = 'rust' |
| 4 | − self.release = '1.29.1' | |
| 6 | + self.release = '1.30.1' | |
| 5 | 7 | self.base_url = 'https://doc.rust-lang.org/' |
| 6 | 8 | self.root_path = 'book/second-edition/index.html' |
| 7 | 9 | self.initial_paths = %w( |
| @@ -28,6 +30,7 @@ module Docs · 20 unmodified lines | ||
| 28 | 30 | options[:fix_urls] = ->(url) do |
| 29 | 31 | url.sub! %r{(#{Rust.base_url}.+/)\z}, '\1index.html' |
| 30 | 32 | url.sub! '/unicode/u_str', '/unicode/str/' |
| 33 | + url.sub! '/std/std/', '/std/' | |
| 31 | 34 | url |
| 32 | 35 | end |
| 33 | 36 | |
| @@ -3,8 +3,8 @@ module Docs · 2 unmodified lines | ||
| 3 | 3 | self.name = 'scikit-image' |
| 4 | 4 | self.slug = 'scikit_image' |
| 5 | 5 | self.type = 'sphinx' |
| 6 | − self.release = '0.13.1' | |
| 7 | − self.base_url = 'http://scikit-image.org/docs/0.13.x/' | |
| 6 | + self.release = '0.14.1' | |
| 7 | + self.base_url = 'http://scikit-image.org/docs/0.14.x/' | |
| 8 | 8 | self.links = { |
| 9 | 9 | home: 'http://scikit-image.org/', |
| 10 | 10 | code: 'https://github.com/scikit-image/scikit-image' |
| @@ -3,7 +3,7 @@ module Docs · 2 unmodified lines | ||
| 3 | 3 | self.name = 'scikit-learn' |
| 4 | 4 | self.slug = 'scikit_learn' |
| 5 | 5 | self.type = 'sphinx' |
| 6 | − self.release = '0.19.1' | |
| 6 | + self.release = '0.20.0' | |
| 7 | 7 | self.base_url = 'http://scikit-learn.org/stable/' |
| 8 | 8 | self.root_path = 'documentation.html' |
| 9 | 9 | self.force_gzip = true |
| @@ -21,7 +21,7 @@ module Docs · 11 unmodified lines | ||
| 21 | 21 | options[:max_image_size] = 256_000 |
| 22 | 22 | |
| 23 | 23 | options[:attribution] = <<-HTML |
| 24 | − © 2007–2017 The scikit-learn developers<br> | |
| 24 | + © 2007–2018 The scikit-learn developers<br> | |
| 25 | 25 | Licensed under the 3-clause BSD License. |
| 26 | 26 | HTML |
| 27 | 27 | |
| @@ -4,7 +4,7 @@ module Docs · 3 unmodified lines | ||
| 4 | 4 | self.slug = 'sinon' |
| 5 | 5 | self.type = 'sinon' |
| 6 | 6 | self.links = { |
| 7 | − home: 'http://sinonjs.org/', | |
| 7 | + home: 'https://sinonjs.org/', | |
| 8 | 8 | code: 'https://github.com/sinonjs/sinon' |
| 9 | 9 | } |
| 10 | 10 | |
| @@ -18,34 +18,39 @@ module Docs · 7 unmodified lines | ||
| 18 | 18 | Licensed under the BSD License. |
| 19 | 19 | HTML |
| 20 | 20 | |
| 21 | + version '7' do | |
| 22 | + self.release = '7.1.1' | |
| 23 | + self.base_url = "https://sinonjs.org/releases/v#{release}/" | |
| 24 | + end | |
| 25 | + | |
| 21 | 26 | version '6' do |
| 22 | − self.release = '6.1.3' | |
| 23 | − self.base_url = "http://sinonjs.org/releases/v#{release}/" | |
| 27 | + self.release = '6.3.5' | |
| 28 | + self.base_url = "https://sinonjs.org/releases/v#{release}/" | |
| 24 | 29 | end |
| 25 | 30 | |
| 26 | 31 | version '5' do |
| 27 | 32 | self.release = '5.1.0' |
| 28 | − self.base_url = "http://sinonjs.org/releases/v#{release}/" | |
| 33 | + self.base_url = "https://sinonjs.org/releases/v#{release}/" | |
| 29 | 34 | end |
| 30 | 35 | |
| 31 | 36 | version '4' do |
| 32 | 37 | self.release = '4.5.0' |
| 33 | − self.base_url = "http://sinonjs.org/releases/v#{release}/" | |
| 38 | + self.base_url = "https://sinonjs.org/releases/v#{release}/" | |
| 34 | 39 | end |
| 35 | 40 | |
| 36 | 41 | version '3' do |
| 37 | 42 | self.release = '3.3.0' |
| 38 | − self.base_url = "http://sinonjs.org/releases/v#{release}/" | |
| 43 | + self.base_url = "https://sinonjs.org/releases/v#{release}/" | |
| 39 | 44 | end |
| 40 | 45 | |
| 41 | 46 | version '2' do |
| 42 | 47 | self.release = '2.4.1' |
| 43 | − self.base_url = "http://sinonjs.org/releases/v#{release}/" | |
| 48 | + self.base_url = "https://sinonjs.org/releases/v#{release}/" | |
| 44 | 49 | end |
| 45 | 50 | |
| 46 | 51 | version '1' do |
| 47 | 52 | self.release = '1.17.7' |
| 48 | − self.base_url = "http://sinonjs.org/releases/v#{release}/" | |
| 53 | + self.base_url = "https://sinonjs.org/releases/v#{release}/" | |
| 49 | 54 | end |
| 50 | 55 | end |
| 51 | 56 | end |
| @@ -2,8 +2,7 @@ module Docs · 1 unmodified line | ||
| 2 | 2 | class Sqlite < FileScraper |
| 3 | 3 | self.name = 'SQLite' |
| 4 | 4 | self.type = 'sqlite' |
| 5 | − self.release = '3.23.1' | |
| 6 | − self.dir = '/Users/Thibaut/DevDocs/Docs/sqlite/' | |
| 5 | + self.release = '3.25.2' | |
| 7 | 6 | self.base_url = 'https://sqlite.org/' |
| 8 | 7 | self.root_path = 'docs.html' |
| 9 | 8 | self.initial_paths = %w(keyword_index.html) |
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | module Docs |
| 2 | 2 | class Statsmodels < UrlScraper |
| 3 | 3 | self.type = 'sphinx' |
| 4 | − self.release = '0.8.0' | |
| 4 | + self.release = '0.9.0' | |
| 5 | 5 | self.base_url = 'http://www.statsmodels.org/stable/' |
| 6 | 6 | self.root_path = 'index.html' |
| 7 | 7 | self.links = { |
| @@ -26,44 +26,49 @@ module Docs · 25 unmodified lines | ||
| 26 | 26 | Licensed under the MIT License. |
| 27 | 27 | HTML |
| 28 | 28 | |
| 29 | + version '4.1' do | |
| 30 | + self.release = '4.1.7' | |
| 31 | + self.base_url = "https://api.symfony.com/#{version}/" | |
| 32 | + end | |
| 33 | + | |
| 29 | 34 | version '4.0' do |
| 30 | 35 | self.release = '4.0.3' |
| 31 | − self.base_url = "http://api.symfony.com/#{version}/" | |
| 36 | + self.base_url = "https://api.symfony.com/#{version}/" | |
| 32 | 37 | end |
| 33 | 38 | |
| 34 | 39 | version '3.4' do |
| 35 | 40 | self.release = '3.4.3' |
| 36 | − self.base_url = "http://api.symfony.com/#{version}/" | |
| 41 | + self.base_url = "https://api.symfony.com/#{version}/" | |
| 37 | 42 | end |
| 38 | 43 | |
| 39 | 44 | version '3.3' do |
| 40 | 45 | self.release = '3.3.15' |
| 41 | − self.base_url = "http://api.symfony.com/#{version}/" | |
| 46 | + self.base_url = "https://api.symfony.com/#{version}/" | |
| 42 | 47 | end |
| 43 | 48 | |
| 44 | 49 | version '3.2' do |
| 45 | 50 | self.release = '3.2.13' |
| 46 | − self.base_url = "http://api.symfony.com/#{version}/" | |
| 51 | + self.base_url = "https://api.symfony.com/#{version}/" | |
| 47 | 52 | end |
| 48 | 53 | |
| 49 | 54 | version '3.1' do |
| 50 | 55 | self.release = '3.1.8' |
| 51 | − self.base_url = "http://api.symfony.com/#{version}/" | |
| 56 | + self.base_url = "https://api.symfony.com/#{version}/" | |
| 52 | 57 | end |
| 53 | 58 | |
| 54 | 59 | version '3.0' do |
| 55 | 60 | self.release = '3.0.1' |
| 56 | − self.base_url = "http://api.symfony.com/#{version}/" | |
| 61 | + self.base_url = "https://api.symfony.com/#{version}/" | |
| 57 | 62 | end |
| 58 | 63 | |
| 59 | 64 | version '2.8' do |
| 60 | 65 | self.release = '2.8.28' |
| 61 | − self.base_url = "http://api.symfony.com/#{version}/" | |
| 66 | + self.base_url = "https://api.symfony.com/#{version}/" | |
| 62 | 67 | end |
| 63 | 68 | |
| 64 | 69 | version '2.7' do |
| 65 | 70 | self.release = '2.7.35' |
| 66 | − self.base_url = "http://api.symfony.com/#{version}/" | |
| 71 | + self.base_url = "https://api.symfony.com/#{version}/" | |
| 67 | 72 | end |
| 68 | 73 | end |
| 69 | 74 | end |
| @@ -4,14 +4,14 @@ module Docs · 3 unmodified lines | ||
| 4 | 4 | self.root_path = 'index.html' |
| 5 | 5 | self.initial_paths = %w(extensions/index.html) |
| 6 | 6 | self.links = { |
| 7 | − home: 'https://twig.sensiolabs.org/', | |
| 7 | + home: 'https://twig.symfony.com/', | |
| 8 | 8 | code: 'https://github.com/twigphp/Twig' |
| 9 | 9 | } |
| 10 | 10 | |
| 11 | 11 | options[:attribution] = <<-HTML |
| 12 | − © 2009–2017 by the Twig Team<br> | |
| 12 | + © 2009–2018 by the Twig Team<br> | |
| 13 | 13 | Licensed under the three clause BSD license.<br> |
| 14 | − The Twig logo is © 2010–2017 SensioLabs | |
| 14 | + The Twig logo is © 2010–2018 Symfony | |
| 15 | 15 | HTML |
| 16 | 16 | |
| 17 | 17 | html_filters.push 'twig/clean_html', 'twig/entries' |
| @@ -20,13 +20,13 @@ module Docs · 2 unmodified lines | ||
| 20 | 20 | options[:skip] = %w(deprecated.html advanced_legacy.html) |
| 21 | 21 | |
| 22 | 22 | version '2' do |
| 23 | − self.release = '2.4.3' | |
| 24 | − self.base_url = 'https://twig.sensiolabs.org/doc/2.x/' | |
| 23 | + self.release = '2.5.0' | |
| 24 | + self.base_url = 'https://twig.symfony.com/doc/2.x/' | |
| 25 | 25 | end |
| 26 | 26 | |
| 27 | 27 | version '1' do |
| 28 | 28 | self.release = '1.34.3' |
| 29 | − self.base_url = 'https://twig.sensiolabs.org/doc/1.x/' | |
| 29 | + self.base_url = 'https://twig.symfony.com/doc/1.x/' | |
| 30 | 30 | end |
| 31 | 31 | end |
| 32 | 32 | end |
| @@ -2,7 +2,7 @@ module Docs · 1 unmodified line | ||
| 2 | 2 | class Typescript < UrlScraper |
| 3 | 3 | self.name = 'TypeScript' |
| 4 | 4 | self.type = 'simple' |
| 5 | − self.release = '3.0.1' | |
| 5 | + self.release = '3.1.6' | |
| 6 | 6 | self.base_url = 'https://www.typescriptlang.org/docs/' |
| 7 | 7 | self.root_path = 'tutorial.html' |
| 8 | 8 | self.links = { |
| @@ -3,10 +3,10 @@ module Docs · 2 unmodified lines | ||
| 3 | 3 | self.name = 'Underscore.js' |
| 4 | 4 | self.slug = 'underscore' |
| 5 | 5 | self.type = 'underscore' |
| 6 | − self.release = '1.9.0' | |
| 7 | − self.base_url = 'http://underscorejs.org' | |
| 6 | + self.release = '1.9.1' | |
| 7 | + self.base_url = 'https://underscorejs.org' | |
| 8 | 8 | self.links = { |
| 9 | − home: 'http://underscorejs.org', | |
| 9 | + home: 'https://underscorejs.org', | |
| 10 | 10 | code: 'https://github.com/jashkenas/underscore' |
| 11 | 11 | } |
| 12 | 12 | |
| @@ -17,7 +17,7 @@ module Docs · 4 unmodified lines | ||
| 17 | 17 | options[:skip_links] = true |
| 18 | 18 | |
| 19 | 19 | options[:attribution] = <<-HTML |
| 20 | − © 2009–2017 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors<br> | |
| 20 | + © 2009–2018 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors<br> | |
| 21 | 21 | Licensed under the MIT License. |
| 22 | 22 | HTML |
| 23 | 23 | end |
| @@ -2,7 +2,7 @@ module Docs · 1 unmodified line | ||
| 2 | 2 | class Vagrant < UrlScraper |
| 3 | 3 | self.name = 'Vagrant' |
| 4 | 4 | self.type = 'simple' |
| 5 | − self.release = '2.1.1' | |
| 5 | + self.release = '2.2.0' | |
| 6 | 6 | self.base_url = 'https://www.vagrantup.com/docs/' |
| 7 | 7 | self.root_path = 'index.html' |
| 8 | 8 | self.links = { |
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | module Docs |
| 2 | 2 | class Yarn < UrlScraper |
| 3 | 3 | self.type = 'simple' |
| 4 | − self.release = '1.9.4' | |
| 4 | + self.release = '1.12.1' | |
| 5 | 5 | self.base_url = 'https://yarnpkg.com/en/docs/' |
| 6 | 6 | self.links = { |
| 7 | 7 | home: 'https://yarnpkg.com/', |
| @@ -0,0 +1,13 @@ | ||
| 1 | +# frozen_string_literal: true | |
| 2 | + | |
| 3 | +module Docs | |
| 4 | + class RequesterSubscriber < Subscriber | |
| 5 | + self.namespace = 'requester' | |
| 6 | + | |
| 7 | + def handle_response(event) | |
| 8 | + if event.duration > 10_000 | |
| 9 | + log "WARN: #{format_url event.payload[:url]} was slow to process (#{(event.duration / 1000).round}s)" | |
| 10 | + end | |
| 11 | + end | |
| 12 | + end | |
| 13 | +end | |