@@ -4,81 +4,81 @@ module Docs
4
4
class Rxjs < UrlScraper
5
5
self . name = 'RxJS'
6
6
self . type = 'rxjs'
7
+ self . release = '6.5.2'
8
+ self . base_url = 'https://rxjs.dev/'
9
+ self . root_path = 'guide/overview'
7
10
self . links = {
8
11
home : 'https://rxjs.dev/' ,
9
12
code : 'https://github.com/ReactiveX/rxjs'
10
13
}
11
14
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
+
12
27
options [ :max_image_size ] = 256_000
13
28
14
29
options [ :attribution ] = <<-HTML
15
30
© 2015–2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors.< br >
16
31
Code licensed under an Apache-2.0 License. Documentation licensed under CC BY 4.0.
17
32
HTML
18
33
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
21
38
22
- def initial_urls
23
- initial_urls = [ ]
39
+ private
24
40
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 = [ ]
33
43
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' ]
42
49
end
43
-
44
- initial_urls
50
+ data [ 'SideNav' ] . each ( &dig )
45
51
end
46
52
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' ]
57
59
end
58
- super
60
+ data . each ( & dig )
59
61
end
60
- end
61
62
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 }
76
66
end
77
-
78
- include Docs ::Rxjs ::Common
79
67
end
80
68
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
82
82
83
83
def parse ( response )
84
84
response . body . gsub! '<code-example' , '<pre'
0 commit comments