History

Finish Docker scraper

Thibaut Courouble committed 10 years ago

Commit e92d0e11 parent 457439f11 files · +65 −21Browse files

Unified · Split

11 files
  1. assets/images/docs.png +0 −0
  2. assets/images/docs@2x.png +0 −0
  3. assets/javascripts/collections/types.coffee +1 −1
  4. assets/javascripts/news.json +3 −0
  5. assets/javascripts/templates/pages/about_tmpl.coffee +5 −0
  6. assets/stylesheets/global/_icons.scss +1 −0
  7. lib/docs/filters/docker/clean_html.rb +5 −6
  8. lib/docs/filters/docker/entries.rb +44 −8
  9. lib/docs/scrapers/docker.rb +10 −10
  10. public/icons/docs/docker/16.png +0 −0
  11. public/icons/docs/docker/16@2x.png +0 −0
assets/images/docs.png+0−0

Binary file not shown.

assets/images/docs@2x.png+0−0

Binary file not shown.

assets/javascripts/collections/types.coffee+1−1
@@ -7,7 +7,7 @@ class app.collections.Types extends app.Collection · 6 unmodified lines
77 (result[@_groupFor(type)] ||= []).push(type)
88 result.filter (e) -> e.length > 0
99
10− GUIDES_RGX = /(^|[\s\(])(guides?|tutorials?|reference|book|getting\ started|manual)($|[\s\):])/i
10+ GUIDES_RGX = /(^|\()(guides?|tutorials?|reference|book|getting\ started|manual)($|[\):])/i
1111
1212 _groupFor: (type) ->
1313 if GUIDES_RGX.test(type.name)
assets/javascripts/news.json+3−0
@@ -1,5 +1,8 @@
11 [
22 [
3+ "2016-08-07",
4+ "New documentation: <a href=\"/docker/\">Docker</a>"
5+ ], [
36 "2016-07-31",
47 "New documentations: <a href=\"/bootstrap~3/\">Bootstrap 3</a> and <a href=\"/bootstrap~4/\">Bootstrap 4</a>"
58 ], [
assets/javascripts/templates/pages/about_tmpl.coffee+5−0
@@ -179,6 +179,11 @@ credits = [ · 178 unmodified lines
179179 'Django Software Foundation and individual contributors',
180180 'BSD',
181181 'https://raw.githubusercontent.com/django/django/master/LICENSE'
182+ ], [
183+ 'Docker',
184+ '2013-2016 Docker, Inc.<br>Docker and the Docker logo are trademarks of Docker, Inc.',
185+ 'Apache',
186+ 'https://raw.githubusercontent.com/docker/docker/master/LICENSE'
182187 ], [
183188 'Dojo',
184189 '2005-2015 The Dojo Foundation',
assets/stylesheets/global/_icons.scss+1−0
@@ -116,6 +116,7 @@ · 115 unmodified lines
116116 ._icon-socketio:before { background-position: -2rem -6rem; }
117117 ._icon-modernizr:before { background-position: -3rem -6rem; }
118118 ._icon-bower:before { background-position: -4rem -6rem; }
119+._icon-docker:before { background-position: -1rem -7rem; }
119120 ._icon-cakephp:before { background-position: -2rem -7rem; }
120121 ._icon-lua:before { background-position: -3rem -7rem; @extend %darkIconFix !optional; }
121122 ._icon-clojure:before { background-position: -4rem -7rem; }
lib/docs/filters/docker/clean_html.rb+5−6
@@ -3,14 +3,13 @@ module Docs · 2 unmodified lines
33 class CleanHtmlFilter < Filter
44 def call
55 if root_page?
6− @doc = at_css('.tabs-content')
7− else
8− @doc = at_css('#content')
6+ doc.inner_html = "<h1>Docker Documentation</h1>"
7+ return doc
98 end
109
11− if not at_css('h1')
12− at_css('h2').name = 'h1'
13− end
10+ @doc = at_css('#content')
11+
12+ at_css('h2').name = 'h1' unless at_css('h1')
1413
1514 css('pre').each do |node|
1615 node.content = node.content
lib/docs/filters/docker/entries.rb+44−8
@@ -2,20 +2,56 @@ module Docs · 1 unmodified line
22 class Docker
33 class EntriesFilter < Docs::EntriesFilter
44 def get_name
5− title = at_css('h1').content
5+ name = nav_link ? nav_link.content.strip : at_css('#content h1').content.strip
6+ name.capitalize! if name == 'exoscale'
67
7− title = title.split(' — ').first
8− title = title.split(' - ').first
8+ if name =~ /\A[a-z\-\s]+\z/
9+ name.prepend 'docker ' if subpath =~ /engine\/reference\/commandline\/./
10+ name.prepend 'docker-compose ' if subpath =~ /compose\/reference\/./
11+ name.prepend 'docker-machine ' if subpath =~ /machine\/reference\/./
12+ name.prepend 'swarm ' if subpath =~ /swarm\/reference\/./ && name != 'swarm'
13+ else
14+ name << " (#{product})" if name !~ /#{product}/i
15+ end
916
10− title
17+ name
1118 end
1219
1320 def get_type
14− if slug.count('/') == 1 or slug.count('/') == 2
15− slug.split('/').first.capitalize
16− else
17− slug.split('/')[0...-1].map(&:capitalize).join('/').gsub(/\-|\_/, ' ')
21+ unless nav_link
22+ return 'Engine: User guide' if subpath.start_with?('engine/userguide')
23+ return 'Engine: Secure' if subpath.start_with?('engine/security')
24+ return 'Engine' if subpath == 'engine/'
25+ end
26+
27+ type = nav_link.ancestors('article').to_a.reverse.to_a[0..1].map do |node|
28+ node.at_css('> button').content.strip
29+ end.join(': ')
30+
31+ type.remove! %r{\ADocker }
32+ type.remove! %r{ Engine}
33+ type.sub! %r{Command[\-\s]line reference}i, 'CLI'
34+ type = 'Engine: Reference' if type == 'Engine: reference'
35+ type
36+ end
37+
38+ def nav_link
39+ return @nav_link if defined?(@nav_link)
40+ @nav_link = at_css('#multiple .active')
41+
42+ unless @nav_link
43+ link = at_css('#content li a')
44+ return unless link
45+ link = at_css("#multiple a[href='#{link['href']}']")
46+ return unless link
47+ @nav_link = link.ancestors('article').first.at_css('button')
1848 end
49+
50+ @nav_link
51+ end
52+
53+ def product
54+ @product ||= subpath.split('/').first.capitalize
1955 end
2056 end
2157 end
lib/docs/scrapers/docker.rb+10−10
@@ -1,16 +1,14 @@
11 module Docs
22 class Docker < UrlScraper
3− self.name = 'Docker'
4− self.slug = 'docker'
53 self.type = 'docker'
6−
74 self.links = {
85 home: 'https://docker.com/',
96 code: 'https://github.com/docker/docker'
107 }
118
12− html_filters.push 'docker/clean_html', 'docker/entries'
9+ html_filters.push 'docker/entries', 'docker/clean_html'
1310
11+ options[:container] = '#docs'
1412 options[:trailing_slash] = true
1513
1614 options[:only_patterns] = [
@@ -19,14 +17,16 @@ module Docs · 2 unmodified lines
1917 /\Amachine\//,
2018 /\Aswarm\//
2119 ]
22−
23− options[:skip] = [
24− "engine/installation/ubuntulinux/" # invalid document
25− ]
20+ options[:skip] = %w(swarm/scheduler/)
21+ options[:replace_paths] = {
22+ 'engine/installation/ubuntulinux/' => 'engine/installation/linux/ubuntulinux/'
23+ }
2624
2725 options[:attribution] = <<-HTML
28− &copy; 2016 Docker Inc.<br>
29− Licensed under the Apache 2 License.
26+ &copy; 2013&ndash;2016 Docker, Inc.<br>
27+ Licensed under the Apache License, Version 2.0.<br>
28+ Docker and the Docker logo are trademarks or registered trademarks of Docker, Inc. in the United States and/or other countries.<br>
29+ Docker, Inc. and other parties may also have trademark rights in other terms used herein.
3030 HTML
3131
3232 version '1.11' do
public/icons/docs/docker/16.png+0−0

Binary file not shown.

public/icons/docs/docker/16@2x.png+0−0

Binary file not shown.