From 032457e52798f0019e279e16dbd96d35ac296c7f Mon Sep 17 00:00:00 2001 From: Thibaut Date: Sun, 16 Feb 2014 16:37:04 -0500 Subject: [PATCH] Add Moment.js documentation --- assets/images/icons.png | Bin 14979 -> 15182 bytes assets/images/icons@2x.png | Bin 39742 -> 40176 bytes .../templates/pages/about_tmpl.coffee | 5 ++ .../templates/pages/news_tmpl.coffee | 5 +- assets/javascripts/views/pages/moment.coffee | 6 +++ assets/stylesheets/application.css.scss | 1 + assets/stylesheets/global/_icons.scss | 1 + assets/stylesheets/pages/_moment.scss | 7 +++ lib/docs/filters/moment/clean_html.rb | 26 ++++++++++ lib/docs/filters/moment/entries.rb | 46 ++++++++++++++++++ lib/docs/scrapers/moment.rb | 20 ++++++++ public/icons/docs/moment/16.png | Bin 0 -> 230 bytes public/icons/docs/moment/16@2x.png | Bin 0 -> 469 bytes 13 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 assets/javascripts/views/pages/moment.coffee create mode 100644 assets/stylesheets/pages/_moment.scss create mode 100644 lib/docs/filters/moment/clean_html.rb create mode 100644 lib/docs/filters/moment/entries.rb create mode 100644 lib/docs/scrapers/moment.rb create mode 100644 public/icons/docs/moment/16.png create mode 100644 public/icons/docs/moment/16@2x.png diff --git a/assets/images/icons.png b/assets/images/icons.png index e6c3318bd5929c64eabbbd57803daed9118503aa..f87d15eab02ca4289dc1e2b282cc73be905e17a3 100644 GIT binary patch delta 5450 zcmV-Q6}9SvbBLX`Wu_YHKe^3?K*2V9bagdy|3Yf_PqJRP-5)^Zo(GgV4K64Hr zh(tk25+sOZQBXw8U{1&wa7-9b7!bukzG;2C`w4?0qf_rqy&CIVRjcmp?$iJLYVWgm zpL@HT2S%qK?{632$}2S!{|f-yK>92Do&zf269(;nw1r zc(Hm4N@iFHQdK1QVFWN-yc2>5V05>RNaS$Bw^Iry^rgP^NT zo;Cw919TD9XCNZA2OwwG1l)>WjcBV8LJonu)(miA_97PG!Qw4wR`l&-?E+kLvsCGS z4e&!|V*dI53c>*Kj)Lt3f5@NqXPD@t&}AyF8umhghBz*1%L&uuM0i1>9T6bj6+RN( z_z4|<04*tbd#Me?u0BR6Sh*T^;uD(TwE)bpb41E;YsBdqVDCUZMEBD{%pg7d8nYQO z*29?y%&2b$xHbQ07U1>LSTJhjy~W1D*Ix#BqqdYo`d- z=B-;VxV2%m;JBQGFo)7LSGF6DNq0r6WEY;lSXbc=2@&{7cIEHy(g8^wI;~>^FBipBuI*eFx#p>KTZ)vlepL2UgDtlF$xv z?`3<$9*m=}S>g0Oe+wkv9QP*$q;?;N^mopIZ2`6&SLQtQCa>@kULQ{7zt7JRye~LL zZHg>^Zx@a*NvaD!MXZA$Q~U>Enpg+EA4Q&@Bm=Os-~dJ9*&aX6@=_fLpWZYN+KvLB zfPE5yd_K-^-hyMUbC6`p78n9)jQwWR=6KDyItcet^hJnv z!0sL$1tH`;Jvs_^igywEOLc{>WG7*!Yn4no?Oa_sP~FU(iik%~9pndwKqwHf&{|B}WLxj{f3KIvJe+oPl`j`Hrm$N)P3RdnG6_t%smkEqe zmAseqj)8UifGyu8huigYdcvc?xvg*z9IxcrG-EXH-QuZqJ zc1dYq*}D&`D&E!2P07uFkaqlhWl343e+K|*4ykVGc+~%E9JhA)*r#=?#w0W>cQEIW z&W>|hTQJ^Hcz%i#E=_a9)fo=BG0UOu=4^*^MRVvtNxcC=FdT~GU$(tc`bf6sf$ z7L@i?4J;d=HuQ#}Quj}O!=Urt*VIhinRc|%biOYPT|F_x)eF1#AK~rTfAF>OJa6c` zc*1nfb}ZVNfY4(XVKm1RW^UUNoSaw5<#G+`mW@O0im@Pgs9!@~=R~$ohMQCOb5k6q zUYX`7{5L#%+?;KXTW53ZWda);sUVAhrkb|5S#AA@IYhvA$+e{ui}=F+jb zL2y{+hg}CwVz8?>2D|v;z^RKx&G72hIH7K>BkI;Wpnju0>Nne6!0ypqFaPWia-HB6 z&0*o8c)@7=w%862|1}CvmW^(EDQms`gg2$`E{n}ab`9HjaF@v%79I?iCO~)5-r7Hf zH=LuuL|&t#Tve@|q)wx~f6Tlld)Z@u1`)&cG+y>oT~J{>Ag5}9OKpSKCRDFohG*kP z3(Hq6<-f~Jfi*p_$0G%Ll2%QC2-qnS3B*je_!iV(6G*dU%zoQ z>NnY;e#d%Emym(x7|i>D_$@v;@+ZBH4MCx6}EV`%H||J?=`opoqzsP zTc6Xg_Bu|fdlVL%voUnTL6|b|Rwl#XU;Ci9I2MBzMAf2l;VCjuG4Cwk*12`$eUi2g za(9}K(f)_+L3}t!f8%aNA7xbAS%O=98v-!v7(D*(8&(K!b>`rnvLuSMlyS0`f-q8E zl47>6$2I?ZXN`t_rS)^D^cW#Bb<*rL(He}>n%$*OnjF^`woZe-!D zw#AFJqpCP|0R_L%ya$RrDjK=4*m9VP1_Ljh=Didcvhd=dvmhFS<`KXOw-Wq52Pm5X zJaHJ)D)Lx(Eq0J=thJFJ!~(RJUe{haXR1hXbJS#oS2b1mkIjvQFUHy7nWHscES-n9 zsY!U3m5C>#e@EcA-U_(ezb9_@Rl~X7iu`nCDSncYMAgv?*NO~X16Y8%b9W;6@CA%q zuobH#G7x&?G>m2kkV9Zjb7aKfQ<$}VH@2sprZo1!^U60{IG?G0qpewkhmEjd+ekEc zTBBjRmHQ_ES6D|sTSM^HjYQdcs}~$wpECtEEWBd`fA0u}QpKe=CV+*vERlsbh=Dgh ziX6EO<+EPn3rw@isgdkNT?OmbNO+Pzt9gOCerCLU2+;9u$e$kISo~jA#22 zyj{?ve{>BvkdGm5elVE56Klf`V8mQs=+hiHWcD_M9K8U$<$>6gkb?z&d+PwGaK50% zZ8k?6ysXjaO#r6o&{2fNbq ze{inoVLGQBHF(;%H*6n)#vNooizh5V|6#@T{==%v)>%C*-)N0jo2`YfHrwcPtUUAh zEIg{XL#SPu9US9HbKD6sSXayk%3Xk$(}B_np!@=!j07HA01pR)>Gi$_ko|5aH;O~z zI!NtlIZo$N8dhg0OA!o3Ap_+m!8uORf0aZK8JO`(l1NpNLVj;W-07>1!aiy^sv##x zrTxi@lJ~2t-%kxp&Leoi(5Dm*p!Bp|;tLb1w0n-8gRbjNDj5EBJPc;@gOGOSGLB!k z)>v1^HE0*0mz5_A&v!W4@;*Ba1r9523N}MSkZD!rR;w4UJ*@D4+Xxd5^?E1Ge>Y{b zy&k=z<1s219c+R3`&^)GCfKMeWuk60P+|oWVHGmXt^-T`a z*PD+qY0ng%LT%M^r+X@3pOU07k)Y(N%b}1!-X@>dRKi6qWft5OiqL~9GKg1{K$?n_ z@UoVYu(+S<6#$~wi|^kUGRGTwe^g9HE%ih0m0Pbpqto7oW#wTowKm3VAqjy2MQBj^ zQ9Lg#jo|!=2;Ol5hem%3GzJVi!UEi7meCY!dW#!sg2vs(uikl$`2D@NWj4or)4{n6 zynnYV`;!RVD^xB3%3TTGPXulv@XQH#VoUIts51fX>j1@?9=Js}%zHRQ`z~uK3yS)v z@h{Q-Q|hwdklxqU+IhtuerrI5A?f(V{I@kVmUkaNec+#ziOFmBz>uo5?mUV_I-Yvs zGPVTAeaOl^d8w+Z+Tn9}f82Nj!=@O+=S>0T^)&B+7i_-eljGroL%HEbAdnTceirvQ z1KiWQ&}($;!&!S#O`c0$)RU8G`{#+GrGIopsM=a zycZP}OJ{l{Lf0*XBG4a}^Mg_KwrM4hGB}oDKQih7;+C!S+y}x-ugUi)* z@!CfPB#;GYf4?FU)pYIr3BY(=aO3pJ251G3JoF6C4)4?yVZNOgVZ!G|P}=S>#2@f< z!H?_b+!o*yTYr=c2OgRdJY5zZ>td}EJm@`zL;9-_S$Nbhwzmp1iCIi&r2`s0`lcyM ztvsM2nMcsF(v_uWomEnjX?;#Qo%6L9E(7SYYIkBIfAxgy)ryN}3~Fi`K3Qcacm#vM z#2S%}!DHaXm`1^Uc(4rxe8v|hPkkN*YbUH!GxZjm3RZ3@SwJC8FzKhBRgd91kV6tg4O_^KHvhnl98t%Ov?5zx%oyx(c1DDge-jcXj7JK=Wt=*30+ML#{xOb79q){^ z3FDA9&KaCP)R`Pk7LY;alZ!u^-|7wj;q2J&Md5a%5Nd0SP&+#u_w~W!3l~sYRD{ck ziHKt&($N74W1J921q|p9EdpjiAk47taC&?g}lE-}dPzUzA1Nj*l%-HV+ ze`2tOIf5)LQFQ1KKG*$Irw}&M1|c-&48dc5rE09HK_aC%{WA&i)+3q$hLb_gCX2V7 z-dfaye2@(GobN$9baartaU&R&-o1;E88Z;OY#F%BFH-N{BhbbMSsT`aN860E)~|=Z zu@ORt4Z$8W6MUT41mx0YcmpEp5O(PfWZ;C6L3V1lz_yhG8Ej$sr)!gnG9H~f z2S#D8u9zt$jpR+6z^J0+F>2ntfq>6P2EkjQu8IxXn(*kO32*IQ2+-__j}?|re-`<6 zfb3X4d+tA7YsAHI)YB7;8ft10;^Kmm!a|T*o>!IO;f@7zGFYLij8$qXSgWp#&1y>U zQ&GgnHl_GaTf8r;m_7HOE>}rOEL2uT9`lH~)Ko++TnHYeYw`K>xOm_I7)7|w!hA_F zELW7rDkV9rATLpr#bPGii~{G)!&d717~RM@ zf?uR0;36-JU&zzsWiUlf8b8TMw@Tsm?;rcFQ`kjD1~bW1BqXrN$Ov^*d8^9HF;PFUi1=A^&XGn;_RfbYuNxpR(^O7vV`MSi(rQb~( zvrlwpUP(xQ<$uyC;w1 zb3HA*fem!*3zu>)Kc;i{&*nTQa_M(>DYsou2VP`PT^)Fkw~{xLw~*awzc)3@{uV>A zf5}3mtX_fSRm<7W;IWR_raSQe7ZdzVOn&wsVgkl~rY7(u`!Hs|6 A+5i9m delta 5245 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 D!a6Nd diff --git a/assets/images/icons@2x.png b/assets/images/icons@2x.png index 330d08589d30d280b2da1e07b2686f557476a93d..1728d3e4c068c730698b4c709acb7058cea9c00a 100644 GIT binary patch delta 9664 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.js is a trademark of Joyent, Inc.', diff --git a/assets/javascripts/templates/pages/news_tmpl.coffee b/assets/javascripts/templates/pages/news_tmpl.coffee index 8e284a18..a767f935 100644 --- a/assets/javascripts/templates/pages/news_tmpl.coffee +++ b/assets/javascripts/templates/pages/news_tmpl.coffee @@ -24,7 +24,10 @@ newsItem = (date, news) -> result app.news = [ - [ 1392163200000, # February 12, 2013 + [ 1392508800000, # February 16, 2013 + """ New Moment.js documentation """, + ], [ + 1392163200000, # February 12, 2013 """ The root/category pages are now included in the search index (e.g. CSS) """, ], [ 1390694400000, # January 26, 2013 diff --git a/assets/javascripts/views/pages/moment.coffee b/assets/javascripts/views/pages/moment.coffee new file mode 100644 index 00000000..c7e94d2e --- /dev/null +++ b/assets/javascripts/views/pages/moment.coffee @@ -0,0 +1,6 @@ +#= require views/pages/base + +class app.views.MomentPage extends app.views.BasePage + afterRender: -> + @highlightCode @findAll('pre'), 'javascript' + return diff --git a/assets/stylesheets/application.css.scss b/assets/stylesheets/application.css.scss index de05a2e0..9baf4415 100644 --- a/assets/stylesheets/application.css.scss +++ b/assets/stylesheets/application.css.scss @@ -37,6 +37,7 @@ 'pages/less', 'pages/lodash', 'pages/mdn', + 'pages/moment', 'pages/node', 'pages/php', 'pages/postgres', diff --git a/assets/stylesheets/global/_icons.scss b/assets/stylesheets/global/_icons.scss index a1f490f2..8d8df115 100644 --- a/assets/stylesheets/global/_icons.scss +++ b/assets/stylesheets/global/_icons.scss @@ -47,3 +47,4 @@ ._icon-postgresql:before { background-position: -3rem -6rem; } ._icon-d3:before { background-position: -4rem -6rem; } ._icon-knockout:before { background-position: 0 -7rem; } +._icon-moment:before { background-position: -1rem -7rem; } diff --git a/assets/stylesheets/pages/_moment.scss b/assets/stylesheets/pages/_moment.scss new file mode 100644 index 00000000..eb5eb399 --- /dev/null +++ b/assets/stylesheets/pages/_moment.scss @@ -0,0 +1,7 @@ +._moment { + > h2 { @extend %block-heading; } + > h3 { @extend %block-label, %label-blue; } + > h3 > span { float: right;} + h4 { font-size: 1em; } + code { @extend %label; } +} diff --git a/lib/docs/filters/moment/clean_html.rb b/lib/docs/filters/moment/clean_html.rb new file mode 100644 index 00000000..5330bcc6 --- /dev/null +++ b/lib/docs/filters/moment/clean_html.rb @@ -0,0 +1,26 @@ +module Docs + class Moment + class CleanHtmlFilter < Filter + def call + # Set id attributes on headings + css('a.target').each do |node| + node.next_element['id'] = node['name'].sub(/\A\//, '').sub(/\/\z/, '').gsub('/', '-') + end + + css('> article', '.prose', 'h2 > a', 'h3 > a', 'pre > code').each do |node| + node.before(node.children).remove + end + + # Remove introduction + doc.child.remove while doc.child['id'] != 'parsing' + + # Remove plugin list + doc.children.last.remove while doc.children.last['id'] != 'plugins' + + css('.hash', '#plugins').remove + + doc + end + end + end +end diff --git a/lib/docs/filters/moment/entries.rb b/lib/docs/filters/moment/entries.rb new file mode 100644 index 00000000..09a4fea8 --- /dev/null +++ b/lib/docs/filters/moment/entries.rb @@ -0,0 +1,46 @@ +module Docs + class Moment + class EntriesFilter < Docs::EntriesFilter + IGNORE_IDS = %w( + i18n-loading-into-nodejs + i18n-loading-into-browser + i18n-adding-language + i18n-getting-language) + + def additional_entries + entries = [] + type = nil + + css('[id]').each do |node| + if node.name == 'h2' + type = node.content + next + end + + next if IGNORE_IDS.include?(node['id']) + + if node['id'] == 'utilities-invalid' # bug fix + name = 'moment.invalid()' + elsif %w(Display Durations Get\ +\ Set i18n Manipulate Query Utilities).include?(type) || + %w(parsing-is-valid parsing-parse-zone parsing-unix-timestamp parsing-utc).include?(node['id']) + name = node.next_element.content[/moment(?:\(.*?\))?\.(?:duration\(\)\.)?\w+/] + name.sub! %r{\(.*?\)\.}, '#' + name << '()' + elsif type == 'Customize' + name = node.next_element.content[/moment.lang\(.+?\{\s+(\w+)/, 1] + name.prepend 'Language#' + else + name = node.content.strip + name.sub! %r{\s[\d\.]+\z}, '' # remove version number + name.sub! %r{\s\(.+\)\z}, '' # remove parenthesis + name.prepend 'Parse: ' if type == 'Parse' + end + + entries << [name, node['id'], type] + end + + entries + end + end + end +end diff --git a/lib/docs/scrapers/moment.rb b/lib/docs/scrapers/moment.rb new file mode 100644 index 00000000..9f4308c7 --- /dev/null +++ b/lib/docs/scrapers/moment.rb @@ -0,0 +1,20 @@ +module Docs + class Moment < UrlScraper + self.name = 'Moment.js' + self.slug = 'moment' + self.type = 'moment' + self.version = '2.5.1' + self.base_url = 'http://momentjs.com/docs/' + + html_filters.push 'moment/clean_html', 'moment/entries', 'title' + + options[:title] = 'Moment.js' + options[:container] = '.docs' + options[:skip_links] = true + + options[:attribution] = <<-HTML + © 2011–2014 Tim Wood, Iskren Chernev, Moment.js contributors
+ Licensed under the MIT License. + HTML + end +end diff --git a/public/icons/docs/moment/16.png b/public/icons/docs/moment/16.png new file mode 100644 index 0000000000000000000000000000000000000000..875dcf5d0547b7bfb4b8bfb1545f5a8fb95f1600 GIT binary patch literal 230 zcmV1p=5Juszhzc2ua+5uXv3)u19wU&D&gT%QG{Q$vsb$i6K?w5N_h4Xt0Fu#cwVI6* zG&)5UHj~LFR7KbHLs;DOpm*^U9y*{1-v&T{voE1QQY~*y0M4GOL>8{>16+iW*`_}X zdYhTm#9_c>{Ww+)W}A~e?Sw4c9dQ#zlIrEtp24C@P=w!IGWZd)_G&M8C(yfE+N=K` g3y|dZ+*tzn11%C#3%a`izW@LL07*qoM6N<$g25kdg0004;Nkla zSevLNN`3K;;K`-A9I4Eq4#5v2IotLvir=|1)Fsk!?0Zq4+qWe(55?TbbB_EjB2tmI zt5BF3h_LxK+V!(|%C^F|*uFz$0G%RYEXcx}zn4)R0CvM4S;>G&NIa!h07qfR1bX4v zoKri1Z{cY57>2ZyMghlR*O0T#hezE;0UeK<%2{F$Tzb^R$_3a$@m z&*~b*%OqZB58kL_ATO@-Rztb*N;P)OiiT3s(r&7sLS`0QT6t4_sCXBr?qgG}YU|fN z>51q%alYNws|U+p7Z#RC4IESqmgb}FzYf=`@xCVw<2`r#+<5;7f13pumUstx00000 LNkvXXu0mjf8U)-4 literal 0 HcmV?d00001