@@ -4,81 +4,81 @@ module Docs
44 class Rxjs < UrlScraper
55 self . name = 'RxJS'
66 self . type = 'rxjs'
7+ self . release = '6.5.2'
8+ self . base_url = 'https://rxjs.dev/'
9+ self . root_path = 'guide/overview'
710 self . links = {
811 home : 'https://rxjs.dev/' ,
912 code : 'https://github.com/ReactiveX/rxjs'
1013 }
1114
15+ html_filters . push 'rxjs/clean_html' , 'rxjs/entries'
16+
17+ options [ :follow_links ] = false
18+ options [ :only_patterns ] = [ /guide\/ / , /api\/ / ]
19+ options [ :skip_patterns ] = [ /api\/ ([^\/ ]+)\. json/ ]
20+ options [ :fix_urls_before_parse ] = -> ( url ) do
21+ url . sub! %r{\A guide/} , '/guide/'
22+ url . sub! %r{\A api/} , '/api/'
23+ url . sub! %r{\A generated/} , '/generated/'
24+ url
25+ end
26+
1227 options [ :max_image_size ] = 256_000
1328
1429 options [ :attribution ] = <<-HTML
1530 © 2015–2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors.< br >
1631 Code licensed under an Apache-2.0 License. Documentation licensed under CC BY 4.0.
1732 HTML
1833
19- module Common
20- private
34+ def get_latest_version ( opts )
35+ json = fetch_json ( 'https://rxjs.dev/generated/navigation.json' , opts )
36+ json [ '__versionInfo' ] [ 'raw' ]
37+ end
2138
22- def initial_urls
23- initial_urls = [ ]
39+ private
2440
25- Request . run "#{ self . class . base_url } generated/navigation.json" do |response |
26- data = JSON . parse ( response . body )
27- dig = -> ( entry ) do
28- initial_urls << url_for ( "generated/docs/#{ entry [ 'url' ] } .json" ) if entry [ 'url' ] && entry [ 'url' ] != 'api'
29- entry [ 'children' ] . each ( &dig ) if entry [ 'children' ]
30- end
31- data [ 'SideNav' ] . each ( &dig )
32- end
41+ def initial_urls
42+ initial_urls = [ ]
3343
34- Request . run "#{ self . class . base_url } generated/docs/api/api-list.json" do |response |
35- data = JSON . parse ( response . body )
36- dig = -> ( entry ) do
37- initial_urls << url_for ( "generated/docs/#{ entry [ 'path' ] } .json" ) if entry [ 'path' ]
38- initial_urls << url_for ( "generated/docs/api/#{ entry [ 'name' ] } .json" ) if entry [ 'name' ] && !entry [ 'path' ]
39- entry [ 'items' ] . each ( &dig ) if entry [ 'items' ]
40- end
41- data . each ( &dig )
44+ Request . run "#{ self . class . base_url } generated/navigation.json" do |response |
45+ data = JSON . parse ( response . body )
46+ dig = -> ( entry ) do
47+ initial_urls << url_for ( "generated/docs/#{ entry [ 'url' ] } .json" ) if entry [ 'url' ] && entry [ 'url' ] != 'api'
48+ entry [ 'children' ] . each ( &dig ) if entry [ 'children' ]
4249 end
43-
44- initial_urls
50+ data [ 'SideNav' ] . each ( &dig )
4551 end
4652
47- def handle_response ( response )
48- if response . mime_type . include? ( 'json' )
49- begin
50- response . options [ :response_body ] = JSON . parse ( response . body ) [ 'contents' ]
51- rescue JSON ::ParserError
52- response . options [ :response_body ] = ''
53- end
54- response . headers [ 'Content-Type' ] = 'text/html'
55- response . url . path = response . url . path . sub ( '/generated/docs/' , '/' ) . remove ( '.json' )
56- response . effective_url . path = response . effective_url . path . sub ( '/generated/docs/' , '/' ) . remove ( '.json' )
53+ Request . run "#{ self . class . base_url } generated/docs/api/api-list.json" do |response |
54+ data = JSON . parse ( response . body )
55+ dig = -> ( entry ) do
56+ initial_urls << url_for ( "generated/docs/#{ entry [ 'path' ] } .json" ) if entry [ 'path' ]
57+ initial_urls << url_for ( "generated/docs/api/#{ entry [ 'name' ] } .json" ) if entry [ 'name' ] && !entry [ 'path' ]
58+ entry [ 'items' ] . each ( &dig ) if entry [ 'items' ]
5759 end
58- super
60+ data . each ( & dig )
5961 end
60- end
6162
62- version do
63- self . release = '6.3.3'
64- self . base_url = 'https://rxjs.dev/'
65- self . root_path = 'guide/overview'
66-
67- html_filters . push 'rxjs/clean_html' , 'rxjs/entries'
68-
69- options [ :follow_links ] = false
70- options [ :only_patterns ] = [ /\A guide/ , /\A api/ ]
71- options [ :fix_urls_before_parse ] = -> ( url ) do
72- url . sub! %r{\A guide/} , '/guide/'
73- url . sub! %r{\A api/} , '/api/'
74- url . sub! %r{\A generated/} , '/generated/'
75- url
63+ initial_urls . select do |url |
64+ options [ :only_patterns ] . any? { |pattern | url =~ pattern } &&
65+ options [ :skip_patterns ] . none? { |pattern | url =~ pattern }
7666 end
77-
78- include Docs ::Rxjs ::Common
7967 end
8068
81- private
69+ def handle_response ( response )
70+ if response . mime_type . include? ( 'json' )
71+ begin
72+ response . options [ :response_body ] = JSON . parse ( response . body ) [ 'contents' ]
73+ rescue JSON ::ParserError
74+ response . options [ :response_body ] = ''
75+ end
76+ response . headers [ 'Content-Type' ] = 'text/html'
77+ response . url . path = response . url . path . sub ( '/generated/docs/' , '/' ) . remove ( '.json' )
78+ response . effective_url . path = response . effective_url . path . sub ( '/generated/docs/' , '/' ) . remove ( '.json' )
79+ end
80+ super
81+ end
8282
8383 def parse ( response )
8484 response . body . gsub! '<code-example' , '<pre'
0 commit comments