History

Update React documentation (16.0.0)

Thibaut Courouble committed 9 years ago

Commit e4d841d1 parent 1181bd74 files · +74 −83Browse files

Unified · Split

4 files
  1. assets/javascripts/vendor/prism.js +39 −1
  2. lib/docs/filters/react/clean_html.rb +11 −43
  3. lib/docs/filters/react/entries.rb +11 −26
  4. lib/docs/scrapers/react.rb +13 −13
assets/javascripts/vendor/prism.js+39−1
@@ -1,4 +1,4 @@
1/* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript+c+cpp+coffeescript+ruby+d+elixir+erlang+go+java+json+kotlin+lua+nginx+nim+perl+php+python+crystal+rust+scss+sql+typescript */1/* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript+c+cpp+coffeescript+ruby+d+elixir+erlang+go+java+json+kotlin+lua+nginx+nim+perl+php+python+jsx+crystal+rust+scss+sql+typescript */
2var _self = (typeof window !== 'undefined')2var _self = (typeof window !== 'undefined')
3 ? window // if in browser3 ? window // if in browser
4 : (4 : (
@@ -1681,6 +1681,44 @@ Prism.languages.python= { · 1676 unmodified lines
1681 'punctuation' : /[{}[\];(),.:]/1681 'punctuation' : /[{}[\];(),.:]/
1682};1682};
1683 1683
1684(function(Prism) {
1685
1686var javascript = Prism.util.clone(Prism.languages.javascript);
1687
1688Prism.languages.jsx = Prism.languages.extend('markup', javascript);
1689Prism.languages.jsx.tag.pattern= /<\/?[\w\.:-]+\s*(?:\s+(?:[\w\.:-]+(?:=(?:("|')(\\?[\s\S])*?\1|[^\s'">=]+|(\{[\s\S]*?\})))?|\{\.{3}\w+\}))*\s*\/?>/i;
1690
1691Prism.languages.jsx.tag.inside['attr-value'].pattern = /=(?!\{)(?:('|")[\s\S]*?(\1)|[^\s>]+)/i;
1692
1693Prism.languages.insertBefore('inside', 'attr-name', {
1694 'spread': {
1695 pattern: /\{\.{3}\w+\}/,
1696 inside: {
1697 'punctuation': /\{|\}|\./,
1698 'attr-value': /\w+/
1699 }
1700 }
1701}, Prism.languages.jsx.tag);
1702
1703var jsxExpression = Prism.util.clone(Prism.languages.jsx);
1704
1705delete jsxExpression.punctuation
1706
1707jsxExpression = Prism.languages.insertBefore('jsx', 'operator', {
1708 'punctuation': /=(?={)|[{}[\];(),.:]/
1709}, { jsx: jsxExpression });
1710
1711Prism.languages.insertBefore('inside', 'attr-value',{
1712 'script': {
1713 // Allow for one level of nesting
1714 pattern: /=(\{(?:\{[^}]*\}|[^}])+\})/i,
1715 inside: jsxExpression,
1716 'alias': 'language-javascript'
1717 }
1718}, Prism.languages.jsx.tag);
1719
1720}(Prism));
1721
1684(function(Prism) {1722(function(Prism) {
1685 Prism.languages.crystal = Prism.languages.extend('ruby', {1723 Prism.languages.crystal = Prism.languages.extend('ruby', {
1686 keyword: [1724 keyword: [
lib/docs/filters/react/clean_html.rb+11−43
@@ -2,59 +2,27 @@ module Docs · 1 unmodified line
2 class React2 class React
3 class CleanHtmlFilter < Filter3 class CleanHtmlFilter < Filter
4 def call4 def call
5 @doc = at_css('.inner-content, article.withtoc')5 @doc = at_css('article')
6 6
7 if root_page?7 if root_page?
8 at_css('h1').content = context[:root_title]8 at_css('h1').content = 'React Documentation'
9 end9 end
10 10
11 css('.docs-prevnext', '.hash-link', '.edit-page-link', '.edit-github', 'a.hash', '.edit-page-block', 'a.show', 'a.hide', 'hr').remove11 css('header', 'div[class^="css-"]', '.gatsby-resp-image-link span').each do |node|
12 12 node.before(node.children).remove
13 css('table h1', 'table h2', 'table h3').each do |node|
14 table = node
15 table = table.parent until table.name == 'table'
16 table.replace(node)
17 end
18
19 css('a.anchor', 'a.hashref').each do |node|
20 node.parent['id'] ||= node['name'] || node['id']
21 end
22
23 css('.highlight').each do |node|
24 node.name = 'pre'
25 node.css('.gutter').remove
26 node['data-language'] = node.at_css('[data-lang]').try(:[], 'data-lang') || 'js'
27 node.content = node.content.strip
28 end
29
30 css('table.highlighttable').each do |node|
31 node.replace(node.at_css('pre.highlight'))
32 end13 end
33 14
34 css('.prism').each do |node|15 css('.gatsby-highlight > pre').each do |node|
35 node.name = 'pre'
36 node['data-language'] = node['class'][/(?<=language\-)(\w+)/]
37 node.content = node.content16 node.content = node.content
17 node['data-language'] = node['class'][/(?<=gatsby\-code\-)(\w+)/]
18 node.remove_attribute('class')
19 node.parent.replace(node)
38 end20 end
39 21
40 css('blockquote > p:first-child').each do |node|22 css('a.anchor', 'a:contains("Edit this page")', 'hr').remove
41 node.remove if node.content.strip == 'Note:'
42 end
43
44 css('h3#props', 'h3#methods').each { |node| node.name = 'h2' }
45 css('h4.propTitle').each { |node| node.name = 'h3' }
46
47 css('> div > div', '> div', 'div > span', '.props', '.prop').each do |node|
48 node.before(node.children).remove
49 end
50
51 css('a pre', 'h3 .propType').each do |node|
52 node.name = 'code'
53 end
54 23
55 css('a[target]').each do |node|24 css('a').remove_attr('rel').remove_attr('target').remove_attr('class').remove_attr('style')
56 node.remove_attribute('target')25 css('img').remove_attr('style').remove_attr('srcset').remove_attr('sizes').remove_attr('class')
57 end
58 26
59 doc27 doc
60 end28 end
lib/docs/filters/react/entries.rb+11−26
@@ -2,28 +2,24 @@ module Docs · 1 unmodified line
2 class React2 class React
3 class EntriesFilter < Docs::EntriesFilter3 class EntriesFilter < Docs::EntriesFilter
4 def get_name4 def get_name
5 at_css('h1').children.select(&:text?).map(&:content).join.strip5 at_css('article h1').content
6 end6 end
7 7
8 def get_type8 def get_type
9 link = at_css('.nav-docs-section .active, .toc .active')9 link = at_css("nav a[href='#{result[:path].split('/').last}']")
10 return 'Miscellaneous' unless link10 link.ancestors('ul').last.previous_element.content
11 section = link.ancestors('.nav-docs-section, section').first
12 type = section.at_css('h3').content.strip
13 type
14 end11 end
15 12
16 def additional_entries13 def additional_entries
17 entries = []14 entries = []
18 15
19 css('.inner-content h3 code, .inner-content h4 code').each do |node|16 css('article h3 code, article h4 code').each do |node|
20 name = node.content17 next if node.previous.try(:content).present?
21 name.remove! %r{[#\(\)]}18 name = node.content.strip
22 name.remove! %r{\w+\:}19 # name.remove! %r{[#\(\)]}
23 name.strip!20 # name.remove! %r{\w+\:}
24 name = 'createFragmentobject' if name.include?('createFragmentobject')21 # name.strip!
25 id = name.parameterize22 # name = 'createFragmentobject' if name.include?('createFragmentobject')
26 node.parent['id'] = id
27 type = if slug == 'react-component'23 type = if slug == 'react-component'
28 'Reference: Component'24 'Reference: Component'
29 elsif slug == 'react-api'25 elsif slug == 'react-api'
@@ -31,18 +27,7 @@ module Docs · 1 unmodified line
31 else27 else
32 'Reference'28 'Reference'
33 end29 end
34 entries << [name, id, type]30 entries << [name, node.parent['id'], type]
35 end
36
37 css('.apiIndex a pre').each do |node| # relay
38 next unless node.parent['href'].start_with?('#')
39 id = node.parent['href'].remove('#')
40 name = node.content.strip
41 sep = name.start_with?('static') ? '.' : '#'
42 name.remove! %r{(abstract|static) }
43 name.sub! %r{\(.*\)}, '()'
44 name.prepend(self.name + sep)
45 entries << [name, id]
46 end31 end
47 32
48 entries33 entries
lib/docs/scrapers/react.rb+13−13
@@ -1,29 +1,29 @@
1module Docs1module Docs
2 class React < UrlScraper2 class React < UrlScraper
3 self.name = 'React'3 self.name = 'React'
4 self.type = 'react'4 self.type = 'simple'
5 self.release = '15.6.1'5 self.release = '16.0.0'
6 self.base_url = 'https://facebook.github.io/react/docs/'6 self.base_url = 'https://reactjs.org/docs/'
7 self.root_path = 'hello-world.html'7 self.root_path = 'hello-world.html'
8 self.links = {8 self.links = {
9 home: 'https://facebook.github.io/react/',9 home: 'https://reactjs.org/',
10 code: 'https://github.com/facebook/react'10 code: 'https://github.com/facebook/react'
11 }11 }
12 12
13 html_filters.push 'react/entries', 'react/clean_html'13 html_filters.push 'react/entries', 'react/clean_html'
14 14
15 options[:root_title] = 'React Documentation'15 options[:skip] = %w(
16 options[:container] = '.documentationContent'16 codebase-overview.html
17 design-principles.html
18 how-to-contribute.html
19 implementation-notes.html
20 )
17 21
18 options[:replace_paths] = {22 options[:replace_paths] = {
19 'top-level-api.html' => 'react-api.html',
20 'working-with-the-browser.html' => 'refs-and-the-dom.html',
21 'interactivity-and-dynamic-uis.html' => 'state-and-lifecycle.html',
22 'more-about-refs.html' => 'refs-and-the-dom.html',23 'more-about-refs.html' => 'refs-and-the-dom.html',
23 'advanced-performance.html' => 'optimizing-performance.html',24 'interactivity-and-dynamic-uis.html' => 'state-and-lifecycle.html',
24 'component-api.html' => 'react-component.html',25 'working-with-the-browser.html' => 'refs-and-the-dom.html',
25 'component-specs.html' => 'react-component.html',26 'top-level-api.html' => 'react-api.html',
26 'multiple-components.html' => 'composition-vs-inheritance.html',
27 }27 }
28 28
29 options[:attribution] = <<-HTML29 options[:attribution] = <<-HTML