Add ReactiveX documentation

This commit is contained in:
Jasper van Merle 2019-01-26 23:09:27 +01:00
parent 2eb865442c
commit d0cf5d745c
9 changed files with 120 additions and 0 deletions

View file

@ -595,6 +595,11 @@ credits = [
'2013-present Facebook Inc.',
'MIT',
'https://raw.githubusercontent.com/facebook/react/master/LICENSE'
], [
'ReactiveX',
'ReactiveX contributors',
'Apache',
'https://raw.githubusercontent.com/ReactiveX/reactivex.github.io/develop/LICENSE'
], [
'Redis',
'2009-2018 Salvatore Sanfilippo',

View file

@ -89,6 +89,7 @@
'pages/ramda',
'pages/rdoc',
'pages/react_native',
'pages/reactivex',
'pages/redis',
'pages/rethinkdb',
'pages/rfc',

View file

@ -0,0 +1,11 @@
._reactivex {
@extend %simple;
img {
max-width: 50%;
}
figure {
margin: 0;
}
}

View file

@ -0,0 +1,65 @@
module Docs
class Reactivex
class CleanHtmlFilter < Filter
def call
# Can't use options[:container] because then the navigation bar wouldn't be scraped
@doc = at_css(root_page? ? '.col-md-8' : '.col-sm-8')
# Remove breadcrumbs
css('.breadcrumb').remove
# Replace interactive demo's with links to them
css('rx-marbles').each do |node|
node.name = 'a'
node.content = 'Open interactive diagram on rxmarbles.com'
node['href'] = "https://rxmarbles.com/##{node['key']}"
node.remove_attribute('key')
end
# Syntax-highlighted code blocks
css('.code').each do |node|
language = node['class'].gsub('code', '').strip
pre = node.at_css('pre')
pre['data-language'] = language
pre.content = pre.content.strip
node.replace(pre)
end
# Assume JavaScript syntax for code blocks not surrounded by a div.code
css('pre').each do |node|
next if node['data-language']
node.content = node.content.strip
node['data-language'] = 'javascript'
end
# Make language specific implementation titles prettier
css('.panel-title').each do |node|
# Remove the link, keep the text
node.content = node.content
# Transform it into a header for better styling
node.name = 'h3'
end
# Remove language specific implementations that are TBD
css('span').each do |node|
next unless node.content == 'TBD'
node.xpath('./ancestor::div[contains(@class, "panel-default")][1]').remove
end
# Remove the : at the end of "Language-Specific Information:"
css('h2').each do |node|
node.inner_html = node.inner_html.gsub('Information:', 'Information')
end
# Remove attributes to reduce file size
css('div').remove_attr('class')
doc
end
end
end
end

View file

@ -0,0 +1,14 @@
module Docs
class Reactivex
class EntriesFilter < Docs::EntriesFilter
def get_name
at_css('h1').content
end
def get_type
links = css('.breadcrumb > li:nth-child(2) > a')
links.size > 0 ? links.first.content : 'Manual'
end
end
end
end

View file

@ -0,0 +1,23 @@
module Docs
class Reactivex < UrlScraper
self.type = 'reactivex'
self.name = 'ReactiveX'
self.base_url = 'http://reactivex.io/'
self.root_path = 'intro.html'
self.links = {
home: 'http://reactivex.io/'
}
html_filters.push 'reactivex/entries', 'reactivex/clean_html'
options[:download_images] = false
options[:only_patterns] = [/documentation\//]
options[:skip_patterns] = [/ko\//]
options[:attribution] = <<-HTML
&copy; ReactiveX contributors<br>
Licensed under the Apache License 2.0.
HTML
end
end

View file

@ -0,0 +1 @@
https://github.com/ReactiveX/reactivex.github.io/blob/develop/assets/Rx_Icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5 KiB