diff --git a/assets/javascripts/views/pages/vue.coffee b/assets/javascripts/views/pages/vue.coffee new file mode 100644 index 00000000..cde197db --- /dev/null +++ b/assets/javascripts/views/pages/vue.coffee @@ -0,0 +1,14 @@ +#= require views/pages/base + +class app.views.VuePage extends app.views.BasePage + afterRender: -> + for el in @findAllByTag('pre') + lang = if el.classList.contains('html') or el.textContent[0] is '<' + 'markup' + else if el.classList.contains('css') + 'css' + else + 'javascript' + el.setAttribute('class', '') + @highlightCode el, lang + return diff --git a/assets/stylesheets/pages/_base.scss b/assets/stylesheets/pages/_base.scss index 59bfaf48..bb4f5666 100644 --- a/assets/stylesheets/pages/_base.scss +++ b/assets/stylesheets/pages/_base.scss @@ -24,7 +24,8 @@ ._markdown, ._mocha, ._mongoose, -._sinon { +._sinon, +._vue { @extend %simple; } diff --git a/lib/docs/filters/vue/clean_html.rb b/lib/docs/filters/vue/clean_html.rb new file mode 100644 index 00000000..357d62ce --- /dev/null +++ b/lib/docs/filters/vue/clean_html.rb @@ -0,0 +1,14 @@ +module Docs + class Vue + class CleanHtmlFilter < Filter + def call + # Remove code highlighting + css('figure').each do |node| + node.name = 'pre' + node.content = node.at_css('td.code pre').css('.line').map(&:content).join("\n") + end + css('.content') + end + end + end +end diff --git a/lib/docs/filters/vue/entries.rb b/lib/docs/filters/vue/entries.rb new file mode 100644 index 00000000..e9bee8ad --- /dev/null +++ b/lib/docs/filters/vue/entries.rb @@ -0,0 +1,18 @@ +module Docs + class Vue + class EntriesFilter < Docs::EntriesFilter + def additional_entries + type = nil + + doc.children.each_with_object [] do |node, entries| + if node.name == 'h1' + type = node.content.strip + elsif node.name == 'h3' + name = node.content.strip + entries << [name, node['id'], type] + end + end + end + end + end +end diff --git a/lib/docs/scrapers/vue.rb b/lib/docs/scrapers/vue.rb new file mode 100644 index 00000000..8e73a5dd --- /dev/null +++ b/lib/docs/scrapers/vue.rb @@ -0,0 +1,19 @@ +module Docs + class Vue < UrlScraper + self.name = 'Vue.js' + self.slug = 'vue' + self.type = 'vue' + self.version = '0.12.5' + self.base_url = 'http://vuejs.org/api/' + + + html_filters.push 'vue/clean_html', 'vue/entries' + options[:follow_links] = ->(filter) { filter.root_page? } + + + options[:attribution] = <<-HTML + © 2014–2015 Evan You, Vue.js contributors
+ Licensed under the MIT License. + HTML + end +end diff --git a/public/icons/docs/vue/16.png b/public/icons/docs/vue/16.png new file mode 100644 index 00000000..82c41419 Binary files /dev/null and b/public/icons/docs/vue/16.png differ diff --git a/public/icons/docs/vue/16@2x.png b/public/icons/docs/vue/16@2x.png new file mode 100644 index 00000000..4307b9d3 Binary files /dev/null and b/public/icons/docs/vue/16@2x.png differ diff --git a/public/icons/docs/vue/SOURCE b/public/icons/docs/vue/SOURCE new file mode 100644 index 00000000..97bd9e03 --- /dev/null +++ b/public/icons/docs/vue/SOURCE @@ -0,0 +1 @@ +http://vuejs.org/