History

Add Dart documentation

Jasper van Merle committed 8 years ago

Commit 0429e071 parent 4e56a7711 files · +185 −-2Browse files

Unified · Split

11 files
  1. assets/javascripts/templates/pages/about_tmpl.coffee +5 −0
  2. assets/javascripts/vendor/prism.js +24 −0
  3. assets/stylesheets/application-dark.css.scss +1 −0
  4. assets/stylesheets/application.css.scss +1 −0
  5. assets/stylesheets/pages/_dart.scss +12 −0
  6. lib/docs/filters/dart/clean_html.rb +51 −0
  7. lib/docs/filters/dart/entries.rb +58 −0
  8. lib/docs/scrapers/dart.rb +34 −0
  9. public/icons/docs/dart/16.png +0 −0
  10. public/icons/docs/dart/16@2x.png +0 −0
  11. public/icons/docs/dart/SOURCE +1 −0
assets/javascripts/templates/pages/about_tmpl.coffee+5−0
@@ -215,6 +215,11 @@ credits = [ · 214 unmodified lines
215 '2010-2018 Michael Bostock',215 '2010-2018 Michael Bostock',
216 'BSD',216 'BSD',
217 'https://raw.githubusercontent.com/d3/d3/master/LICENSE'217 'https://raw.githubusercontent.com/d3/d3/master/LICENSE'
218 ], [
219 'Dart',
220 '2012 the Dart project authors',
221 'CC BY-SA',
222 'https://creativecommons.org/licenses/by-sa/4.0/'
218 ], [223 ], [
219 'Django',224 'Django',
220 'Django Software Foundation and individual contributors',225 'Django Software Foundation and individual contributors',
assets/javascripts/vendor/prism.js+24−0
@@ -2113,3 +2113,27 @@ Prism.languages.yaml = { · 2112 unmodified lines
2113 'punctuation': /---|[:[\]{}\-,|>?]|\.\.\./2113 'punctuation': /---|[:[\]{}\-,|>?]|\.\.\./
2114};2114};
2115 2115
2116Prism.languages.dart = Prism.languages.extend('clike', {
2117 'string': [
2118 {
2119 pattern: /r?("""|''')[\s\S]*?\1/,
2120 greedy: true
2121 },
2122 {
2123 pattern: /r?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,
2124 greedy: true
2125 }
2126 ],
2127 'keyword': [
2128 /\b(?:async|sync|yield)\*/,
2129 /\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|default|deferred|do|dynamic|else|enum|export|external|extends|factory|final|finally|for|get|if|implements|import|in|library|new|null|operator|part|rethrow|return|set|static|super|switch|this|throw|try|typedef|var|void|while|with|yield)\b/
2130 ],
2131 'operator': /\bis!|\b(?:as|is)\b|\+\+|--|&&|\|\||<<=?|>>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?/
2132});
2133
2134Prism.languages.insertBefore('dart','function',{
2135 'metadata': {
2136 pattern: /@\w+/,
2137 alias: 'symbol'
2138 }
2139});
assets/stylesheets/application-dark.css.scss+1−0
@@ -46,6 +46,7 @@ · 45 unmodified lines
46 'pages/crystal',46 'pages/crystal',
47 'pages/d',47 'pages/d',
48 'pages/d3',48 'pages/d3',
49 'pages/dart',
49 'pages/dojo',50 'pages/dojo',
50 'pages/drupal',51 'pages/drupal',
51 'pages/elixir',52 'pages/elixir',
assets/stylesheets/application.css.scss+1−0
@@ -46,6 +46,7 @@ · 45 unmodified lines
46 'pages/crystal',46 'pages/crystal',
47 'pages/d',47 'pages/d',
48 'pages/d3',48 'pages/d3',
49 'pages/dart',
49 'pages/dojo',50 'pages/dojo',
50 'pages/drupal',51 'pages/drupal',
51 'pages/elixir',52 'pages/elixir',
assets/stylesheets/pages/_dart.scss+12−0
@@ -0,0 +1,12 @@
1._dart {
2 @extend %simple;
3
4 dl:not(.dl-horizontal) dt, .multi-line-signature {
5 @extend %note, %note-blue;
6 padding: 1px 0.5rem 2px 0.5rem;
7
8 .features {
9 float: right;
10 }
11 }
12}
lib/docs/filters/dart/clean_html.rb+51−0
@@ -0,0 +1,51 @@
1module Docs
2 class Dart
3 class CleanHtmlFilter < Filter
4 def call
5 # Move the title into the main content node in the v1 docs
6 title = at_css('h1.title')
7 unless title.nil?
8 name = title.children.last.content.strip
9 kind = title.at_css('.kind').content
10 at_css('.main-content').prepend_child("<h1>#{name} #{kind}</h1>")
11 end
12
13 # Add a title to the homepage of the v2 docs
14 if subpath == 'index.html' && at_css('.main-content > h1').nil?
15 at_css('.main-content').prepend_child('<h1>Dart SDK</h1>')
16 end
17
18 # Add the library to the main content (it is not always visible in the menu entry)
19 breadcrumbs = at_css('.breadcrumbs').css('li:not(.self-crumb) > a')
20 if breadcrumbs.length > 1
21 library = breadcrumbs[1].content
22
23 # Generate the link to the homepage of the library
24 with_hypens = library.gsub(/:/, '-')
25 location = "#{'../' * subpath.count('/')}#{with_hypens}/#{with_hypens}-library"
26 link = "<a href=\"#{location}\" class=\"_links-link\">#{library}</span>"
27
28 # Add the link to the main title, just like how the "Homepage" and "Source code" links appear
29 at_css('.main-content').prepend_child("<p class=\"_links\">#{link}</p>")
30 end
31
32 # Extract the actual content
33 # We can't use options[:container] here because the entries filter uses the breadcrumbs node
34 @doc = at_css('.main-content')
35
36 # Move the features (i.e. "read-only, inherited") into the blue header
37 css('.features').each do |node|
38 header = node.xpath('parent::dd/preceding::dt').last
39 header.add_child node unless header.nil?
40 end
41
42 # Make code blocks detectable by Prism
43 css('pre').each do |node|
44 node['data-language'] = 'dart'
45 end
46
47 doc
48 end
49 end
50 end
51end
lib/docs/filters/dart/entries.rb+58−0
@@ -0,0 +1,58 @@
1module Docs
2 class Dart
3 class EntriesFilter < Docs::EntriesFilter
4 def get_name
5 title = get_title
6 kind = get_kind
7
8 breadcrumbs = at_css('.breadcrumbs').css('li:not(.self-crumb) > a')
9 first_part = ''
10
11 if breadcrumbs.length == 2 && !kind.include?('class')
12 first_part = breadcrumbs[1].content
13 elsif breadcrumbs.length == 3
14 first_part = breadcrumbs[2].content
15 end
16
17 separator = ''
18 unless first_part.empty?
19 if kind.include?('class')
20 separator = ':'
21 else
22 separator = '.'
23 end
24 end
25
26 first_part + separator + title
27 end
28
29 def get_type
30 at_css('.breadcrumbs > li:nth-child(2)').content.split(' ')[0]
31 end
32
33 def get_title
34 title = at_css('h1.title')
35
36 if not title.nil?
37 # v1
38 title.children.last.content.strip
39 else
40 # v2
41 at_css('.main-content > h1').content[/(.*)( )/, 1].split(' top-level')[0]
42 end
43 end
44
45 def get_kind
46 title = at_css('h1.title')
47
48 if not title.nil?
49 # v1
50 title.at_css('.kind').content
51 else
52 # v2
53 at_css('.main-content > h1').content[/(.*)( )(.+)/, 3]
54 end
55 end
56 end
57 end
58end
lib/docs/scrapers/dart.rb+34−0
@@ -0,0 +1,34 @@
1module Docs
2 class Dart < FileScraper
3 self.type = 'dart'
4 self.root_path = 'index.html'
5 self.links = {
6 home: 'https://www.dartlang.org/',
7 code: 'https://github.com/dart-lang/sdk'
8 }
9
10 html_filters.push 'dart/entries', 'dart/clean_html'
11
12 options[:fix_urls] = ->(url) do
13 # localhost/dart-web_audio/..dart-io/dart-io-library.html > localhost/dart-io/dart-io-library.html
14 url.sub(/(([^\/]+)\/\.\.)/, '')
15 end
16
17 options[:attribution] = <<-HTML
18 &copy; 2012, the Dart project authors<br>
19 Licensed under the Creative Commons Attribution-ShareAlike License v4.0.
20 HTML
21
22 # Download the documentation from https://www.dartlang.org/tools/sdk/archive
23
24 version '1' do
25 self.release = '1.24.3'
26 self.dir = '/home/jasper/Documents/dart-docs-1.24.3'
27 end
28
29 version '2' do
30 self.release = '2.0.0-dev.68.0'
31 self.dir = '/home/jasper/Documents/dart-docs-2.0.0-dev.68.0'
32 end
33 end
34end
public/icons/docs/dart/16.png+0−0

Binary file not shown.

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

Binary file not shown.

public/icons/docs/dart/SOURCE+1−0
@@ -0,0 +1 @@
1https://github.com/dart-lang/logos

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t