From d69f4f6473d6fdcdcca0081f8d86dc8f02720e9f Mon Sep 17 00:00:00 2001 From: Zaven Muradyan Date: Sun, 4 Jun 2017 17:56:54 -0700 Subject: [PATCH] Add Godot documentation. The associated filter categorizes all API docs under a single "API reference" type. I originally had a separate type per class (the godot API docs are organized by class), but that resulted in >300 types. --- lib/docs/filters/godot/clean_html.rb | 11 +++++++++ lib/docs/filters/godot/entries.rb | 35 +++++++++++++++++++++++++++ lib/docs/scrapers/godot.rb | 25 +++++++++++++++++++ public/icons/docs/godot/16.png | Bin 0 -> 1367 bytes public/icons/docs/godot/16@2x.png | Bin 0 -> 2126 bytes public/icons/docs/godot/SOURCE | 1 + 6 files changed, 72 insertions(+) create mode 100644 lib/docs/filters/godot/clean_html.rb create mode 100644 lib/docs/filters/godot/entries.rb create mode 100644 lib/docs/scrapers/godot.rb create mode 100644 public/icons/docs/godot/16.png create mode 100644 public/icons/docs/godot/16@2x.png create mode 100644 public/icons/docs/godot/SOURCE diff --git a/lib/docs/filters/godot/clean_html.rb b/lib/docs/filters/godot/clean_html.rb new file mode 100644 index 00000000..8d9cc7e4 --- /dev/null +++ b/lib/docs/filters/godot/clean_html.rb @@ -0,0 +1,11 @@ +module Docs + class Godot + class CleanHtmlFilter < Filter + def call + @doc = at_css('.document .section') + + doc + end + end + end +end diff --git a/lib/docs/filters/godot/entries.rb b/lib/docs/filters/godot/entries.rb new file mode 100644 index 00000000..5f678a99 --- /dev/null +++ b/lib/docs/filters/godot/entries.rb @@ -0,0 +1,35 @@ +module Docs + class Godot + class EntriesFilter < Docs::EntriesFilter + def get_name + name = at_css('.document h1').content + name.remove! "\u{00B6}" # Remove the pilcrow + name + end + + def get_type + if slug.start_with?('learning') + 'Learning' + else + 'API Reference' + end + end + + def additional_entries + return [] unless slug.start_with?('classes') + class_name = at_css('h1').content + class_name.remove! "\u{00B6}" # Remove the pilcrow + entries = [] + + # Each page represents a class, and class methods are defined in + # individual sections. + css('.simple[id]').each do |node| + fn_name = node.at_css('strong') + entries << [class_name + '.' + fn_name + '()', node['id']] + end + + entries + end + end + end +end diff --git a/lib/docs/scrapers/godot.rb b/lib/docs/scrapers/godot.rb new file mode 100644 index 00000000..34cfc9eb --- /dev/null +++ b/lib/docs/scrapers/godot.rb @@ -0,0 +1,25 @@ +module Docs + class Godot < UrlScraper + self.type = 'sphinx_simple' + self.links = { + home: 'https://godotengine.org/', + code: 'https://github.com/godotengine/godot' + } + + html_filters.push 'godot/entries', 'godot/clean_html', 'sphinx/clean_html' + + # `learning/` contains the guided learning materials, and `classes/` + # contains the API reference. + options[:only_patterns] = [/\Alearning\//, /\Aclasses\//] + + options[:attribution] = <<-HTML + © Copyright 2014–2017, Juan Linietsky, Ariel Manzur and the Godot community (CC-BY 3.0). + HTML + + version '2.1' do + self.release = '2.1' + self.base_url = "http://docs.godotengine.org/en/#{self.version}/" + end + + end +end diff --git a/public/icons/docs/godot/16.png b/public/icons/docs/godot/16.png new file mode 100644 index 0000000000000000000000000000000000000000..bd947c25d1cdaa7a59571bd7eb191bf75a862eec GIT binary patch literal 1367 zcmaJ=XH?Ty6u(3S1Q99~)PkjT)Y@XhZd2LN%WBa8adOGA3(;Kv&RxR(``@g?;*Sq)r-^=y(ax>K5tq%Z( zbQ;+Qr7^OR-X{DmwM#8fXh*qtx&UBfivX*r%6bTpOa%Cu z0YKsdn8jD#J?aENsPp#lqoBjqj9O}ejK&qaaiuh_)G23}#*t_+M@r=?$OTfwZX79P z9k>_DsX6_qq44CCygM4x^Q4J=k*M50RMKB&qH#2)4e8}MF@*XwP(tBI$axa1*)>;; zKts8bl;$Z$rP9A_kli#Hz#l5^UF3-7qXnb1d})$!GOcC0q<8ULhswKHLB$3+5_g^) z^&UJqro{};@}m{$*>=NHH*Vy4E2gF8%l_%&srBDVv}Sh92zsYeg=2`Za{9V|bd9pI zXR<&v>s6!(sZe%_2SP(a@~+hQUme80cs&aqg$i!%Ek-#(7rAR!-H8U%EM$bz>Ht)7xfP z4HM~UCH%wrio`rI}a*4vpK>iQ{`~^r)#`^@T)#?YW*^YQk6WBgp zz9?T@*4(tjB6}^q`bQ??zJOpv*w((b)@@8MJ}fG3{qxavUXNXyi1q7lX}eSlmS$6P z7N*FD=9jI?S62lYYijl5%R7Z@>c{QoCMh$&|1q1sV^09Ddw5t>6lAGWcMRVVXob1E zk?$WgQsYB{Ei5WENuxw2z+PwFpAhJ>>7EqbA9S=$_c=NnSG=b2ONn=hLTQ4$9Ue0K ze!&=hI@!ffZ(d6cfCTXB4pTEN!p>d0H4(5$d$W$Y#h%wK-$;0Kuddz}(BHTJz*~t) z2j5O&AA09qD+4(E9?{w+d41X1**iGG`zfhur_(ixGiT3bWPAXm4>Pl}&tJHB>8r~* zxp__>!N;F)xcLRV!lL4m(ko@oF5vpgpRBg-y*Zt!?cc zG&&q{zkZ{$>*lR)(d|1ucRf78>$6^QpF}E?EBXfphrEx1kMFQ@WOQtNV$$!})b#Ps z!T*bZ8P)8)xo_qJ7Z!tpLtyKdjL@*9<&|&0`#zi*5ork9jEtkAPn?W76&uHje`ULg zc5h@&|08B2_Pw7?@ns;USIp@Cb?{(kT`RAnAT3?2-i?9O#05dl;v1d?{ zAqiFpV^6$FNoN3zHL@}SfF>fxu@?*DF6m=tZv_B&IRGHU1Hcg@L|6fUJE{P%<_Q40 zc>r)4SJ+{PWF#QomX}R{-+xv~chy5igzdJeX()rt41oddaVB5J0UBm*g@RHcU_n{v zgYo?RKXu_aBP@fm|5c6Q;VniP+}y;-(QKeEHzMHiUEu)(%2pJmZh1Us*1z;z%ZFeI z&gwLiM>=qs0yYt}-#<70O;*ca0cjlNs+gYjOds=?5gG9F?)S4T444t>3$T;qyqf0; zZ^4*ZPE8E!6i$Rj%pGhK9k>$4^S#RE7JhwOIMAc)MnzNH=-mEuQz=f3IFPjoGUx1g z{2;I7?Dn2KFuC*1nozCi$`9cgozEs24vfN@$+=Isv`$v;q#Go61htZUNLYe^At&9> zl%p4xCSjwm3UPb^`biMO@oHDo)V*OPTn$^1^m_cp6IPeDgpM;HQGy3kkHWyzaQg4Y z8ZOXRynxUlpRNA=i`*{fGv7=^X%y&iF!ioyX$nHn-EKN0MWnZ^>=$n0`paFwgkg1QdT=ANb-@R%`g z2~%=%V}9Wd!km<&CHV2Xy&4|(+4gkK*83Soa~*%P?lX-~Z7fbzmym8|FEG_zXs%AB zvmMrU3gd+73TES``uy{;!bOTD>Kn^rk72cW9@ejdSC5>tohe+IBm6usF|rn`2>ya$ za;3$W+_x2SYgn00T>H9+oAW>wpAaubD5%24JRTH1Mf=?Lb28*XdfEUHH&07bf~C_Y znSV@vR1O>~v5G>`1f>!_cEE`Z)xNZur(Jhe4jdPu^tCs27e1NNg7i`5gDv*8HSZro zZ@9V)d7K>8?>n`A!`sn$IRrz^)*sB}j~X=lW#B~q!{DP!8v!yuCS z>(}|LR!&|u(lKS%K!PgH^?TF~m42Z_NRp7Su#{Ni)))RNULM~0XJVhSS-yO%t?WW3 zVy-D&4>JgA&%dXbHuBy>;HaNn=~`2^%Y{@%#+fmPoa0dK!jP89wkL0XTys}iyii7MVA|hQ%$y>GgC9$`hPi5k7QwsT@#4@BW~yB z8;9sbzH5+&I`~9~!fsu6{95Lm^h$HkZpFI7vs#Cp&`_&9%T2;syusTQ7v6#NW;Immf#*@0Zh|BRc^6~~)R>OC9Eu0OE zhm@paG4X-7L{eBb?WH)5lxM$Z?7sN!m4EAOfV(?o|A%riiQ(O;M-bj&M2VI~RL?mx z{C1B|Zn>O@r(INf5%ofwYp4`^@7g}^U^R7N)APAo@{c4cnMjy~d_Y+rb+- z^>QBbtY9q;G^K^k3MurEuS6tHcj+C@#7KRWCxyQaS@MJRY<{eqpWL{-XvA9t)&jk~ z+cO9yK+#MYu{{7@Oy-js#;WtV+GZ!QvH{6f3dc=I2zxhIBN4&FgE2%jk@LkV=z%-hxvv!>CLtfQ*Jo!?l$U9b^Cy%l~?)YZ_^Ro75fMd+%k;>XJ)|Hlw`+xLdw{r_*^Ac~O~2EZI;ZBl>9Gxk3kSjjyA literal 0 HcmV?d00001 diff --git a/public/icons/docs/godot/SOURCE b/public/icons/docs/godot/SOURCE new file mode 100644 index 00000000..6cdf24b9 --- /dev/null +++ b/public/icons/docs/godot/SOURCE @@ -0,0 +1 @@ +https://godotengine.org/themes/godotengine/assets/favicon.png