From b1de8e02842e461271923e450f0dc2985176903d Mon Sep 17 00:00:00 2001 From: Faustino Aguilar Date: Mon, 11 Jul 2016 06:28:33 -0500 Subject: [PATCH] Add Crystal documentation --- assets/javascripts/views/pages/crystal.coffee | 6 +++++ assets/stylesheets/pages/_crystal.scss | 7 ++++++ lib/docs/filters/crystal/clean_html.rb | 20 ++++++++++++++++ lib/docs/filters/crystal/entries.rb | 21 +++++++++++++++++ lib/docs/scrapers/crystal.rb | 22 ++++++++++++++++++ public/icons/docs/crystal/16.png | Bin 0 -> 1116 bytes public/icons/docs/crystal/16@2x.png | Bin 0 -> 734 bytes public/icons/docs/crystal/SOURCE | 1 + 8 files changed, 77 insertions(+) create mode 100644 assets/javascripts/views/pages/crystal.coffee create mode 100644 assets/stylesheets/pages/_crystal.scss create mode 100644 lib/docs/filters/crystal/clean_html.rb create mode 100644 lib/docs/filters/crystal/entries.rb create mode 100644 lib/docs/scrapers/crystal.rb create mode 100644 public/icons/docs/crystal/16.png create mode 100644 public/icons/docs/crystal/16@2x.png create mode 100644 public/icons/docs/crystal/SOURCE diff --git a/assets/javascripts/views/pages/crystal.coffee b/assets/javascripts/views/pages/crystal.coffee new file mode 100644 index 00000000..6c2b42bb --- /dev/null +++ b/assets/javascripts/views/pages/crystal.coffee @@ -0,0 +1,6 @@ +#= require views/pages/base + +class app.views.CrystalPage extends app.views.BasePage + prepare: -> + @highlightCode @findAllByTag('pre'), 'ruby' + return diff --git a/assets/stylesheets/pages/_crystal.scss b/assets/stylesheets/pages/_crystal.scss new file mode 100644 index 00000000..2518d1bb --- /dev/null +++ b/assets/stylesheets/pages/_crystal.scss @@ -0,0 +1,7 @@ +._crystal { + @extend %simple; + + blockquote { + @extend %note; + } +} diff --git a/lib/docs/filters/crystal/clean_html.rb b/lib/docs/filters/crystal/clean_html.rb new file mode 100644 index 00000000..f95aaef1 --- /dev/null +++ b/lib/docs/filters/crystal/clean_html.rb @@ -0,0 +1,20 @@ +module Docs + class Crystal + class CleanHtmlFilter < Filter + def call + + # Remove class attr from div and child nodes + css("div").each do |node| + node.xpath("//@class").remove + end + + # Set id attributes on

instead of an empty + css("h1").each do |node| + node["id"] = node.at_css("a")["id"] + end + + doc + end + end + end +end diff --git a/lib/docs/filters/crystal/entries.rb b/lib/docs/filters/crystal/entries.rb new file mode 100644 index 00000000..a0e36b0c --- /dev/null +++ b/lib/docs/filters/crystal/entries.rb @@ -0,0 +1,21 @@ +module Docs + class Crystal + class EntriesFilter < Docs::EntriesFilter + + # Set the name to h1 content + def get_name + node = at_css("h1") + node.content.strip + end + + # Crystal types from url slug + def get_type + slug["blob/master/"] = "" + object, method = *slug.split("/") + object = object.capitalize + method ? object : "Index" + end + + end + end +end diff --git a/lib/docs/scrapers/crystal.rb b/lib/docs/scrapers/crystal.rb new file mode 100644 index 00000000..b9093d77 --- /dev/null +++ b/lib/docs/scrapers/crystal.rb @@ -0,0 +1,22 @@ +module Docs + class Crystal < UrlScraper + self.name = "Crystal" + self.type = "crystal" + self.base_url = "https://github.com/crystal-lang/crystal-book" + self.initial_paths = %w(/blob/master/SUMMARY.md) + self.links = { + home: "https://crystal-lang.org/", + code: "https://github.com/crystal-lang/crystal" + } + + html_filters.push "crystal/clean_html", "crystal/entries" + + options[:container] = ".entry-content" + options[:only_patterns] = [/\/blob\/master\/.*\.md/] + options[:skip] = %w(/blob/master/README.md) + + options[:attribution] = <<-HTML + CC0 + HTML + end +end diff --git a/public/icons/docs/crystal/16.png b/public/icons/docs/crystal/16.png new file mode 100644 index 0000000000000000000000000000000000000000..5064d31b1af07f95975be73ce1bfb862c8c183a5 GIT binary patch literal 1116 zcmaJ=U1-x<98d4&km&q$BIt`Bh(4+aiXhIDx^6yL11IPF55M2<|9MUf z4en`a?r5ecszn}<@?;MOYh@GpZ~m~Ll5IWC74d#Ff-9;6sf>MjJ?b)g}1~DkXQNv2nZ?9gbfuX190||vwY!Q}? zfoTWspB^k|(_z3*DU19RrIWO}sh!h>(~17kv>cMVB$Q z1(vN;DoiELAZL_~@;uLSF*X*95JbeCvasq!EVr|!AVF7i3>zEB0)e7hLX$W}lSsd( zVA@Nvmb+LcQZUw2Z8pkqK}t2CqWl_anoDRG=izd^KNWThQ#NGt&_$DuMjAKL8Mv|q z(Sa&PP646uS`~-N2qU+QY#@r&s)6kX3`<89cSn_@D1vOcShX}LODUSDFovNETr3gG z=90;%7|%qbxkQFoxlAG_O5NG4C}nG032Boiv~Z29FLQhAa)WU&ZQ@yij&Ts`{SGog zHEqGDA4{UH-Xd48A4^YNE=z)8gXaFw?AjHXpy0SPy2Mx-erS=2cgSeVFaLf`p2b~R z$`rh(rQsVbr)ItNVK!9ao7!in@F(j1KJc~e=Chf(HC@No{7+4+4PWnn=%36uSJHQn zUF5?)dj7yai5e!t1D&0ZW)@bz3Y|H8>{UZbH4Mw&-4AOWy4SmLVZ-DGEtpj?R4zG zI?TmrbPo~V@ly+88mr+@4yVh}Sd4MkR4`yUQ@8 zd+3!sa8#sPV@eTSaia_YA0w##qH~_OJ&oZ-y8mq%0vclS{?6kU+{t<2EXL*njW#CC zs8m$NB>eMkSQL4ltM*hp#gg8!w*ukx82yq02H{zO#V0W&*7d;M3J5rudyDPDehY0l zfx(!G4`q@c%Ki0C*c1U&Xyftl@`f_V4~PBd#hggLVh4OKgZxN5S_`5N9#!}yl$spc z;AjhwAH~45GrA^W%ay2OF=45{jOy?vI=wokqb6fiH{k@f;%O;v)g~f$9=6~-US>$Z zrm?LUI)o!G!LA6SxA9OdW?U_Tsz}7~ScL<)A0HpN*8N{l6Zt+ZMmaV90L&EZUUU&b QfB*mh07*qoM6N<$f{P?hHUIzs literal 0 HcmV?d00001 diff --git a/public/icons/docs/crystal/SOURCE b/public/icons/docs/crystal/SOURCE new file mode 100644 index 00000000..aa9d98c4 --- /dev/null +++ b/public/icons/docs/crystal/SOURCE @@ -0,0 +1 @@ +https://crystal-lang.org/images/favico.ico