From 905d6cee9e3e1c9737088f7fb4da53d1c28453ad Mon Sep 17 00:00:00 2001 From: Thibaut Courouble Date: Sun, 27 Mar 2016 18:13:34 -0400 Subject: [PATCH] Add TypeScript documentation --- assets/images/icons.png | Bin 41883 -> 42244 bytes assets/images/icons@2x.png | Bin 108379 -> 109118 bytes assets/javascripts/news.json | 3 ++ .../templates/pages/about_tmpl.coffee | 5 +++ assets/javascripts/vendor/prism.js | 15 +++++-- assets/javascripts/views/pages/simple.coffee | 10 +++++ assets/stylesheets/global/_icons.scss | 1 + assets/stylesheets/pages/_base.scss | 1 + lib/docs/filters/typescript/clean_html.rb | 27 +++++++++++++ lib/docs/filters/typescript/entries.rb | 37 ++++++++++++++++++ lib/docs/scrapers/typescript.rb | 29 ++++++++++++++ public/icons/docs/typescript/16.png | Bin 0 -> 403 bytes public/icons/docs/typescript/16@2x.png | Bin 0 -> 734 bytes public/icons/docs/typescript/SOURCE | 1 + 14 files changed, 126 insertions(+), 3 deletions(-) create mode 100644 assets/javascripts/views/pages/simple.coffee create mode 100644 lib/docs/filters/typescript/clean_html.rb create mode 100644 lib/docs/filters/typescript/entries.rb create mode 100644 lib/docs/scrapers/typescript.rb create mode 100644 public/icons/docs/typescript/16.png create mode 100644 public/icons/docs/typescript/16@2x.png create mode 100644 public/icons/docs/typescript/SOURCE diff --git a/assets/images/icons.png b/assets/images/icons.png index 41d823f26ca9af90392fb467f3d775e188934588..686cd5b5a19a10ae169b5305e6d4c3d27cde6d52 100644 GIT binary patch delta 12371 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 FV1k9p_D}!- delta 12008 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 P00000NkvXXu0mjfxJL26 diff --git a/assets/javascripts/news.json b/assets/javascripts/news.json index 34b282fe..8b87ccef 100644 --- a/assets/javascripts/news.json +++ b/assets/javascripts/news.json @@ -1,5 +1,8 @@ [ [ + "2016-03-27", + "New documentation: TypeScript" + ], [ "2016-03-06", "New documentation: TensorFlow, Haxe and Ansible" ], [ diff --git a/assets/javascripts/templates/pages/about_tmpl.coffee b/assets/javascripts/templates/pages/about_tmpl.coffee index 5d0ecf7e..0fdda22f 100644 --- a/assets/javascripts/templates/pages/about_tmpl.coffee +++ b/assets/javascripts/templates/pages/about_tmpl.coffee @@ -439,6 +439,11 @@ credits = [ '2015 The TensorFlow Authors', 'Apache', 'https://raw.githubusercontent.com/tensorflow/tensorflow/master/LICENSE' + ], [ + 'TypeScript', + 'Microsoft and other contributors', + 'Apache', + 'https://raw.githubusercontent.com/Microsoft/TypeScript-Handbook/master/LICENSE' ], [ 'Underscore.js', '2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors', diff --git a/assets/javascripts/vendor/prism.js b/assets/javascripts/vendor/prism.js index 5e247a48..b41bcb98 100644 --- a/assets/javascripts/vendor/prism.js +++ b/assets/javascripts/vendor/prism.js @@ -1,4 +1,4 @@ -/* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript+c+cpp+coffeescript+ruby+elixir+go+lua+nginx+php+python+rust */ +/* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript+c+cpp+coffeescript+ruby+elixir+go+lua+nginx+php+python+rust+typescript */ var _self = (typeof window !== 'undefined') ? window // if in browser : ( @@ -328,6 +328,9 @@ var _ = _self.Prism = { delNum = 3; if (to <= len) { + if (strarr[i + 1].greedy) { + continue; + } delNum = 2; combStr = combStr.slice(0, len); } @@ -354,7 +357,7 @@ var _ = _self.Prism = { args.push(before); } - var wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match); + var wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy); args.push(wrapped); @@ -395,12 +398,13 @@ var _ = _self.Prism = { } }; -var Token = _.Token = function(type, content, alias, matchedStr) { +var Token = _.Token = function(type, content, alias, matchedStr, greedy) { this.type = type; this.content = content; this.alias = alias; // Copy of the full string this token was created from this.matchedStr = matchedStr || null; + this.greedy = !!greedy; }; Token.stringify = function(o, language, parent) { @@ -633,6 +637,7 @@ Prism.languages.insertBefore('javascript', 'keyword', { Prism.languages.insertBefore('javascript', 'class-name', { 'template-string': { pattern: /`(?:\\\\|\\?[^\\])*?`/, + greedy: true, inside: { 'interpolation': { pattern: /\$\{[^}]+\}/, @@ -1218,3 +1223,7 @@ Prism.languages.rust = { 'punctuation': /[{}[\];(),:]|\.+|->/, 'operator': /[-+*\/%!^=]=?|@|&[&=]?|\|[|=]?|<>?=?/ }; +Prism.languages.typescript = Prism.languages.extend('javascript', { + 'keyword': /\b(break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|get|if|implements|import|in|instanceof|interface|let|new|null|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield|module|declare|constructor|string|Function|any|number|boolean|Array|enum)\b/ +}); + diff --git a/assets/javascripts/views/pages/simple.coffee b/assets/javascripts/views/pages/simple.coffee new file mode 100644 index 00000000..058a2386 --- /dev/null +++ b/assets/javascripts/views/pages/simple.coffee @@ -0,0 +1,10 @@ +#= require views/pages/base + +class app.views.SimplePage extends app.views.BasePage + prepare: -> + for el in @findAllByTag('pre') when el.hasAttribute('data-language') + @highlightCode el, el.getAttribute('data-language') + return + +app.views.TypescriptPage = +app.views.SimplePage diff --git a/assets/stylesheets/global/_icons.scss b/assets/stylesheets/global/_icons.scss index 36ebc702..26f44b8c 100644 --- a/assets/stylesheets/global/_icons.scss +++ b/assets/stylesheets/global/_icons.scss @@ -132,3 +132,4 @@ ._icon-tensorflow:before { background-position: -6rem -10rem; } ._icon-haxe:before { background-position: -7rem -10rem; } ._icon-ansible:before { background-position: -8rem -10rem; @extend %darkIconFix !optional; } +._icon-typescript:before { background-position: -9rem -10rem; } diff --git a/assets/stylesheets/pages/_base.scss b/assets/stylesheets/pages/_base.scss index 2f5056c6..7e813832 100644 --- a/assets/stylesheets/pages/_base.scss +++ b/assets/stylesheets/pages/_base.scss @@ -27,6 +27,7 @@ ._mocha, ._mongoose, ._sinon, +._typescript, ._webpack { @extend %simple; } diff --git a/lib/docs/filters/typescript/clean_html.rb b/lib/docs/filters/typescript/clean_html.rb new file mode 100644 index 00000000..62894512 --- /dev/null +++ b/lib/docs/filters/typescript/clean_html.rb @@ -0,0 +1,27 @@ +module Docs + class Typescript + class CleanHtmlFilter < Filter + def call + @doc = at_css('.doc-content-container') + + css('.xs-toc-container').remove + + css('article h1').each do |node| + node.name = 'h2' + end + + css('> header', '> article').each do |node| + node.before(node.children).remove + end + + css('pre > code').each do |node| + node.parent['data-language'] = node['class'].sub('ts', 'typescript').sub('js', 'javascript').remove('language-') + node.content = node.content.gsub(' ', ' ') + node.before(node.children).remove + end + + doc + end + end + end +end diff --git a/lib/docs/filters/typescript/entries.rb b/lib/docs/filters/typescript/entries.rb new file mode 100644 index 00000000..d3422ff2 --- /dev/null +++ b/lib/docs/filters/typescript/entries.rb @@ -0,0 +1,37 @@ +module Docs + class Typescript + class EntriesFilter < Docs::EntriesFilter + def get_name + name = at_css('h1').content + name.sub! ' and ', ' & ' + name + end + + def get_type + type = at_css('#main-nav a.active').ancestors('.panel').first.at_css('> a').content + type = name if type == 'Handbook' + type + end + + SKIP_ENTRIES = ['Introduction', 'A note', 'A Note', ', and', 'Techniques', ' Concepts', 'Hello World', 'Working with', 'Our ', 'Implementing ', 'Difference between', 'Basic', 'sample', 'Questions', 'Example', 'Export as close', 'Red Flags', 'First steps', 'Pitfalls', 'Well-known', 'Starting out', 'Comparing ', 'Do not', 'Trade-off', ' vs'] + + def additional_entries + return [] unless slug.start_with?('handbook') + return [] if slug == 'handbook/writing-definition-files' + + css('h1, h2').each_with_object [] do |node, entries| + next if node.next_element.try(:name) == 'h2' + name = node.content.strip + next if name.length > 40 + next if name == self.name || SKIP_ENTRIES.any? { |str| name.include?(str) } + name.remove! %r{\A#{self.name.remove(/s\z/)}s? } + name.sub! 'for..of', 'for...of' + name.remove! 'Symbol.' + name.remove! '/// ' + name.prepend "#{self.name}: " + entries << [name, node['id']] + end + end + end + end +end diff --git a/lib/docs/scrapers/typescript.rb b/lib/docs/scrapers/typescript.rb new file mode 100644 index 00000000..4e79bc8b --- /dev/null +++ b/lib/docs/scrapers/typescript.rb @@ -0,0 +1,29 @@ +module Docs + class Typescript < UrlScraper + self.name = 'TypeScript' + self.type = 'typescript' + self.release = '1.8' + self.base_url = 'https://www.typescriptlang.org/docs/' + self.root_path = 'tutorial.html' + self.links = { + home: 'https://www.typescriptlang.org', + code: 'https://github.com/Microsoft/TypeScript' + } + + html_filters.push 'typescript/entries', 'typescript/clean_html' + + options[:container] = '#content' + options[:skip_link] = ->(node) { node.parent.parent['class'] == 'dropdown-menu' } + options[:fix_urls] = ->(url) { + url.sub!(/(\w+)\.md/) { "#{$1.downcase}.html" } + url + } + + options[:attribution] = <<-HTML + © Microsoft and other contributors
+ Licensed under the Apache License, Version 2.0. + HTML + end +end + + diff --git a/public/icons/docs/typescript/16.png b/public/icons/docs/typescript/16.png new file mode 100644 index 0000000000000000000000000000000000000000..66526f5e89ed85e237109821b845937e350440cc GIT binary patch literal 403 zcmV;E0c`$>P)=LH`hnGPA zw{K6#o5S0f!Y;O`^Cy7NL>G`|UKKAAU~gdviWZ1}2~ePwDHQ7bCSOeFiRwL3i$8Yr zi*xYo=Lb@k#vReRBg`i{(*FsSD`@z-g8fYA2*%}(F!`Zo{H9W@_gnq3rTd!2`|8PC z%G_Ce>kcPg){~Lc9(pKs<;}cmp$Sy3$QNs>RX%28G+Rw$=m~*AGhxS xkUNKWu!PMF0SVNfUu$Ox;g4lYui^J#$pYp7f(^`rcH#g4002ovPDHLkV1kLyy-EN8 literal 0 HcmV?d00001 diff --git a/public/icons/docs/typescript/16@2x.png b/public/icons/docs/typescript/16@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d2a809599babfd4de0bfae27a5c2a1723ed02e12 GIT binary patch literal 734 zcmV<40wMj0P)IN_QGWM*oXWZzX)U%f;NJmqva3w~a%ZT_5t15wkEGVI z=fp5eQoz6?ymDtamGOBfvGhK`eIm2Q63K?%`A-U9W~6{V2f5#iT=|wjt~pR(4FsbJ zOtboqDYYZ?t;qSK*i~!~M&ro^WB^ptEsSpaI6d}PXvk5% zQ0K)$Cw^(W?ya=LPKb0qv_t6;Cj>3GGh6Lo_CL&<_qbrn6&d*wp*Ept?RTJG*3i7hj)%Uf+@!n~;ha1uk0@tI|Abm8L($M1^FqfQ8rK?Q&e z+Tf%7Yh0tbw%Eq3*>-Y3hSw))TO{+Q0YGa84+5Vn QQ~&?~07*qoM6N<$f`1!gr2qf` literal 0 HcmV?d00001 diff --git a/public/icons/docs/typescript/SOURCE b/public/icons/docs/typescript/SOURCE new file mode 100644 index 00000000..490c0b58 --- /dev/null +++ b/public/icons/docs/typescript/SOURCE @@ -0,0 +1 @@ +https://github.com/remojansen/logo.ts