History

Update Less scraper (1.6.3)

Thibaut committed 12 years ago

Commit b035be31 parent bc95cfd5 files · +74 −73Browse files

Unified · Split

5 files
  1. assets/javascripts/templates/pages/about_tmpl.coffee +3 −3
  2. assets/stylesheets/pages/_less.scss +4 −8
  3. lib/docs/filters/less/clean_html.rb +11 −22
  4. lib/docs/filters/less/entries.rb +46 −33
  5. lib/docs/scrapers/less.rb +10 −7
assets/javascripts/templates/pages/about_tmpl.coffee+3−3
@@ -135,9 +135,9 @@ credits = [ · 134 unmodified lines
135135 'https://raw.github.com/knockout/knockout/master/LICENSE'
136136 ], [
137137 'Less',
138− '2009-2014 Alexis Sellier & The Core Less Team',
139− 'Apache v2',
140− 'https://raw.github.com/less/less.js/master/LICENSE'
138+ '2009-2014 The Core Less Team',
139+ 'CC BY',
140+ 'http://creativecommons.org/licenses/by/3.0/'
141141 ], [
142142 'Lo-Dash',
143143 '2009-2013 The Dojo Foundation',
assets/stylesheets/pages/_less.scss+4−8
@@ -1,12 +1,8 @@
11 ._less {
22 padding-left: 1rem;
33
4− > h1, > h2, > h3 { margin-left: -1rem; }
5− > h2, > h3 { @extend %block-heading; }
6− > h4 { margin-top: 2em; }
7−
8− > .function {
9− margin-left: -1rem;
10− @extend %block-label, %label-blue;
11− }
4+ > h1, > h2, h3, h4 { margin-left: -1rem; }
5+ > h2 { @extend %block-heading; }
6+ h3, h4 { @extend %block-label, %label-blue; }
7+ code { @extend %label; }
128 }
lib/docs/filters/less/clean_html.rb+11−22
@@ -2,37 +2,26 @@ module Docs · 1 unmodified line
22 class Less
33 class CleanHtmlFilter < Filter
44 def call
5− # Remove everything but language and function reference
6− doc.children = css('#docs', '#reference').children
5+ css('.source-link').remove
76
8− # Change headings
9− css('h1', 'h2', 'h3').each do |node|
10− node.name = "h#{node.name.last.to_i + 1}"
11− node['id'] ||= node.content.strip.parameterize
7+ css('#functions-overview').each do |node|
8+ node.ancestors('.docs-section').remove
129 end
1310
14− # Remove .content div
15− css('.content').each do |node|
16− node.before(node.elements)
17− node.remove
11+ css('.docs-section', 'blockquote').each do |node|
12+ node.before(node.children).remove
1813 end
1914
20− # Remove function index
21− css('#function-reference').each do |node|
22− while node.next.content.strip != 'String functions'
23− node.next.remove
24− end
15+ css('.page-header').each do |node|
16+ node.before(node.first_element_child).remove
2517 end
2618
27− # Remove duplicates
28− [css('[id="unit"]').last, css('[id="color"]').last].each do |node|
29− node.next.remove while %w(h2 h3 h4).exclude?(node.next.name)
30− node.remove
19+ css('h1, h2, h3, h4').each do |node|
20+ node.name = node.name.sub(/\d/) { |i| i.to_i + 1 }
3121 end
3222
33− # Differentiate function headings
34− css('#function-reference ~ h4').each do |node|
35− node['class'] = 'function'
23+ css('pre').each do |node|
24+ node.content = node.content
3625 end
3726
3827 doc
lib/docs/filters/less/entries.rb+46−33
@@ -1,48 +1,61 @@
11 module Docs
22 class Less
33 class EntriesFilter < Docs::EntriesFilter
4− SKIP_NAMES = ['Parametric Mixins', 'Mixins With Multiple Parameters',
5− 'Return Values', 'Unlocking Mixins', 'Media Queries as Variables']
6−
7− REPLACE_NAMES = {
8− 'The @arguments variable' => '@arguments',
9− 'Advanced arguments and the @rest variable' => '@rest',
10− 'The Keyword !important' => '!important',
11− 'Pattern-matching and Guard expressions' => 'Pattern-matching',
12− 'Advanced Usage of &' => '&',
13− 'Importing' => '@import',
14− 'JavaScript evaluation' => 'JavaScript',
15− '% format' => '%'
16− }
17−
18− def include_default_entry?
19− false
4+ def name
5+ at_css('h1').content
6+ end
7+
8+ def type
9+ root_page? ? 'Language' : nil
2010 end
2111
2212 def additional_entries
13+ root_page? ? language_entries : function_entries
14+ end
15+
16+ def language_entries
2317 entries = []
24− type = ''
25−
26− css('> [id]').each do |node|
27− if node.name == 'h2'
28− type = node.content.strip
29− type.sub! 'The Language', 'Language'
30− type.sub! 'functions', 'Functions'
31− next
32− end
3318
34− # Skip function categories (e.g. "Color definition")
35− next if node.name == 'h3' && type != 'Language'
19+ css('h1').each do |node|
20+ name = node.content
21+ entries << [name, node['id']] unless name == 'Overview'
22+ end
23+
24+ css('h2[id^="import-options-"]').each do |node|
25+ entries << ["@import #{node.content}", node['id']]
26+ end
3627
37− name = node.content.strip
28+ entries.concat [
29+ ['@var', 'variables-feature'],
30+ ['@{} interpolation', 'variables-feature-variable-interpolation'],
31+ ['url()', 'variables-feature-urls'],
32+ ['@property', 'variables-feature-properties'],
33+ ['@@var', 'variables-feature-variable-names'],
34+ [':extend()', 'extend-feature'],
35+ [':extend(all)', 'extend-feature-extend-quotallquot'],
36+ ['@arguments', 'mixins-parametric-feature-the-codeargumentscode-variable'],
37+ ['@rest', 'mixins-parametric-feature-advanced-arguments-and-the-coderestcode-variable'],
38+ ['@import', 'import-directives-feature'],
39+ ['when', 'mixin-guards-feature'],
40+ ['.loop()', 'loops-feature'],
41+ ['+:', 'merge-feature'] ]
3842
39− next if SKIP_NAMES.include?(name)
43+ entries
44+ end
4045
41− name = REPLACE_NAMES[name] if REPLACE_NAMES[name]
42− name.gsub!(/ [A-Z]/) { |str| str.downcase! }
46+ def function_entries
47+ entries = []
48+ type = nil
4349
44− entries << ['~', node['id'], type] if name == 'e'
45− entries << [name, node['id'], type]
50+ css('.docs-section').each do |section|
51+ if title = section.at_css('h1')
52+ type = title.content
53+ type.sub! %r{(\w+) Functions}, 'Functions: \1'
54+ end
55+
56+ section.css('h3').each do |node|
57+ entries << [node.content, node['id'], type]
58+ end
4659 end
4760
4861 entries
lib/docs/scrapers/less.rb+10−7
@@ -1,18 +1,21 @@
11 module Docs
22 class Less < UrlScraper
33 self.type = 'less'
4− self.version = '1.6.0'
4+ self.version = '1.6.3'
55 self.base_url = 'http://lesscss.org'
6+ self.root_path = '/features'
7+ self.initial_paths = %w(/functions)
68
7− html_filters.push 'less/clean_html', 'less/entries', 'title'
9+ html_filters.push 'less/entries', 'less/clean_html', 'title'
810
9− options[:title] = 'LESS'
10− options[:container] = 'section'
11− options[:skip_links] = true
11+ options[:title] = 'Less'
12+ options[:container] = 'div[role=main]'
13+ options[:follow_links] = false
14+ options[:trailing_slash] = false
1215
1316 options[:attribution] = <<-HTML
14− &copy; 2009&ndash;2014 Alexis Sellier &amp; The Core Less Team<br>
15− Licensed under the Apache License v2.0.
17+ &copy; 2009&ndash;2014 The Core Less Team<br>
18+ Licensed under the Creative Commons Attribution License 3.0.
1619 HTML
1720 end
1821 end