From ce7e307cba3f0dbebe6e5b03dd1ca6d631d18409 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Wed, 16 Jan 2013 21:17:21 -0500 Subject: [PATCH 01/85] Scaffold site, based on @mojombo's site (with permission). --- lib/site_template/_config.yml | 2 + lib/site_template/_layouts/default.html | 38 +++++ lib/site_template/_layouts/post.html | 15 ++ lib/site_template/_posts/.gitkeep | 0 lib/site_template/css/screen.css | 197 ++++++++++++++++++++++++ lib/site_template/css/syntax.css | 60 ++++++++ lib/site_template/images/.gitkeep | 0 lib/site_template/images/rss.png | Bin 0 -> 5069 bytes lib/site_template/index.html | 13 ++ 9 files changed, 325 insertions(+) create mode 100644 lib/site_template/_config.yml create mode 100644 lib/site_template/_layouts/default.html create mode 100644 lib/site_template/_layouts/post.html create mode 100644 lib/site_template/_posts/.gitkeep create mode 100644 lib/site_template/css/screen.css create mode 100644 lib/site_template/css/syntax.css create mode 100644 lib/site_template/images/.gitkeep create mode 100644 lib/site_template/images/rss.png create mode 100644 lib/site_template/index.html diff --git a/lib/site_template/_config.yml b/lib/site_template/_config.yml new file mode 100644 index 000000000..6d67c09ed --- /dev/null +++ b/lib/site_template/_config.yml @@ -0,0 +1,2 @@ +markdown: rdiscount +pygments: true diff --git a/lib/site_template/_layouts/default.html b/lib/site_template/_layouts/default.html new file mode 100644 index 000000000..9fc00095f --- /dev/null +++ b/lib/site_template/_layouts/default.html @@ -0,0 +1,38 @@ + + + + + {{ page.title }} + + + + + + +
+
+ Your Name + home +
+ + {{ content }} + + +
+ Fork me on GitHub + + diff --git a/lib/site_template/_layouts/post.html b/lib/site_template/_layouts/post.html new file mode 100644 index 000000000..0938f453a --- /dev/null +++ b/lib/site_template/_layouts/post.html @@ -0,0 +1,15 @@ +--- +layout: default +--- +
+{{ content }} +
+ + \ No newline at end of file diff --git a/lib/site_template/_posts/.gitkeep b/lib/site_template/_posts/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/lib/site_template/css/screen.css b/lib/site_template/css/screen.css new file mode 100644 index 000000000..c13b61a61 --- /dev/null +++ b/lib/site_template/css/screen.css @@ -0,0 +1,197 @@ +/*****************************************************************************/ +/* +/* Common +/* +/*****************************************************************************/ + +/* Global Reset */ + +* { + margin: 0; + padding: 0; +} + +html, body { + height: 100%; +} + +body { + background-color: white; + font: 13.34px helvetica, arial, clean, sans-serif; + *font-size: small; + text-align: center; +} + +h1, h2, h3, h4, h5, h6 { + font-size: 100%; +} + +h1 { + margin-bottom: 1em; +} + +p { + margin: 1em 0; +} + +a { + color: #00a; +} + +a:hover { + color: black; +} + +a:visited { + color: #a0a; +} + +table { + font-size: inherit; + font: 100%; +} + +/*****************************************************************************/ +/* +/* Home +/* +/*****************************************************************************/ + +ul.posts { + list-style-type: none; + margin-bottom: 2em; +} + + ul.posts li { + line-height: 1.75em; + } + + ul.posts span { + color: #aaa; + font-family: Monaco, "Courier New", monospace; + font-size: 80%; + } + +/*****************************************************************************/ +/* +/* Site +/* +/*****************************************************************************/ + +.site { + font-size: 110%; + text-align: justify; + width: 42em; + margin: 3em auto 2em auto; + line-height: 1.5em; +} + +.title { + color: #a00; + font-weight: bold; + margin-bottom: 2em; +} + + .site .title a { + color: #a00; + text-decoration: none; + } + + .site .title a:hover { + color: black; + } + + .site .title a.extra { + color: #aaa; + text-decoration: none; + margin-left: 1em; + } + + .site .title a.extra:hover { + color: black; + } + + .site .meta { + color: #aaa; + } + + .site .footer { + font-size: 80%; + color: #666; + border-top: 4px solid #eee; + margin-top: 2em; + overflow: hidden; + } + + .site .footer .contact { + float: left; + margin-right: 3em; + } + + .site .footer .contact a { + color: #8085C1; + } + + .site .footer .rss { + margin-top: 1.1em; + margin-right: -.2em; + float: right; + } + + .site .footer .rss img { + border: 0; + } + +/*****************************************************************************/ +/* +/* Posts +/* +/*****************************************************************************/ + +#post { + +} + + /* standard */ + + #post pre { + border: 1px solid #ddd; + background-color: #eef; + padding: 0 .4em; + } + + #post ul, + #post ol { + margin-left: 1.35em; + } + + #post code { + border: 1px solid #ddd; + background-color: #eef; + font-size: 85%; + padding: 0 .2em; + } + + #post pre code { + border: none; + } + + /* terminal */ + + #post pre.terminal { + border: 1px solid black; + background-color: #333; + color: white; + } + + #post pre.terminal code { + background-color: #333; + } + +#related { + margin-top: 2em; +} + + #related h2 { + margin-bottom: 1em; + } \ No newline at end of file diff --git a/lib/site_template/css/syntax.css b/lib/site_template/css/syntax.css new file mode 100644 index 000000000..2774b7649 --- /dev/null +++ b/lib/site_template/css/syntax.css @@ -0,0 +1,60 @@ +.highlight { background: #ffffff; } +.highlight .c { color: #999988; font-style: italic } /* Comment */ +.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ +.highlight .k { font-weight: bold } /* Keyword */ +.highlight .o { font-weight: bold } /* Operator */ +.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */ +.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ +.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #aa0000 } /* Generic.Error */ +.highlight .gh { color: #999999 } /* Generic.Heading */ +.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ +.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */ +.highlight .go { color: #888888 } /* Generic.Output */ +.highlight .gp { color: #555555 } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #aaaaaa } /* Generic.Subheading */ +.highlight .gt { color: #aa0000 } /* Generic.Traceback */ +.highlight .kc { font-weight: bold } /* Keyword.Constant */ +.highlight .kd { font-weight: bold } /* Keyword.Declaration */ +.highlight .kp { font-weight: bold } /* Keyword.Pseudo */ +.highlight .kr { font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */ +.highlight .m { color: #009999 } /* Literal.Number */ +.highlight .s { color: #d14 } /* Literal.String */ +.highlight .na { color: #008080 } /* Name.Attribute */ +.highlight .nb { color: #0086B3 } /* Name.Builtin */ +.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */ +.highlight .no { color: #008080 } /* Name.Constant */ +.highlight .ni { color: #800080 } /* Name.Entity */ +.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */ +.highlight .nn { color: #555555 } /* Name.Namespace */ +.highlight .nt { color: #000080 } /* Name.Tag */ +.highlight .nv { color: #008080 } /* Name.Variable */ +.highlight .ow { font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mf { color: #009999 } /* Literal.Number.Float */ +.highlight .mh { color: #009999 } /* Literal.Number.Hex */ +.highlight .mi { color: #009999 } /* Literal.Number.Integer */ +.highlight .mo { color: #009999 } /* Literal.Number.Oct */ +.highlight .sb { color: #d14 } /* Literal.String.Backtick */ +.highlight .sc { color: #d14 } /* Literal.String.Char */ +.highlight .sd { color: #d14 } /* Literal.String.Doc */ +.highlight .s2 { color: #d14 } /* Literal.String.Double */ +.highlight .se { color: #d14 } /* Literal.String.Escape */ +.highlight .sh { color: #d14 } /* Literal.String.Heredoc */ +.highlight .si { color: #d14 } /* Literal.String.Interpol */ +.highlight .sx { color: #d14 } /* Literal.String.Other */ +.highlight .sr { color: #009926 } /* Literal.String.Regex */ +.highlight .s1 { color: #d14 } /* Literal.String.Single */ +.highlight .ss { color: #990073 } /* Literal.String.Symbol */ +.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #008080 } /* Name.Variable.Class */ +.highlight .vg { color: #008080 } /* Name.Variable.Global */ +.highlight .vi { color: #008080 } /* Name.Variable.Instance */ +.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */ diff --git a/lib/site_template/images/.gitkeep b/lib/site_template/images/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/lib/site_template/images/rss.png b/lib/site_template/images/rss.png new file mode 100644 index 0000000000000000000000000000000000000000..d6ecb16f4ecb3c8a0cb3752c2e447e622e458d91 GIT binary patch literal 5069 zcmV;;6Ef_HP)0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU_Z%IT!RCwCdS_zC@)pWO zk1@8v7%;}Qp#}$VLSyRYj;kq*ll%NeNU9AyHCdD58X= z2?5O3u;X~eGu~&$v%dY^<($+1Kj*$TZ)V=$Nd;1Kedqbkyu1A8Ki~iT-~XRWl~UyQ zc4OrCd9xOBlG2+rKjd?qD~dmq(dq5~ZoRQNQY0kQ_x-S134>7TQG8Cu!^SPka$Lva z4yBG|af^S-Fs%6u2OEWu6-Dxg4(48cseE8>R2b)xPdP{Le;xyXCxUOh1aI$k&)tw% zzcJI+m2{ZvxGF^wI2#YPR-AR$!O(`*` zf~Tlc0E7}U2Z2ga8Iejp$d6Ww1s0xmj(zo)+t**%mPsWO3CD3bIPR3zizq4+I{x81 z$M5@lck;lpbGkB}UQi5!sUWKO_)v<`4j+^$%A|%ViG9Nrj)f}y7dTDn;VH)S(BLYD z-@reJA9JWLAPnvWw!wMaCDaK+HnJ}_e7GEKzB2t6xApWaYD=eGuZ45=Y1V_+ON0;o z_tT^If2*fEShBXWI#DT)lw=UWv*G4wF@=LTz8I4_%y1a!bNoarb zubeD#n@|fUouJpjsRlZ+(FWys0P%p%ljwLHio$s?7zcO5R}6ryq(+^jQo$uUUMOc~ zYHIj{0dS?A5{ZJBjFw-}oBH78$(LUkp30ZXr6`J;`@X8^ZJ?|}9*Ht`T2q!~s zGZJGO>=6)FXcd*lMS3t&55oYUhJI$)k4(d+{vD1(#lNs=8mXT*?M?iVsydbGP>WY3 zz2~1A85k(!3t<@6-9K%8B%(^GF!{nWy~{l!MQNzSY!b&A*vAP^w$fB9aU7xq2@9%P zP(hK3Dp3)zg?=1*9sVgMw9lC_32914r!w;cpWt|y35_UyQ1?0piqyZMiNM)WB+G^N zzH~YmFYNtrJYT3(DiEAA_#R;+N$!)qWZygOn=;j*5(Nx!{dh243Fc+8_xzA$dsI0u zOF24mA{ssz9p6VMj;j2K$c@m*2WBRiWQ-?Cj41ps#<`*~Uursv9Y>k*kfEv=|B!EJ zB#6NOWmtC8$?iV)_-{WL+pxK(J)26UAOp zcd~3Z&35b4H<&Ax6j3!#5APBmy(m6TGuZee`qNQ=^w&49W>q|}c4bCQwVTvSU4t2sMkaFQs z0^=M94Ht)@lSsBi)v>9`svp#m!=|kVgoUB)@+g#=Qb>&2TJX&gB@NQb+$)i_*Inse zf1h{v^W>6SSSm|`0*M_;ro(jFbY|#_)N(I+9T1GxqsAgJhY=YHj3zDvzY>IKy$Rgu zs6}BTC8AM8I(QWN$RJeb)CGz}*m-BacilhPcfClq+^U36!$OS{XN4)%VH!IgoeY{# z02mG5qWjVD0DbsIXA}u0O4)>SjC@fw(lbd=N0f~73$yC#M4d`!!hNlDPvXz+bMJVP ztob6X?(Y+X^Fa*qLHKXHCp}`hg ztYXy7uaM)J#Y}`e$EYP}RHZ|wo|WljT}#=rv)GDFe90Psdt6t<3U2ns-6Z?s z*P|7i#Lw>{6NA*tz|CdNh#EN}DNyb8M$-*U%#L7Wzz?Nyz9*4dX^8?NEmzIvLZb0)z$?LvOrfA~ATN%sGmcxm%jFx`-&L|Y}( zVXEO_tfzWsgf6_cLR*D~4)Q&OY@8#h7A4e1-OFs9N)@CknmZ;wc|CaL5g35A?vMHM zjbzRgm}pj+Mcz%{3wGQse*0gL6ObH{VRS@DOa^tY;~!x(!1sb9pD@}q&gM*qGN3my zRciS)L&L;k1cMk=Ikjx!CP+($Ri>hs9}d2|t@_06V(M7am_|=JN&CwWv-Q`>(o{^2 z5{peVG2V5UVoeIC^SGpz3-^6oAl1CCHHoHPC`|%M43I434bVJX>wTn2&a4bZ+y_rb z2VR$(Z??96om<{a^D*^-j&`rQ*AGhaou`$Pq}uTY?)Vg;DF+Xj_CFA)cAr{+^(LQd zuY=uj8i5(*PSUylUg@Rj)R4-Ls`8i`JFJHGu;Li89R)kB6)av-g+=+&gZ`m+oU8BU zJ*#IWH9WRGd)s${u@mZ(w}_LD2^gJCbmsydsPn8gUCOu?n~Q#{8R!icGc8M0tV(R# zI%_M<_L|~VnQ@K}$d6x;A3raK_dzsMFF{O-wk&0}k-;}AKe*Pp?jdLOrE|hS0TJ0Z zZ4bBKpvI3V%hBjZ+R;S-Xz*#%5m$^as2gQuo}CgGP|A>t19U09ME8&ZT!a zfAfrU=Tm&sji50|SW$H);3e&#EPi;4|N0Mv9&JM>0>j5@U&^YQ^0`_kR2TEW0Hdg+h2K1oqjP08#Dsy zXvu^W{(pWu8XcH>m3zj;_WCc0QVGLU#8}6F2z_Sap=tlLDRR(Iom@@7LSgqWss{gd zyZ^||{*HTs*Z$St{h}z2O48((dY+Wkxx&8TVYTFZRW51`18UD>qep@te?x@TxmP)t ze@(WuffO`g*O!>66`DE;C2YY;fyR+)G_1lTBjmC7vGM^nrUElU+fuTAn|0Awt=7eK zZl@1OE7@t?_}yUpHFEMO6~aXs z!cja1n424Mh`yYgad>z$-pQbrC?OHK|4FF)2K zeEZL`Pdi^$L+x*=ea5F5ll~5TuWEf5s^V&2#aXHzn+9T*#ggsh@NdF@|MPHgXHzoe zz=_NLfK;jyoC>1FN&D~qA{ZN-Z3?A{tvAZZlzvKS(nJx5%->8WG`C(iA9cTum&X%lF zL4aOI%_BA5n3g(f0er9G)-J78ob?7$oO+{x1VsRh-piyeUbzEbMLWK!2H$St{uLYO zs?DTYH6Desrux>iVsd1bv~`jhch$Ml599jPfK77_SqSbmt?D|#v`dMMy>43eVU={P zq?g>`fJWc;pgQjw;U*NORfeSowW7%(|LJ=~ITtRpz9`;g7>#J?#F`-_3Uay34`+YWGgbTd)cj!hiD_@4U-qJ=r_^0+4q?NEGO% zSTQ1PK^n8B%}l#Aj!vi&!!liciMQ-$w=e*!XN`63L)6KVFqGJSQ7|_7t4HO? z!P)4Cecfduh;$Aj#J2riZ_C2OYBcqA827 zzlP1!*+zLd%g(1OFOhx)V?ZJe$*Ga><6qA87GJhjaVOR=)Q(1u2Z#5}KF3Qs{bwkE zz9|?@Z9b3AWb@R8GrM#!_GFvYzp-hpjR);ZP|TP{0L%b)q7R;xYIZehEniF9`&1Me zLIekklS6Yu+*)xq@FvkbsT*l=dv;-rNvGSTs@`*C7VK)?u9HPYz3&AlyJB#cIQ-G< zhk*VAXcSTX~so}goXK@)`~;3wr5rXEmg^hk$tquMCpn& zH)0q{4?tm_FBin#H=8`Ke+^brScrr1Bpg20g!S9I6tgv8bcE9eYphBDC?WvX;Hrk4xLpcgx-E3qv(e7)%jv2dPm$%R;IZ4)$w9&#&2Ad) z5>-)@o18mS4E#z=>5a>?QMK3vicSjxRmGhcxFxq4vyedPe0+~zBvXM8BemnDm|9Jx zbq)tV$QSPSM-S4~TY0)0N+EUfV7T*fIq)7NN$mX^uY>6VmyN7qE;=!wyM49rby`Gj z0@uI{Dj=@%1^@7VD7_4&Ai3C1ICMl2gBk1(L2ly-DDzZRS6xF=^WO zP!e0GpP6szs!l|yu7r@K#&QOb3g%+F)CM=>dMjS*SlZvZ-LAnvbz;FE*c zFFLV*LZ}3&E@_sgC`K#=oB$p~tzC*89}G|(rW%mghf%eT05viT?+=QSSV-9zKiG1U zIuC({!N$DMi-(j;WkHr!%reW1R4X$SI1%YO16(OijtPJ1%C=OxrKQCz7|yWXvg{O$ z>%z;XidJr@V%Z6tM6EKw*$8W4x|wmi6pe0Zmy&wp&Xm=9p-n4Fs;eZ^;-ey!Xt&eLTSgB~9dBRCm#k=S%_I^D^TNvv&ao_>biMSdGfP{qI{NW= zCC|B)QGmZFBzi50#H$)K=5^zBJb*B5^tvK5I|6ZLt(O{7mkxpw6Ct|iQ71?J2$Yo~ zP>HPFw>dkuKR+<)9NF-NMZMkaZEfKD*~rnY80NZeXF8R-^4iH&7an-)sGsMS-3kRV z#g>L_Sk=&r{>sD@kHb=XJzmn%%+t^j;JU?)r3M9C^;())6rKz(D1|*%x-5zIt&_cWY~_S*dNJkZs#eB@>H#dk3!j>ev&ZdgJ~6bsg!R zHo{8Whq_LnF-G(``2BRS$qB&{Y#hiFYD^+GO(F`H)EFaGy^CWi{ld$M@B}+ zc7LdT^G3&^U0GT1T*x+-ZLwNYzrIWwug2C&v&NRKiegdZ6Qt8&kcQ1 zsfa@04B46E{cFX_HN8uhFJIEvyQrtVy&W9iX!^YGrG;TwE|>H9{K)vk(CFyoi6dn2 zpmlPXRLW9_nf85lFV*R`SD46@IyzO);@0-AMO_`eU0ofWotaFgktk1Ly+*0@eZNwv zz!-9c!c?(XC|BSwA`)im$!Gjxrq1jfU~eaECzO5MEH*WVx& zLcl!udJBR8j_V8UpY2 +

Blog Posts

+
    + {% for post in site.posts %} +
  • {{ post.date | date_to_string }} » {{ post.title }}
  • + {% endfor %} +
+ \ No newline at end of file From 272dd5ef351fe340b4d75ce9569096a15f197eb2 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Wed, 16 Jan 2013 21:17:43 -0500 Subject: [PATCH 02/85] Added the NewCommand class --- lib/jekyll/commands/new.rb | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 lib/jekyll/commands/new.rb diff --git a/lib/jekyll/commands/new.rb b/lib/jekyll/commands/new.rb new file mode 100644 index 000000000..9b7e930e6 --- /dev/null +++ b/lib/jekyll/commands/new.rb @@ -0,0 +1,31 @@ +require 'yaml' + +module Jekyll + class NewCommand < Command + + def self.process(args) + path = File.expand_path(args.join(" "), Dir.pwd) + template_site = File.expand_path("../../site_template", File.dirname(__FILE__)) + FileUtils.mkdir_p path + FileUtils.cp_r Dir["#{template_site}/*"], path + File.open(File.expand_path(self.initialized_post_name, path), "w") do |f| + content = [ + { "layout" => "post", "title" => "Welcome to Jekyll!", "date" => Time.now.strftime('%Y-%m-%d %H:%M:%S'), "categories" => %w(jekyll update) }.to_yaml + "---", + "You'll find this post in your `_posts` directory - edit this post and re-build (or run with the `-w` switch) to see your changes!", + "To add new posts, simply add a file in the `_posts` directory that follows the convention: YYYY-MM-DD-name-of-post.ext.", + "Check out the [Jeyll docs][jekyll] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll's GitHub repo][jekyll-gh].", + "[jekyll-gh]: https://github.com/mojombo/github\n[jekyll]: http://jekyllrb.com" + ] + f.write(content.join("#{$/*2}")) + end + puts "New jekyll site installed in #{path}." + end + + # Internal: Gets the filename of the sample post to be created + # + # Returns the filename of the sample post, as a String + def self.initialized_post_name + "_posts/#{Time.now.strftime('%Y-%m-%d')}-welcome-to-jekyll.markdown" + end + end +end \ No newline at end of file From 2bc04e4a6022d3012c4b1d480b3d7860723b44a2 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Wed, 16 Jan 2013 21:19:02 -0500 Subject: [PATCH 03/85] Added the site_template files to the gemspec manifest. --- jekyll.gemspec | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/jekyll.gemspec b/jekyll.gemspec index 86cbd1e81..7d162fcbe 100644 --- a/jekyll.gemspec +++ b/jekyll.gemspec @@ -109,6 +109,15 @@ Gem::Specification.new do |s| lib/jekyll/tags/highlight.rb lib/jekyll/tags/include.rb lib/jekyll/tags/post_url.rb + lib/site_template/_config.yml + lib/site_template/_layouts/default.html + lib/site_template/_layouts/post.html + lib/site_template/_posts/.gitkeep + lib/site_template/css/screen.css + lib/site_template/css/syntax.css + lib/site_template/images/.gitkeep + lib/site_template/images/rss.png + lib/site_template/index.html test/fixtures/broken_front_matter1.erb test/fixtures/broken_front_matter2.erb test/fixtures/broken_front_matter3.erb From f3856a444a70dd78d3419b1a49dd82b280b365ac Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Wed, 16 Jan 2013 21:19:15 -0500 Subject: [PATCH 04/85] Added command to primary binary. --- bin/jekyll | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/bin/jekyll b/bin/jekyll index 0034f75e6..3db3f6721 100755 --- a/bin/jekyll +++ b/bin/jekyll @@ -17,6 +17,15 @@ global_option '--safe', 'Safe mode (defaults to false)' global_option '--plugins', 'Plugins directory (defaults to ./_plugins)' global_option '--layouts', 'Layouts directory (defaults to ./_layouts)' +command :new do |c| + c.syntax = 'jekyll new PATH' + c.description = 'Creates a new Jekyll site scaffold in PATH' + + c.action do |args, options| + Jekyll::NewCommand.process(args) + end +end + command :build do |c| c.syntax = 'jekyll build [options]' c.description = 'Build your site with the option of auto-renegeration' From a8671ed52b116d6f7bd489d2ee34204d32296d7e Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 27 Jan 2013 23:17:45 +0100 Subject: [PATCH 05/85] Using modularized commands (Jekyll::Commands) as per @tombell's latest PR merge --- bin/jekyll | 2 +- lib/jekyll/commands/new.rb | 46 ++++++++++++++++++++------------------ 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/bin/jekyll b/bin/jekyll index 3db3f6721..6c3577c57 100755 --- a/bin/jekyll +++ b/bin/jekyll @@ -22,7 +22,7 @@ command :new do |c| c.description = 'Creates a new Jekyll site scaffold in PATH' c.action do |args, options| - Jekyll::NewCommand.process(args) + Jekyll::Commands::New.process(args) end end diff --git a/lib/jekyll/commands/new.rb b/lib/jekyll/commands/new.rb index 9b7e930e6..511524295 100644 --- a/lib/jekyll/commands/new.rb +++ b/lib/jekyll/commands/new.rb @@ -1,31 +1,33 @@ require 'yaml' module Jekyll - class NewCommand < Command + module Commands + class New < Command - def self.process(args) - path = File.expand_path(args.join(" "), Dir.pwd) - template_site = File.expand_path("../../site_template", File.dirname(__FILE__)) - FileUtils.mkdir_p path - FileUtils.cp_r Dir["#{template_site}/*"], path - File.open(File.expand_path(self.initialized_post_name, path), "w") do |f| - content = [ - { "layout" => "post", "title" => "Welcome to Jekyll!", "date" => Time.now.strftime('%Y-%m-%d %H:%M:%S'), "categories" => %w(jekyll update) }.to_yaml + "---", - "You'll find this post in your `_posts` directory - edit this post and re-build (or run with the `-w` switch) to see your changes!", - "To add new posts, simply add a file in the `_posts` directory that follows the convention: YYYY-MM-DD-name-of-post.ext.", - "Check out the [Jeyll docs][jekyll] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll's GitHub repo][jekyll-gh].", - "[jekyll-gh]: https://github.com/mojombo/github\n[jekyll]: http://jekyllrb.com" - ] - f.write(content.join("#{$/*2}")) + def self.process(args) + path = File.expand_path(args.join(" "), Dir.pwd) + template_site = File.expand_path("../../site_template", File.dirname(__FILE__)) + FileUtils.mkdir_p path + FileUtils.cp_r Dir["#{template_site}/*"], path + File.open(File.expand_path(self.initialized_post_name, path), "w") do |f| + content = [ + { "layout" => "post", "title" => "Welcome to Jekyll!", "date" => Time.now.strftime('%Y-%m-%d %H:%M:%S'), "categories" => %w(jekyll update) }.to_yaml + "---", + "You'll find this post in your `_posts` directory - edit this post and re-build (or run with the `-w` switch) to see your changes!", + "To add new posts, simply add a file in the `_posts` directory that follows the convention: YYYY-MM-DD-name-of-post.ext.", + "Check out the [Jeyll docs][jekyll] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll's GitHub repo][jekyll-gh].", + "[jekyll-gh]: https://github.com/mojombo/github\n[jekyll]: http://jekyllrb.com" + ] + f.write(content.join("#{$/*2}")) + end + puts "New jekyll site installed in #{path}." end - puts "New jekyll site installed in #{path}." - end - # Internal: Gets the filename of the sample post to be created - # - # Returns the filename of the sample post, as a String - def self.initialized_post_name - "_posts/#{Time.now.strftime('%Y-%m-%d')}-welcome-to-jekyll.markdown" + # Internal: Gets the filename of the sample post to be created + # + # Returns the filename of the sample post, as a String + def self.initialized_post_name + "_posts/#{Time.now.strftime('%Y-%m-%d')}-welcome-to-jekyll.markdown" + end end end end \ No newline at end of file From ac691a14655157836bd98a1a4e4ba4d3e147d074 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 27 Jan 2013 23:21:02 +0100 Subject: [PATCH 06/85] removed related posts segment of scaffold site. --- lib/site_template/_layouts/post.html | 9 --------- lib/site_template/css/screen.css | 8 -------- 2 files changed, 17 deletions(-) diff --git a/lib/site_template/_layouts/post.html b/lib/site_template/_layouts/post.html index 0938f453a..0b28e6bd4 100644 --- a/lib/site_template/_layouts/post.html +++ b/lib/site_template/_layouts/post.html @@ -4,12 +4,3 @@ layout: default
{{ content }}
- - \ No newline at end of file diff --git a/lib/site_template/css/screen.css b/lib/site_template/css/screen.css index c13b61a61..7a230eded 100644 --- a/lib/site_template/css/screen.css +++ b/lib/site_template/css/screen.css @@ -187,11 +187,3 @@ ul.posts { #post pre.terminal code { background-color: #333; } - -#related { - margin-top: 2em; -} - - #related h2 { - margin-bottom: 1em; - } \ No newline at end of file From a68b67c65ed071dc7f1e5b8a1d108bcfe47bb3c3 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 27 Jan 2013 23:21:31 +0100 Subject: [PATCH 07/85] Added newline to New command for stylistic congruence. --- lib/jekyll/commands/new.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll/commands/new.rb b/lib/jekyll/commands/new.rb index 511524295..6f9f9da89 100644 --- a/lib/jekyll/commands/new.rb +++ b/lib/jekyll/commands/new.rb @@ -30,4 +30,4 @@ module Jekyll end end end -end \ No newline at end of file +end From bf78fe9b754109a96b709dccf5b2790bea1c9498 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 27 Jan 2013 23:23:53 +0100 Subject: [PATCH 08/85] Move post scaffold content to a separate method. --- lib/jekyll/commands/new.rb | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/lib/jekyll/commands/new.rb b/lib/jekyll/commands/new.rb index 6f9f9da89..def9a3807 100644 --- a/lib/jekyll/commands/new.rb +++ b/lib/jekyll/commands/new.rb @@ -10,18 +10,21 @@ module Jekyll FileUtils.mkdir_p path FileUtils.cp_r Dir["#{template_site}/*"], path File.open(File.expand_path(self.initialized_post_name, path), "w") do |f| - content = [ - { "layout" => "post", "title" => "Welcome to Jekyll!", "date" => Time.now.strftime('%Y-%m-%d %H:%M:%S'), "categories" => %w(jekyll update) }.to_yaml + "---", - "You'll find this post in your `_posts` directory - edit this post and re-build (or run with the `-w` switch) to see your changes!", - "To add new posts, simply add a file in the `_posts` directory that follows the convention: YYYY-MM-DD-name-of-post.ext.", - "Check out the [Jeyll docs][jekyll] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll's GitHub repo][jekyll-gh].", - "[jekyll-gh]: https://github.com/mojombo/github\n[jekyll]: http://jekyllrb.com" - ] - f.write(content.join("#{$/*2}")) + f.write(self.scaffold_post_content) end puts "New jekyll site installed in #{path}." end - + + def self.scaffold_post_content + [ + { "layout" => "post", "title" => "Welcome to Jekyll!", "date" => Time.now.strftime('%Y-%m-%d %H:%M:%S'), "categories" => %w(jekyll update) }.to_yaml + "---", + "You'll find this post in your `_posts` directory - edit this post and re-build (or run with the `-w` switch) to see your changes!", + "To add new posts, simply add a file in the `_posts` directory that follows the convention: YYYY-MM-DD-name-of-post.ext.", + "Check out the [Jeyll docs][jekyll] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll's GitHub repo][jekyll-gh].", + "[jekyll-gh]: https://github.com/mojombo/github\n[jekyll]: http://jekyllrb.com" + ].join("#{$/*2}") + end + # Internal: Gets the filename of the sample post to be created # # Returns the filename of the sample post, as a String From 704307d7fef9a0c5e9000e73c73499fc2f755a51 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 27 Jan 2013 23:30:32 +0100 Subject: [PATCH 09/85] Added very basic code snippet example to sample post --- lib/jekyll/commands/new.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/jekyll/commands/new.rb b/lib/jekyll/commands/new.rb index def9a3807..51b3dbb14 100644 --- a/lib/jekyll/commands/new.rb +++ b/lib/jekyll/commands/new.rb @@ -20,6 +20,16 @@ module Jekyll { "layout" => "post", "title" => "Welcome to Jekyll!", "date" => Time.now.strftime('%Y-%m-%d %H:%M:%S'), "categories" => %w(jekyll update) }.to_yaml + "---", "You'll find this post in your `_posts` directory - edit this post and re-build (or run with the `-w` switch) to see your changes!", "To add new posts, simply add a file in the `_posts` directory that follows the convention: YYYY-MM-DD-name-of-post.ext.", + "Jekyll also offers powerful support for code snippets:", + [ + "{% highlight ruby %}", + "def print_hi(name)", + ' puts "Hi, #{name}"', + "end", + "print_hi('Tom')" + "#=> prints 'Hi, Tom' to STDOUT." + "{% endhighlight %}" + ].join("#{$/}"), "Check out the [Jeyll docs][jekyll] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll's GitHub repo][jekyll-gh].", "[jekyll-gh]: https://github.com/mojombo/github\n[jekyll]: http://jekyllrb.com" ].join("#{$/*2}") From cff4ec72eabd27b9696cd65c74baecbd9a4b43d9 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Wed, 30 Jan 2013 21:05:52 +0100 Subject: [PATCH 10/85] Using .erb file for the new post --- lib/jekyll/commands/new.rb | 26 +++++-------------- .../0000-00-00-sample_post.markdown.erb | 24 +++++++++++++++++ 2 files changed, 30 insertions(+), 20 deletions(-) create mode 100644 lib/site_template/_posts/0000-00-00-sample_post.markdown.erb diff --git a/lib/jekyll/commands/new.rb b/lib/jekyll/commands/new.rb index 51b3dbb14..be0f17c2c 100644 --- a/lib/jekyll/commands/new.rb +++ b/lib/jekyll/commands/new.rb @@ -1,4 +1,5 @@ require 'yaml' +require 'erb' module Jekyll module Commands @@ -8,31 +9,16 @@ module Jekyll path = File.expand_path(args.join(" "), Dir.pwd) template_site = File.expand_path("../../site_template", File.dirname(__FILE__)) FileUtils.mkdir_p path - FileUtils.cp_r Dir["#{template_site}/*"], path + sample_files = Dir["#{template_site}/**/*"].reject {|f| File.extname(f) == ".erb"} + FileUtils.cp_r sample_files, path File.open(File.expand_path(self.initialized_post_name, path), "w") do |f| - f.write(self.scaffold_post_content) + f.write(self.scaffold_post_content(template_site)) end puts "New jekyll site installed in #{path}." end - def self.scaffold_post_content - [ - { "layout" => "post", "title" => "Welcome to Jekyll!", "date" => Time.now.strftime('%Y-%m-%d %H:%M:%S'), "categories" => %w(jekyll update) }.to_yaml + "---", - "You'll find this post in your `_posts` directory - edit this post and re-build (or run with the `-w` switch) to see your changes!", - "To add new posts, simply add a file in the `_posts` directory that follows the convention: YYYY-MM-DD-name-of-post.ext.", - "Jekyll also offers powerful support for code snippets:", - [ - "{% highlight ruby %}", - "def print_hi(name)", - ' puts "Hi, #{name}"', - "end", - "print_hi('Tom')" - "#=> prints 'Hi, Tom' to STDOUT." - "{% endhighlight %}" - ].join("#{$/}"), - "Check out the [Jeyll docs][jekyll] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll's GitHub repo][jekyll-gh].", - "[jekyll-gh]: https://github.com/mojombo/github\n[jekyll]: http://jekyllrb.com" - ].join("#{$/*2}") + def self.scaffold_post_content(template_site) + ERB.new(File.read(File.expand_path("_posts/0000-00-00-sample_post.markdown.erb", template_site))).result end # Internal: Gets the filename of the sample post to be created diff --git a/lib/site_template/_posts/0000-00-00-sample_post.markdown.erb b/lib/site_template/_posts/0000-00-00-sample_post.markdown.erb new file mode 100644 index 000000000..95833798f --- /dev/null +++ b/lib/site_template/_posts/0000-00-00-sample_post.markdown.erb @@ -0,0 +1,24 @@ +--- +layout: post +title: "Welcome to Jekyll!" +date: <%= Time.now.strftime('%Y-%m-%d %H:%M:%S') %> +categories: jekyll update +--- + +You'll find this post in your `_posts` directory - edit this post and re-build (or run with the `-w` switch) to see your changes! +To add new posts, simply add a file in the `_posts` directory that follows the convention: YYYY-MM-DD-name-of-post.ext. + +Jekyll also offers powerful support for code snippets: + +{% highlight ruby %} +def print_hi(name) + puts "Hi, #{name}" +end +print_hi('Tom') +#=> prints 'Hi, Tom' to STDOUT. +{% endhighlight %} + +Check out the [Jeyll docs][jekyll] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll's GitHub repo][jekyll-gh]. + +[jekyll-gh]: https://github.com/mojombo/github +[jekyll]: http://jekyllrb.com From 149b95d76750b1d57e6e4737c9cc98e5572b8252 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Thu, 28 Feb 2013 22:17:24 +0100 Subject: [PATCH 11/85] Typos in sample post. --- lib/site_template/_posts/0000-00-00-sample_post.markdown.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/site_template/_posts/0000-00-00-sample_post.markdown.erb b/lib/site_template/_posts/0000-00-00-sample_post.markdown.erb index 95833798f..c500b41a2 100644 --- a/lib/site_template/_posts/0000-00-00-sample_post.markdown.erb +++ b/lib/site_template/_posts/0000-00-00-sample_post.markdown.erb @@ -18,7 +18,7 @@ print_hi('Tom') #=> prints 'Hi, Tom' to STDOUT. {% endhighlight %} -Check out the [Jeyll docs][jekyll] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll's GitHub repo][jekyll-gh]. +Check out the [Jekyll docs][jekyll] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll's GitHub repo][jekyll-gh]. -[jekyll-gh]: https://github.com/mojombo/github +[jekyll-gh]: https://github.com/mojombo/jekyll [jekyll]: http://jekyllrb.com From 7258b10f88bdb9b1f72b9ef2012601ba07d75eb1 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Thu, 28 Feb 2013 22:19:38 +0100 Subject: [PATCH 12/85] We don't need YAML in the new command. --- lib/jekyll/commands/new.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/jekyll/commands/new.rb b/lib/jekyll/commands/new.rb index be0f17c2c..c87aebcbe 100644 --- a/lib/jekyll/commands/new.rb +++ b/lib/jekyll/commands/new.rb @@ -1,4 +1,3 @@ -require 'yaml' require 'erb' module Jekyll From 22dcc4e20f3c2b69857b5e09b7390d3cfb35b036 Mon Sep 17 00:00:00 2001 From: Aleksey V Zapparov Date: Mon, 4 Mar 2013 16:58:04 +0100 Subject: [PATCH 13/85] Adds excerpt to posts --- lib/jekyll.rb | 2 + lib/jekyll/post.rb | 60 ++++++++++++++++++- .../_posts/2013-01-02-post-excerpt.markdown | 14 +++++ test/test_generated_site.rb | 2 +- test/test_post.rb | 46 ++++++++++++++ 5 files changed, 120 insertions(+), 4 deletions(-) create mode 100644 test/source/_posts/2013-01-02-post-excerpt.markdown diff --git a/lib/jekyll.rb b/lib/jekyll.rb index 51011764a..aefcf1f6c 100644 --- a/lib/jekyll.rb +++ b/lib/jekyll.rb @@ -74,6 +74,8 @@ module Jekyll 'markdown_ext' => 'markdown,mkd,mkdn,md', 'textile_ext' => 'textile', + 'excerpt_separator' => "\n\n", + 'maruku' => { 'use_tex' => false, 'use_divs' => false, diff --git a/lib/jekyll/post.rb b/lib/jekyll/post.rb index d40993de4..181207429 100644 --- a/lib/jekyll/post.rb +++ b/lib/jekyll/post.rb @@ -19,7 +19,7 @@ module Jekyll end attr_accessor :site - attr_accessor :data, :content, :output, :ext + attr_accessor :data, :excerpt, :content, :output, :ext attr_accessor :date, :slug, :published, :tags, :categories attr_reader :name @@ -77,8 +77,9 @@ module Jekyll # Returns nothing. def read_yaml(base, name) super(base, name) + self.excerpt = self.extract_excerpt self.data['layout'] = 'post' unless self.data.has_key?('layout') - self.data + nil end # Compares Post objects. First compares the Post date. If the dates are @@ -109,6 +110,15 @@ module Jekyll raise FatalException.new("Post #{name} does not have a valid date.") end + # Transform the contents and excerpt based on the content type. + # + # Returns nothing. + def transform + super + self.excerpt = converter.convert(self.excerpt) + nil + end + # The generated directory into which the post will be placed # upon generation. This is derived from the permalink or, if # permalink is absent, set to the default date @@ -257,7 +267,8 @@ module Jekyll "next" => self.next, "previous" => self.previous, "tags" => self.tags, - "content" => self.content }) + "content" => self.content, + "excerpt" => self.excerpt }) end # Returns the shorthand String identifier of this Post. @@ -283,5 +294,48 @@ module Jekyll nil end end + + protected + + # Internal: Extract excerpt from the content + # + # By default excerpt is your first paragraph of a post: everything before + # the first two new lines: + # + # --- + # title: Example + # --- + # + # First paragraph with [link][1]. + # + # Second paragraph. + # + # [1]: http://example.com/ + # + # This is fairly good option for Markdown and Textile files. But might cause + # problems for HTML posts (which is quiet unusual for Jekyll). If default + # excerpt delimiter is not good for you, you might want to set your own via + # configuration option `excerpt_separator`. For example, following is a good + # alternative for HTML posts: + # + # # file: _config.yml + # excerpt_separator: "" + # + # Notice that all markdown-style link references will be appended to the + # excerpt. So the example post above will have this excerpt source: + # + # First paragraph with [link][1]. + # + # [1]: http://example.com/ + # + # Excerpts are rendered same time as content is rendered. + # + # Returns excerpt String + def extract_excerpt + separator = self.site.config['excerpt_separator'] + head, _, tail = self.content.partition(separator) + + "" << head << "\n\n" << tail.scan(/^\[[^\]]+\]:.+$/).join("\n") + end end end diff --git a/test/source/_posts/2013-01-02-post-excerpt.markdown b/test/source/_posts/2013-01-02-post-excerpt.markdown new file mode 100644 index 000000000..5cac6eb50 --- /dev/null +++ b/test/source/_posts/2013-01-02-post-excerpt.markdown @@ -0,0 +1,14 @@ +--- +layout: ~ +title: Post Excerpt +--- + +First paragraph with [link ref][link]. + +Second paragraph + +--- + +Third paragraph + +[link]: http://www.jekyllrb.com/ diff --git a/test/test_generated_site.rb b/test/test_generated_site.rb index 552e24172..abda0ba53 100644 --- a/test/test_generated_site.rb +++ b/test/test_generated_site.rb @@ -14,7 +14,7 @@ class TestGeneratedSite < Test::Unit::TestCase end should "ensure post count is as expected" do - assert_equal 30, @site.posts.size + assert_equal 31, @site.posts.size end should "insert site.posts into the index" do diff --git a/test/test_post.rb b/test/test_post.rb index 114924153..5bff6e5ed 100644 --- a/test/test_post.rb +++ b/test/test_post.rb @@ -252,6 +252,52 @@ class TestPost < Test::Unit::TestCase assert_equal "

{{ page.title }}

\n

Best post ever

", @post.content end + + context "#excerpt" do + setup do + file = "2013-01-02-post-excerpt.markdown" + @post.process(file) + @post.read_yaml(@source, file) + @post.transform + end + + should "return first paragraph by default" do + assert @post.excerpt.include?("First paragraph"), "contains first paragraph" + assert !@post.excerpt.include?("Second paragraph"), "does not contains second paragraph" + assert !@post.excerpt.include?("Third paragraph"), "does not contains third paragraph" + end + + should "correctly resolve link references" do + assert @post.excerpt.include?("www.jekyllrb.com"), "contains referenced link URL" + end + + should "return rendered HTML" do + assert_equal "

First paragraph with link ref.

", + @post.excerpt + end + + context "with excerpt_separator setting" do + setup do + file = "2013-01-02-post-excerpt.markdown" + + @post.site.config['excerpt_separator'] = "\n---\n" + + @post.process(file) + @post.read_yaml(@source, file) + @post.transform + end + + should "respect given separator" do + assert @post.excerpt.include?("First paragraph"), "contains first paragraph" + assert @post.excerpt.include?("Second paragraph"), "contains second paragraph" + assert !@post.excerpt.include?("Third paragraph"), "does not contains third paragraph" + end + + should "replace separator with new-lines" do + assert !@post.excerpt.include?("---"), "does not contains separator" + end + end + end end context "when in a site" do From b71ec624f84659ac48fc9b0604215d2a449797e1 Mon Sep 17 00:00:00 2001 From: Jonathan Roes Date: Tue, 12 Mar 2013 00:47:42 -0400 Subject: [PATCH 14/85] Add commands/new and scaffold post to gemspec so they get copied over. --- jekyll.gemspec | 5 +++-- lib/site_template/_posts/.gitkeep | 0 2 files changed, 3 insertions(+), 2 deletions(-) delete mode 100644 lib/site_template/_posts/.gitkeep diff --git a/jekyll.gemspec b/jekyll.gemspec index 7d162fcbe..8291d9ae5 100644 --- a/jekyll.gemspec +++ b/jekyll.gemspec @@ -48,7 +48,7 @@ Gem::Specification.new do |s| s.add_development_dependency('sequel', "~> 3.42") s.add_development_dependency('htmlentities', "~> 4.3") s.add_development_dependency('hpricot', "~> 0.8") - + # = MANIFEST = s.files = %w[ .travis.yml @@ -75,6 +75,7 @@ Gem::Specification.new do |s| lib/jekyll/command.rb lib/jekyll/commands/build.rb lib/jekyll/commands/migrate.rb + lib/jekyll/commands/new.rb lib/jekyll/commands/serve.rb lib/jekyll/converter.rb lib/jekyll/converters/identity.rb @@ -112,7 +113,7 @@ Gem::Specification.new do |s| lib/site_template/_config.yml lib/site_template/_layouts/default.html lib/site_template/_layouts/post.html - lib/site_template/_posts/.gitkeep + lib/site_template/_posts/0000-00-00-sample_post.markdown.erb lib/site_template/css/screen.css lib/site_template/css/syntax.css lib/site_template/images/.gitkeep diff --git a/lib/site_template/_posts/.gitkeep b/lib/site_template/_posts/.gitkeep deleted file mode 100644 index e69de29bb..000000000 From 7a86d901f1bf1927ddbf84a4f4e5be258a189011 Mon Sep 17 00:00:00 2001 From: Jonathan Roes Date: Tue, 12 Mar 2013 00:48:22 -0400 Subject: [PATCH 15/85] Refactor Commands::New a bit and remove scaffold post once copied. --- lib/jekyll/commands/new.rb | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/lib/jekyll/commands/new.rb b/lib/jekyll/commands/new.rb index c87aebcbe..dc71545fb 100644 --- a/lib/jekyll/commands/new.rb +++ b/lib/jekyll/commands/new.rb @@ -3,21 +3,21 @@ require 'erb' module Jekyll module Commands class New < Command - + def self.process(args) - path = File.expand_path(args.join(" "), Dir.pwd) - template_site = File.expand_path("../../site_template", File.dirname(__FILE__)) - FileUtils.mkdir_p path - sample_files = Dir["#{template_site}/**/*"].reject {|f| File.extname(f) == ".erb"} - FileUtils.cp_r sample_files, path - File.open(File.expand_path(self.initialized_post_name, path), "w") do |f| + new_blog_path = File.expand_path(args.join(" "), Dir.pwd) + FileUtils.mkdir_p new_blog_path + + create_sample_files! new_blog_path + + File.open(File.expand_path(self.initialized_post_name, new_blog_path), "w") do |f| f.write(self.scaffold_post_content(template_site)) end - puts "New jekyll site installed in #{path}." + puts "New jekyll site installed in #{new_blog_path}." end def self.scaffold_post_content(template_site) - ERB.new(File.read(File.expand_path("_posts/0000-00-00-sample_post.markdown.erb", template_site))).result + ERB.new(File.read(File.expand_path(scaffold_path, template_site))).result end # Internal: Gets the filename of the sample post to be created @@ -26,6 +26,25 @@ module Jekyll def self.initialized_post_name "_posts/#{Time.now.strftime('%Y-%m-%d')}-welcome-to-jekyll.markdown" end + + private + + def self.create_sample_files!(path) + FileUtils.cp_r sample_files, path + FileUtils.rm File.expand_path(scaffold_path, path) + end + + def self.sample_files + Dir.glob("#{template_site}/**/*") + end + + def self.template_site + File.expand_path("../../site_template", File.dirname(__FILE__)) + end + + def self.scaffold_path + "_posts/0000-00-00-sample_post.markdown.erb" + end end end end From a6f3c4f1cd1e603f92cf0b95132abd8eaa226eab Mon Sep 17 00:00:00 2001 From: Dave Cranwell Date: Tue, 12 Mar 2013 15:21:56 +0000 Subject: [PATCH 16/85] Added note to highlight common pitfall/misconception regarding Pagination's capabilities. --- site/_posts/2012-07-01-pagination.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/site/_posts/2012-07-01-pagination.md b/site/_posts/2012-07-01-pagination.md index a82d0fdb1..71c4d55d6 100644 --- a/site/_posts/2012-07-01-pagination.md +++ b/site/_posts/2012-07-01-pagination.md @@ -22,6 +22,11 @@ paginate: 5 The number should be the maximum number of posts you’d like to be displayed per-page in the generated site. +
+
Pagination does not support tags or categories
+

Pagination pages through every post in the posts variable regardless of variables defined in the YAML Front Matter of each. It does not currently allow paging over groups of posts linked by a common tag or category.

+
+ ## Render the paginated posts The next thing you need to do is to actually display your posts in a list using the `paginator` variable that will now be available to you. You’ll probably want to do this in one of the main pages of your site. Here’s one example of a simple way of rendering paginated posts in a HTML file: From b306835ce05c76fbcbda6d993d6a6f98c856d6f2 Mon Sep 17 00:00:00 2001 From: Daniel Grieve Date: Tue, 12 Mar 2013 19:37:27 +0100 Subject: [PATCH 17/85] Add tests for 'new' command. --- test/test_new_command.rb | 104 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 test/test_new_command.rb diff --git a/test/test_new_command.rb b/test/test_new_command.rb new file mode 100644 index 000000000..2532bea8b --- /dev/null +++ b/test/test_new_command.rb @@ -0,0 +1,104 @@ +require 'helper' +require 'jekyll/commands/new' + +class TestNewCommand < Test::Unit::TestCase + def dir_contents(path) + Dir["#{path}/**/*"].each do |file| + file.gsub! path, '' + end + end + + def site_template + File.expand_path("../lib/site_template", File.dirname(__FILE__)) + end + + context 'when args contains a path' do + setup do + @path = 'new-site' + @args = [@path] + @full_path = File.expand_path(@path, Dir.pwd) + end + + teardown do + FileUtils.rm_r @full_path + end + + should 'create a new directory' do + assert !File.exists?(@full_path) + capture_stdout { Jekyll::Commands::New.process(@args) } + assert File.exists?(@full_path) + end + + should 'display a success message' do + output = capture_stdout { Jekyll::Commands::New.process(@args) } + success_message = "New jekyll site installed in #{@full_path}.\n" + assert_equal success_message, output + end + + should 'copy the static files in site template to the new directory' do + static_template_files = dir_contents(site_template).reject do |f| + File.extname(f) == '.erb' + end + + capture_stdout { Jekyll::Commands::New.process(@args) } + + new_site_files = dir_contents(@full_path).select do |f| + static_template_files.include? f + end + + assert_same_elements static_template_files, new_site_files + end + + should 'process any ERB files' do + erb_template_files = dir_contents(site_template).select do |f| + File.extname(f) == '.erb' + end + + stubbed_date = '2013-01-01' + stub.instance_of(Time).strftime { stubbed_date } + + erb_template_files.each do |f| + f.chomp! '.erb' + f.gsub! '0000-00-00', stubbed_date + end + + capture_stdout { Jekyll::Commands::New.process(@args) } + + new_site_files = dir_contents(@full_path).select do |f| + erb_template_files.include? f + end + + assert_same_elements erb_template_files, new_site_files + end + end + + context 'when multiple args are given' do + setup do + @site_name_with_spaces = 'new site name' + @multiple_args = @site_name_with_spaces.split + end + + teardown do + FileUtils.rm_r File.expand_path(@site_name_with_spaces, Dir.pwd) + end + + should 'create a new directory' do + assert !File.exists?(@site_name_with_spaces) + capture_stdout { Jekyll::Commands::New.process(@multiple_args) } + assert File.exists?(@site_name_with_spaces) + end + end + + context 'when no args are given' do + setup do + @empty_args = [] + end + + should 'raise an ArgumentError' do + exception = assert_raise ArgumentError do + Jekyll::Commands::New.process(@empty_args) + end + assert_equal 'You must specify a path.', exception.message + end + end +end From 099fcc27d6517310e957a30d7d3ed0a2778ced69 Mon Sep 17 00:00:00 2001 From: Daniel Grieve Date: Wed, 13 Mar 2013 19:21:11 +0000 Subject: [PATCH 18/85] raise ArgumentError if no args. rename sample post --- lib/jekyll/commands/new.rb | 30 +++++++++---------- ...0000-00-00-welcome-to-jekyll.markdown.erb} | 0 2 files changed, 15 insertions(+), 15 deletions(-) rename lib/site_template/_posts/{0000-00-00-sample_post.markdown.erb => 0000-00-00-welcome-to-jekyll.markdown.erb} (100%) diff --git a/lib/jekyll/commands/new.rb b/lib/jekyll/commands/new.rb index dc71545fb..103a5950e 100644 --- a/lib/jekyll/commands/new.rb +++ b/lib/jekyll/commands/new.rb @@ -3,8 +3,9 @@ require 'erb' module Jekyll module Commands class New < Command - def self.process(args) + raise ArgumentError.new('You must specify a path.') if args.empty? + new_blog_path = File.expand_path(args.join(" "), Dir.pwd) FileUtils.mkdir_p new_blog_path @@ -28,23 +29,22 @@ module Jekyll end private + def self.create_sample_files!(path) + FileUtils.cp_r sample_files, path + FileUtils.rm File.expand_path(scaffold_path, path) + end - def self.create_sample_files!(path) - FileUtils.cp_r sample_files, path - FileUtils.rm File.expand_path(scaffold_path, path) - end + def self.sample_files + Dir.glob("#{template_site}/**/*") + end - def self.sample_files - Dir.glob("#{template_site}/**/*") - end + def self.template_site + File.expand_path("../../site_template", File.dirname(__FILE__)) + end - def self.template_site - File.expand_path("../../site_template", File.dirname(__FILE__)) - end - - def self.scaffold_path - "_posts/0000-00-00-sample_post.markdown.erb" - end + def self.scaffold_path + "_posts/0000-00-00-welcome-to-jekyll.markdown.erb" + end end end end diff --git a/lib/site_template/_posts/0000-00-00-sample_post.markdown.erb b/lib/site_template/_posts/0000-00-00-welcome-to-jekyll.markdown.erb similarity index 100% rename from lib/site_template/_posts/0000-00-00-sample_post.markdown.erb rename to lib/site_template/_posts/0000-00-00-welcome-to-jekyll.markdown.erb From 1ab83ff9e96b83566874a32fea52c9f5ba92e9be Mon Sep 17 00:00:00 2001 From: Daniel Grieve Date: Wed, 13 Mar 2013 19:55:15 +0000 Subject: [PATCH 19/85] fix test to highlight issue with FileUtils.cp_r --- test/test_new_command.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/test_new_command.rb b/test/test_new_command.rb index 2532bea8b..739fcb13e 100644 --- a/test/test_new_command.rb +++ b/test/test_new_command.rb @@ -42,8 +42,8 @@ class TestNewCommand < Test::Unit::TestCase capture_stdout { Jekyll::Commands::New.process(@args) } - new_site_files = dir_contents(@full_path).select do |f| - static_template_files.include? f + new_site_files = dir_contents(@full_path).reject do |f| + File.extname(f) == '.erb' end assert_same_elements static_template_files, new_site_files From 4be5dfdb9a5bcc2befaa057feb13988f909768ef Mon Sep 17 00:00:00 2001 From: Daniel Grieve Date: Wed, 13 Mar 2013 21:27:41 +0000 Subject: [PATCH 20/85] fix copying of site template files --- jekyll.gemspec | 2 +- lib/jekyll/commands/new.rb | 16 ++++++---------- test/test_new_command.rb | 2 +- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/jekyll.gemspec b/jekyll.gemspec index 8291d9ae5..0ebd7f673 100644 --- a/jekyll.gemspec +++ b/jekyll.gemspec @@ -113,7 +113,7 @@ Gem::Specification.new do |s| lib/site_template/_config.yml lib/site_template/_layouts/default.html lib/site_template/_layouts/post.html - lib/site_template/_posts/0000-00-00-sample_post.markdown.erb + lib/site_template/_posts/0000-00-00-welcome-to-jekyll.markdown.erb lib/site_template/css/screen.css lib/site_template/css/syntax.css lib/site_template/images/.gitkeep diff --git a/lib/jekyll/commands/new.rb b/lib/jekyll/commands/new.rb index 103a5950e..e650dc52d 100644 --- a/lib/jekyll/commands/new.rb +++ b/lib/jekyll/commands/new.rb @@ -9,16 +9,16 @@ module Jekyll new_blog_path = File.expand_path(args.join(" "), Dir.pwd) FileUtils.mkdir_p new_blog_path - create_sample_files! new_blog_path + create_sample_files new_blog_path File.open(File.expand_path(self.initialized_post_name, new_blog_path), "w") do |f| - f.write(self.scaffold_post_content(template_site)) + f.write(self.scaffold_post_content(site_template)) end puts "New jekyll site installed in #{new_blog_path}." end def self.scaffold_post_content(template_site) - ERB.new(File.read(File.expand_path(scaffold_path, template_site))).result + ERB.new(File.read(File.expand_path(scaffold_path, site_template))).result end # Internal: Gets the filename of the sample post to be created @@ -29,16 +29,12 @@ module Jekyll end private - def self.create_sample_files!(path) - FileUtils.cp_r sample_files, path + def self.create_sample_files(path) + FileUtils.cp_r site_template + '/.', path FileUtils.rm File.expand_path(scaffold_path, path) end - def self.sample_files - Dir.glob("#{template_site}/**/*") - end - - def self.template_site + def self.site_template File.expand_path("../../site_template", File.dirname(__FILE__)) end diff --git a/test/test_new_command.rb b/test/test_new_command.rb index 739fcb13e..bc9e65851 100644 --- a/test/test_new_command.rb +++ b/test/test_new_command.rb @@ -43,7 +43,7 @@ class TestNewCommand < Test::Unit::TestCase capture_stdout { Jekyll::Commands::New.process(@args) } new_site_files = dir_contents(@full_path).reject do |f| - File.extname(f) == '.erb' + File.extname(f) == '.markdown' end assert_same_elements static_template_files, new_site_files From 5bcc2fd8f9a0690701d6c4b4eafaa5acca0b423a Mon Sep 17 00:00:00 2001 From: Daniel Grieve Date: Wed, 13 Mar 2013 21:57:08 +0000 Subject: [PATCH 21/85] update safe_yaml --- jekyll.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jekyll.gemspec b/jekyll.gemspec index 0ebd7f673..a6efcd620 100644 --- a/jekyll.gemspec +++ b/jekyll.gemspec @@ -30,7 +30,7 @@ Gem::Specification.new do |s| s.add_runtime_dependency('kramdown', "~> 0.13.4") s.add_runtime_dependency('pygments.rb', "~> 0.3.2") s.add_runtime_dependency('commander', "~> 4.1.3") - s.add_runtime_dependency('safe_yaml', "~> 0.4") + s.add_runtime_dependency('safe_yaml', "~> 0.7.0") s.add_development_dependency('rake', "~> 0.9") s.add_development_dependency('rdoc', "~> 3.11") From 92d9c4301b0b97ae7bb4b9db55957606ebda72de Mon Sep 17 00:00:00 2001 From: Daniel Grieve Date: Fri, 15 Mar 2013 22:37:14 +0000 Subject: [PATCH 22/85] display single files from gist --- jekyll.gemspec | 2 +- lib/jekyll/tags/gist.rb | 21 +++++++++--- test/test_tags.rb | 76 +++++++++++++++++++++++++++++++++++------ 3 files changed, 83 insertions(+), 16 deletions(-) diff --git a/jekyll.gemspec b/jekyll.gemspec index 17fb421b4..5c9fdaee6 100644 --- a/jekyll.gemspec +++ b/jekyll.gemspec @@ -30,7 +30,7 @@ Gem::Specification.new do |s| s.add_runtime_dependency('kramdown', "~> 0.14") s.add_runtime_dependency('pygments.rb', "~> 0.3.2") s.add_runtime_dependency('commander', "~> 4.1.3") - s.add_runtime_dependency('safe_yaml', "~> 0.7") + s.add_runtime_dependency('safe_yaml', "~> 0.7.0") s.add_development_dependency('rake', "~> 10.0.3") s.add_development_dependency('rdoc', "~> 3.11") diff --git a/lib/jekyll/tags/gist.rb b/lib/jekyll/tags/gist.rb index d3eb0b37c..f1603b9e5 100644 --- a/lib/jekyll/tags/gist.rb +++ b/lib/jekyll/tags/gist.rb @@ -2,16 +2,27 @@ # # Example: # {% gist 1234567 %} +# {% gist 1234567 file.rb %} module Jekyll class GistTag < Liquid::Tag - def initialize(tag_name, gist, tokens) - super - @gist = gist.strip + def render(context) + if tag_contents = @markup.match(/(\d+) (.*)/) + gist_id, filename = tag_contents[1].strip, tag_contents[2].strip + gist_script_tag(gist_id, filename) + else + "Error parsing gist id" + end end - def render(context) - "" + private + + def gist_script_tag(gist_id, filename=nil) + if filename.empty? + "" + else + "" + end end end end diff --git a/test/test_tags.rb b/test/test_tags.rb index caefb9ac8..f7916fc51 100644 --- a/test/test_tags.rb +++ b/test/test_tags.rb @@ -170,7 +170,7 @@ CONTENT assert_match %r{FINISH HIM}, @result end end - + context "using Redcarpet" do setup do create_post(@content, 'markdown' => 'redcarpet') @@ -203,22 +203,78 @@ CONTENT assert_match %r{/2008/11/21/complex/}, @result end end - - context "simple gist inclusion" do - setup do - @gist = 358471 - content = < 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true}) + create_post(content, {'permalink' => 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true}) + end + + should "write script tag" do + assert_match "", @result + end end - - should "write script tag" do - assert_match %r{}, @result + + context "with specific file" do + setup do + @gist = 358471 + @filename = 'somefile.rb' + content = < 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true}) + end + + should "write script tag with specific file in gist" do + assert_match "", @result + end + end + + context "with blank gist id" do + setup do + content = < 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true}) + end + + should "output error message" do + assert_match "Error parsing gist id", @result + end + end + + context "with invalid gist id" do + setup do + invalid_gist = 'invalid' + content = < 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true}) + end + + should "output error message" do + assert_match "Error parsing gist id", @result + end end end end From b49bba93512e6989de1902565ce776ea49207c26 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sat, 16 Mar 2013 13:15:15 +0100 Subject: [PATCH 23/85] Renamed test under wrong name. --- features/site_configuration.feature | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/site_configuration.feature b/features/site_configuration.feature index b9a082fa0..c07a3c731 100644 --- a/features/site_configuration.feature +++ b/features/site_configuration.feature @@ -3,7 +3,7 @@ Feature: Site configuration I want to be able to configure jekyll In order to make setting up a site easier - Scenario: Change destination directory + Scenario: Change source directory Given I have a blank site in "_sourcedir" And I have an "_sourcedir/index.html" file that contains "Changing source directory" And I have a configuration file with "source" set to "_sourcedir" From 1d920f52f1db09b3f654f88fab8b7fcfd0941d03 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sat, 16 Mar 2013 13:57:28 +0100 Subject: [PATCH 24/85] Fix bug where Command.globs didn't delete the destination directory. There was often a mix between absolute and relative paths and in the previous version, the destination argument was usually an absolute path where the glob array (from Dir['*']) was a relative path. --- lib/jekyll/command.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll/command.rb b/lib/jekyll/command.rb index bbc9e8a6b..ab553dd8e 100644 --- a/lib/jekyll/command.rb +++ b/lib/jekyll/command.rb @@ -3,7 +3,7 @@ module Jekyll def self.globs(source, destination) Dir.chdir(source) do dirs = Dir['*'].select { |x| File.directory?(x) } - dirs -= [destination] + dirs -= [destination, File.realpath(destination), File.basename(destination)] dirs = dirs.map { |x| "#{x}/**/*" } dirs += ['*'] end From a0c0d983bf6df8e217956c63cb5c7de0b871ca61 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sat, 16 Mar 2013 13:59:40 +0100 Subject: [PATCH 25/85] Using a test_dir helper method for tests. --- test/helper.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/test/helper.rb b/test/helper.rb index f4bdcf198..51194f564 100644 --- a/test/helper.rb +++ b/test/helper.rb @@ -28,17 +28,21 @@ class Test::Unit::TestCase include RR::Adapters::TestUnit def dest_dir(*subdirs) - File.join(File.dirname(__FILE__), 'dest', *subdirs) + test_dir('dest', *subdirs) end def source_dir(*subdirs) - File.join(File.dirname(__FILE__), 'source', *subdirs) + test_dir('source', *subdirs) end def clear_dest FileUtils.rm_rf(dest_dir) end + def test_dir(*subdirs) + File.join(File.dirname(__FILE__), *subdirs) + end + def capture_stdout $old_stdout = $stdout $stdout = StringIO.new From d93faac3b8a250391c33aa8becae07572e3f3cb5 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sat, 16 Mar 2013 13:59:59 +0100 Subject: [PATCH 26/85] Rudimentary tests for Jekyll::Command --- test/test_command.rb | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 test/test_command.rb diff --git a/test/test_command.rb b/test/test_command.rb new file mode 100644 index 000000000..ad7d6db19 --- /dev/null +++ b/test/test_command.rb @@ -0,0 +1,36 @@ +require 'helper' + +class TestCommand < Test::Unit::TestCase + context "when calling .globs" do + context "when non-default dest & source dirs" do + setup do + @source = source_dir + @dest = dest_dir + @globs = Command.globs(@source, @dest) + end + should "return an array without the destination dir" do + assert @globs.is_a?(Array) + assert !@globs.include?(@dest) + end + end + context "when using default dest dir" do + setup do + @source = test_dir + @dest = test_dir('_site') + FileUtils.mkdir(@dest) + File.open("#{@dest}/index.html", "w"){ |f| f.write("I was previously generated.") } + @globs = Command.globs(@source, @dest) + end + should "return an array without the destination dir" do + assert @globs.is_a?(Array) + assert !@globs.include?(@dest) + @globs.each do |glob| + assert !glob.include?(File.basename(@dest)) + end + end + teardown do + FileUtils.rm_r(@dest) + end + end + end +end From 52efb71aa24206209d65fe6bbf7a35aefb18a640 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sat, 16 Mar 2013 14:09:53 +0100 Subject: [PATCH 27/85] Added directory_with_contents() to DRY up test code and ensure folders exist in TestCommand. --- test/helper.rb | 6 ++++++ test/test_command.rb | 7 +++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/test/helper.rb b/test/helper.rb index 51194f564..a20d236f4 100644 --- a/test/helper.rb +++ b/test/helper.rb @@ -43,6 +43,12 @@ class Test::Unit::TestCase File.join(File.dirname(__FILE__), *subdirs) end + def directory_with_contents(path) + FileUtils.rm_rf(path) + FileUtils.mkdir(path) + File.open("#{path}/index.html", "w"){ |f| f.write("I was previously generated.") } + end + def capture_stdout $old_stdout = $stdout $stdout = StringIO.new diff --git a/test/test_command.rb b/test/test_command.rb index ad7d6db19..860c0c3d5 100644 --- a/test/test_command.rb +++ b/test/test_command.rb @@ -6,19 +6,22 @@ class TestCommand < Test::Unit::TestCase setup do @source = source_dir @dest = dest_dir + directory_with_contents(@dest) @globs = Command.globs(@source, @dest) end should "return an array without the destination dir" do assert @globs.is_a?(Array) assert !@globs.include?(@dest) end + teardown do + clear_dest + end end context "when using default dest dir" do setup do @source = test_dir @dest = test_dir('_site') - FileUtils.mkdir(@dest) - File.open("#{@dest}/index.html", "w"){ |f| f.write("I was previously generated.") } + directory_with_contents(@dest) @globs = Command.globs(@source, @dest) end should "return an array without the destination dir" do From 8acb1b29bdfa26f595e78aadeddef18c91aa2121 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sat, 16 Mar 2013 14:24:34 +0100 Subject: [PATCH 28/85] Using 1.8.7-compliant File.expand_path instead of >1.9 File.realpath --- lib/jekyll/command.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll/command.rb b/lib/jekyll/command.rb index ab553dd8e..ea513e0d0 100644 --- a/lib/jekyll/command.rb +++ b/lib/jekyll/command.rb @@ -3,7 +3,7 @@ module Jekyll def self.globs(source, destination) Dir.chdir(source) do dirs = Dir['*'].select { |x| File.directory?(x) } - dirs -= [destination, File.realpath(destination), File.basename(destination)] + dirs -= [destination, File.expand_path(destination), File.basename(destination)] dirs = dirs.map { |x| "#{x}/**/*" } dirs += ['*'] end From 7e1100962ce8b95ef96f498d99ba89fa384d9543 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sat, 16 Mar 2013 14:44:49 +0100 Subject: [PATCH 29/85] Load in config from --config switch --- lib/jekyll.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/jekyll.rb b/lib/jekyll.rb index 493b85629..6e4892647 100644 --- a/lib/jekyll.rb +++ b/lib/jekyll.rb @@ -129,8 +129,10 @@ module Jekyll # then, we need to know where to look for _config.yml source = override['source'] || Jekyll::DEFAULTS['source'] - # Get configuration from /_config.yml - config_file = File.join(source, '_config.yml') + # Get configuration from /_config.yml or / + config_file = override.delete('config') + config_file = File.join(source, "_config.yml") if config_file.to_s.empty? + begin config = YAML.safe_load_file(config_file) raise "Configuration file: (INVALID) #{config_file}" if !config.is_a?(Hash) From 9100967ebd0a4c4a767af50afd239572040e1816 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sat, 16 Mar 2013 14:46:26 +0100 Subject: [PATCH 30/85] Add unit tests for custom configuration. --- test/test_configuration.rb | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/test/test_configuration.rb b/test/test_configuration.rb index abaf6117b..40b091ded 100644 --- a/test/test_configuration.rb +++ b/test/test_configuration.rb @@ -25,4 +25,31 @@ class TestConfiguration < Test::Unit::TestCase assert_equal Jekyll::DEFAULTS, Jekyll.configuration({}) end end + context "loading config from external file" do + setup do + @paths = { + :default => File.join(Dir.pwd, '_config.yml'), + :other => File.join(Dir.pwd, '_config.live.yml'), + :empty => "" + } + end + + should "load default config if no config_file is set" do + mock(YAML).safe_load_file(@paths[:default]) { Hash.new } + mock($stdout).puts("Configuration file: #{@paths[:default]}") + assert_equal Jekyll::DEFAULTS, Jekyll.configuration({}) + end + + should "load different config if specified" do + mock(YAML).safe_load_file(@paths[:other]) { {"baseurl" => "http://wahoo.dev"} } + mock($stdout).puts("Configuration file: #{@paths[:other]}") + assert_equal Jekyll::DEFAULTS.deep_merge({ "baseurl" => "http://wahoo.dev" }), Jekyll.configuration({ "config" => @paths[:other] }) + end + + should "load default config if path passed is empty" do + mock(YAML).safe_load_file(@paths[:default]) { Hash.new } + mock($stdout).puts("Configuration file: #{@paths[:default]}") + assert_equal Jekyll::DEFAULTS, Jekyll.configuration({ "config" => @paths[:empty] }) + end + end end From 7a57451962ea55716c4f3790e39cd350871a76d2 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sat, 16 Mar 2013 14:54:44 +0100 Subject: [PATCH 31/85] Add --config switch to build and serve commands. --- bin/jekyll | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bin/jekyll b/bin/jekyll index d135b952e..1f3a9c8d4 100755 --- a/bin/jekyll +++ b/bin/jekyll @@ -34,6 +34,7 @@ command :build do |c| c.syntax = 'jekyll build [options]' c.description = 'Build your site' + c.option '--config [CONFIG_FILE]', 'Custom configuration file' c.option '--future', 'Publishes posts with a future date' c.option '--limit_posts MAX_POSTS', 'Limits the number of posts to parse and publish' c.option '-w', '--watch', 'Watch for changes and rebuild' @@ -52,6 +53,7 @@ command :serve do |c| c.syntax = 'jekyll serve [options]' c.description = 'Serve your site locally' + c.option '--config [CONFIG_FILE]', 'Custom configuration file' c.option '--future', 'Publishes posts with a future date' c.option '--limit_posts MAX_POSTS', 'Limits the number of posts to parse and publish' c.option '-w', '--watch', 'Watch for changes and rebuild' From 7425b2c32e92ef33da8c7cc68f128fe4ec39602f Mon Sep 17 00:00:00 2001 From: Tommy Sullivan Date: Sat, 16 Mar 2013 15:12:30 +0100 Subject: [PATCH 32/85] Add test to ensure plugins are executed in order of priority. --- test/source/_plugins/dummy.rb | 8 ++++++++ test/test_site.rb | 5 +++++ 2 files changed, 13 insertions(+) create mode 100644 test/source/_plugins/dummy.rb diff --git a/test/source/_plugins/dummy.rb b/test/source/_plugins/dummy.rb new file mode 100644 index 000000000..bfd46e1ce --- /dev/null +++ b/test/source/_plugins/dummy.rb @@ -0,0 +1,8 @@ +module Jekyll + class Dummy < Generator + priority :high + + def generate(site) + end + end +end diff --git a/test/test_site.rb b/test/test_site.rb index a6b5c2f4f..f98518757 100644 --- a/test/test_site.rb +++ b/test/test_site.rb @@ -124,6 +124,11 @@ class TestSite < Test::Unit::TestCase assert_equal mtime3, mtime4 # no modifications, so must be the same end + should "setup plugins in priority order" do + assert_equal @site.converters.sort_by(&:class).map{|c|c.class.priority}, @site.converters.map{|c|c.class.priority} + assert_equal @site.generators.sort_by(&:class).map{|g|g.class.priority}, @site.generators.map{|g|g.class.priority} + end + should "read layouts" do @site.read_layouts assert_equal ["default", "simple"].sort, @site.layouts.keys.sort From 10ee5c8999626ce91746c3720f6051475e3e58d0 Mon Sep 17 00:00:00 2001 From: Matt Rogers Date: Sat, 16 Mar 2013 15:19:32 +0100 Subject: [PATCH 33/85] Remove the duplication when creating Converters and Generators Encapsulate it in a method and give the method the class to walk the subclass tree for to create new objects. --- lib/jekyll/site.rb | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/lib/jekyll/site.rb b/lib/jekyll/site.rb index 94c4b1a0c..da7f7f8b6 100644 --- a/lib/jekyll/site.rb +++ b/lib/jekyll/site.rb @@ -88,17 +88,8 @@ module Jekyll end end - self.converters = Jekyll::Converter.subclasses.select do |c| - !self.safe || c.safe - end.map do |c| - c.new(self.config) - end - - self.generators = Jekyll::Generator.subclasses.select do |c| - !self.safe || c.safe - end.map do |c| - c.new(self.config) - end + self.converters = instantiate_subclasses(Jekyll::Converter) + self.generators = instantiate_subclasses(Jekyll::Generator) end # Internal: Setup the plugin search path @@ -388,6 +379,21 @@ module Jekyll end end + # Create array of instances of the subclasses of the class or module + # passed in as argument. + # + # klass - class or module containing the subclasses which should be + # instantiated + # + # Returns array of instances of subclasses of parameter + def instantiate_subclasses(klass) + klass.subclasses.select do |c| + !self.safe || c.safe + end.map do |c| + c.new(self.config) + end + end + # Read the entries from a particular directory for processing # # dir - The String relative path of the directory to read From caa6a4ebfd7b60d824a7a31c288c9038e2e1cbae Mon Sep 17 00:00:00 2001 From: Tommy Sullivan Date: Sat, 16 Mar 2013 15:24:12 +0100 Subject: [PATCH 34/85] Sort instantiated subclasses in Site. --- lib/jekyll/site.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll/site.rb b/lib/jekyll/site.rb index da7f7f8b6..3b21c6adc 100644 --- a/lib/jekyll/site.rb +++ b/lib/jekyll/site.rb @@ -389,7 +389,7 @@ module Jekyll def instantiate_subclasses(klass) klass.subclasses.select do |c| !self.safe || c.safe - end.map do |c| + end.sort.map do |c| c.new(self.config) end end From 1d05e0be81a0cb596c34c1c69493b6feb9c7ef38 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sat, 16 Mar 2013 20:06:40 +0100 Subject: [PATCH 35/85] Added tests for generators. --- test/test_site.rb | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/test/test_site.rb b/test/test_site.rb index a6b5c2f4f..00c2766e0 100644 --- a/test/test_site.rb +++ b/test/test_site.rb @@ -45,6 +45,21 @@ class TestSite < Test::Unit::TestCase assert_equal Hash.new, @site.tags end + should "give site with parsed pages and posts to generators" do + @site.reset + @site.read + class MyGenerator < Generator + def generate(site) + site.pages.dup.each do |page| + raise "#{page} isn't a page" unless page.is_a?(Page) + raise "#{page} doesn't respond to :name" unless page.respond_to?(:name) + end + end + end + @site.generate + assert_not_equal 0, @site.pages.size + end + should "reset data before processing" do clear_dest @site.process From 39f144ed0182b95ba49e651ae3c0eea66ffcd007 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sat, 16 Mar 2013 20:06:50 +0100 Subject: [PATCH 36/85] Newline. --- test/suite.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/suite.rb b/test/suite.rb index 98923ca10..81b617194 100644 --- a/test/suite.rb +++ b/test/suite.rb @@ -8,4 +8,4 @@ require 'test/unit' tests = Dir[File.expand_path("#{File.dirname(__FILE__)}/test_*.rb")] tests.each do |file| require file -end \ No newline at end of file +end From bdc3d67799b87d6a5ea511ef0eef64bde2d5efd6 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sat, 16 Mar 2013 20:09:22 +0100 Subject: [PATCH 37/85] Update history to reflect merge of #863 --- History.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/History.txt b/History.txt index e620d3801..177d1e76d 100644 --- a/History.txt +++ b/History.txt @@ -4,6 +4,7 @@ * Removed importers/migrators from main project, migrated to jekyll-import sub-gem (#793) * Added ability to render drafts in _drafts folder via command line (#833) * Minor Enhancements + * Accept custom configuration file via CLI (#863) * Load in Apache MIME Types on `jekyll serve` (#847) * Improve debugability of error message for a malformed highlight tag (#785) * Allow symlinked files in unsafe mode (#824) From df7b9f4f01d1a55f4ba19beca6f41dbf3b00da83 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sat, 16 Mar 2013 20:11:11 +0100 Subject: [PATCH 38/85] Update history to reflect merge of #864. --- History.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/History.txt b/History.txt index 177d1e76d..5948d62a3 100644 --- a/History.txt +++ b/History.txt @@ -27,6 +27,7 @@ * Add source and destination directory protection (#535) * Better YAML error message (#718) * Bug Fixes + * Order plugin execution by priority (#864) * Fixed Page#dir and Page#url for edge cases (#536) * Fix broken post_url with posts with a time in their YAML Front-Matter (#831) * Look for plugins under the source directory (#654) From 6c5d001986d7c71c04e60b10d2a6b2dc4b96a2ba Mon Sep 17 00:00:00 2001 From: Daniel Grieve Date: Sat, 16 Mar 2013 19:20:54 +0000 Subject: [PATCH 39/85] replace \s with space --- lib/jekyll/tags/gist.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/jekyll/tags/gist.rb b/lib/jekyll/tags/gist.rb index f1603b9e5..efeb62c36 100644 --- a/lib/jekyll/tags/gist.rb +++ b/lib/jekyll/tags/gist.rb @@ -19,9 +19,9 @@ module Jekyll def gist_script_tag(gist_id, filename=nil) if filename.empty? - "" + "" else - "" + "" end end end From 23a01e77661bba6cb4a8e31de972bc4a17fcc39c Mon Sep 17 00:00:00 2001 From: paco Date: Sat, 16 Mar 2013 21:20:04 +0100 Subject: [PATCH 40/85] Patch for multibyte URI problem. Closes #723. --- lib/jekyll/commands/serve.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/jekyll/commands/serve.rb b/lib/jekyll/commands/serve.rb index a12096ae5..ae28665b3 100644 --- a/lib/jekyll/commands/serve.rb +++ b/lib/jekyll/commands/serve.rb @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- module Jekyll module Commands class Serve < Command @@ -12,13 +13,17 @@ module Jekyll mime_types_file = File.expand_path('../mime.types', File.dirname(__FILE__)) mime_types = WEBrick::HTTPUtils::load_mime_types(mime_types_file) + # recreate NondisclosureName under utf-8 circumstance + fh_option = WEBrick::Config::FileHandler + fh_option[:NondisclosureName] = ['.ht*','~*'] + s = HTTPServer.new( :Port => options['port'], :BindAddress => options['host'], :MimeTypes => mime_types ) - s.mount(options['baseurl'], HTTPServlet::FileHandler, destination) + s.mount(options['baseurl'], HTTPServlet::FileHandler, destination, fh_option) t = Thread.new { s.start } trap("INT") { s.shutdown } t.join() From 9ae7ca008be9ef6ee44ff039c3c2e5b9ec6a9c27 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sat, 16 Mar 2013 21:21:13 +0100 Subject: [PATCH 41/85] Update history to reflect merge of #723. --- History.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/History.txt b/History.txt index 5948d62a3..18c26a0a0 100644 --- a/History.txt +++ b/History.txt @@ -27,6 +27,7 @@ * Add source and destination directory protection (#535) * Better YAML error message (#718) * Bug Fixes + * Patch for multibyte URI problem with jekyll serve (#723) * Order plugin execution by priority (#864) * Fixed Page#dir and Page#url for edge cases (#536) * Fix broken post_url with posts with a time in their YAML Front-Matter (#831) From 22d1fdab540bb10c2058884fe3bb43c904058730 Mon Sep 17 00:00:00 2001 From: Daniel Grieve Date: Sun, 17 Mar 2013 11:29:42 +0000 Subject: [PATCH 42/85] tie down the regex match on gist filenames --- lib/jekyll/tags/gist.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll/tags/gist.rb b/lib/jekyll/tags/gist.rb index efeb62c36..0b40a5fde 100644 --- a/lib/jekyll/tags/gist.rb +++ b/lib/jekyll/tags/gist.rb @@ -7,7 +7,7 @@ module Jekyll class GistTag < Liquid::Tag def render(context) - if tag_contents = @markup.match(/(\d+) (.*)/) + if tag_contents = @markup.strip.match(/\A(\d+) ?(\S*)\z/) gist_id, filename = tag_contents[1].strip, tag_contents[2].strip gist_script_tag(gist_id, filename) else From 66c5ef255633019fcd3294eac900e17be918eef0 Mon Sep 17 00:00:00 2001 From: Aleksey V Zapparov Date: Sun, 17 Mar 2013 13:42:46 +0100 Subject: [PATCH 43/85] Fix typos and remove some obtrusive code --- lib/jekyll/post.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/jekyll/post.rb b/lib/jekyll/post.rb index 181207429..b97dec4b8 100644 --- a/lib/jekyll/post.rb +++ b/lib/jekyll/post.rb @@ -79,7 +79,6 @@ module Jekyll super(base, name) self.excerpt = self.extract_excerpt self.data['layout'] = 'post' unless self.data.has_key?('layout') - nil end # Compares Post objects. First compares the Post date. If the dates are @@ -116,7 +115,6 @@ module Jekyll def transform super self.excerpt = converter.convert(self.excerpt) - nil end # The generated directory into which the post will be placed @@ -313,7 +311,7 @@ module Jekyll # [1]: http://example.com/ # # This is fairly good option for Markdown and Textile files. But might cause - # problems for HTML posts (which is quiet unusual for Jekyll). If default + # problems for HTML posts (which is quite unusual for Jekyll). If default # excerpt delimiter is not good for you, you might want to set your own via # configuration option `excerpt_separator`. For example, following is a good # alternative for HTML posts: From 9726bd625d3d7b6fb053966dc99cd97795f1e602 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 17 Mar 2013 15:46:46 +0100 Subject: [PATCH 44/85] Whitespace issue in bin/jekyll --- bin/jekyll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/jekyll b/bin/jekyll index 02c364cfe..1dacb29be 100755 --- a/bin/jekyll +++ b/bin/jekyll @@ -16,7 +16,7 @@ global_option '-d', '--destination [DIR]', 'Destination directory (defaults to . global_option '--safe', 'Safe mode (defaults to false)' global_option '--plugins', 'Plugins directory (defaults to ./_plugins)' global_option '--layouts', 'Layouts directory (defaults to ./_layouts)' - + # Option names don't always directly match the configuration value we'd like. # This method will rename options to match what Jekyll configuration expects. # From a15e0c811b92bfd2c7966897e7c5ce550a05130a Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 17 Mar 2013 15:47:26 +0100 Subject: [PATCH 45/85] Remove git poop. --- jekyll.gemspec | 6 ------ 1 file changed, 6 deletions(-) diff --git a/jekyll.gemspec b/jekyll.gemspec index b32508994..c93639c53 100644 --- a/jekyll.gemspec +++ b/jekyll.gemspec @@ -70,11 +70,8 @@ Gem::Specification.new do |s| lib/jekyll.rb lib/jekyll/command.rb lib/jekyll/commands/build.rb -<<<<<<< HEAD lib/jekyll/commands/migrate.rb lib/jekyll/commands/new.rb -======= ->>>>>>> master lib/jekyll/commands/serve.rb lib/jekyll/converter.rb lib/jekyll/converters/identity.rb @@ -98,7 +95,6 @@ Gem::Specification.new do |s| lib/jekyll/tags/highlight.rb lib/jekyll/tags/include.rb lib/jekyll/tags/post_url.rb -<<<<<<< HEAD lib/site_template/_config.yml lib/site_template/_layouts/default.html lib/site_template/_layouts/post.html @@ -108,7 +104,6 @@ Gem::Specification.new do |s| lib/site_template/images/.gitkeep lib/site_template/images/rss.png lib/site_template/index.html -======= script/bootstrap site/.gitignore site/CNAME @@ -159,7 +154,6 @@ Gem::Specification.new do |s| site/img/tube1x.png site/index.html site/js/modernizr-2.5.3.min.js ->>>>>>> master test/fixtures/broken_front_matter1.erb test/fixtures/broken_front_matter2.erb test/fixtures/broken_front_matter3.erb From 43213c2e79fda75031b879f8fabc3680c7751060 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 17 Mar 2013 15:50:01 +0100 Subject: [PATCH 46/85] Update history to reflect merge of #764 --- History.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/History.txt b/History.txt index 18c26a0a0..2f4b6534f 100644 --- a/History.txt +++ b/History.txt @@ -1,5 +1,6 @@ == HEAD * Major Enhancements + * Add `jekyll new` subcommand: generate a jekyll scaffold (#764) * Refactored jekyll commands into subcommands: build, serve, and migrate. (#690) * Removed importers/migrators from main project, migrated to jekyll-import sub-gem (#793) * Added ability to render drafts in _drafts folder via command line (#833) From 88f59c61542c011dad60178c1de5049e04da1012 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 17 Mar 2013 15:54:47 +0100 Subject: [PATCH 47/85] Update history to reflect merge of #837. --- History.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/History.txt b/History.txt index 2f4b6534f..4eeaf966c 100644 --- a/History.txt +++ b/History.txt @@ -5,6 +5,7 @@ * Removed importers/migrators from main project, migrated to jekyll-import sub-gem (#793) * Added ability to render drafts in _drafts folder via command line (#833) * Minor Enhancements + * Adds excerpt attribute to posts which contains first paragraph of content (#837) * Accept custom configuration file via CLI (#863) * Load in Apache MIME Types on `jekyll serve` (#847) * Improve debugability of error message for a malformed highlight tag (#785) From b9cbce5e5f98d19963f0918356933e96f84bfd75 Mon Sep 17 00:00:00 2001 From: Daniel Grieve Date: Sun, 17 Mar 2013 15:04:03 +0000 Subject: [PATCH 48/85] fix regex --- lib/jekyll/tags/gist.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll/tags/gist.rb b/lib/jekyll/tags/gist.rb index 0b40a5fde..0d981af11 100644 --- a/lib/jekyll/tags/gist.rb +++ b/lib/jekyll/tags/gist.rb @@ -7,7 +7,7 @@ module Jekyll class GistTag < Liquid::Tag def render(context) - if tag_contents = @markup.strip.match(/\A(\d+) ?(\S*)\z/) + if tag_contents = @markup.strip.match(/\A(\d+) ?(\S*)\Z/) gist_id, filename = tag_contents[1].strip, tag_contents[2].strip gist_script_tag(gist_id, filename) else From eef13d7d4367f8567c27d393b5b69d6eb36290c3 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 17 Mar 2013 17:26:33 +0100 Subject: [PATCH 49/85] Expose site.baseurl to Liquid templates. --- lib/jekyll/site.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/jekyll/site.rb b/lib/jekyll/site.rb index 3b21c6adc..35e10144f 100644 --- a/lib/jekyll/site.rb +++ b/lib/jekyll/site.rb @@ -21,6 +21,7 @@ module Jekyll self.plugins = plugins_path self.lsi = config['lsi'] self.pygments = config['pygments'] + self.baseurl = config['baseurl'] || '/' self.permalink_style = config['permalink'].to_sym self.exclude = config['exclude'] || [] self.include = config['include'] || [] From d5ed4fc5d044a38c70e7405d090461e53c6bc56d Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 17 Mar 2013 20:42:11 +0100 Subject: [PATCH 50/85] Add baseurl to Site attr_accessor list. --- lib/jekyll/site.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll/site.rb b/lib/jekyll/site.rb index 35e10144f..6b431acbc 100644 --- a/lib/jekyll/site.rb +++ b/lib/jekyll/site.rb @@ -5,7 +5,7 @@ module Jekyll attr_accessor :config, :layouts, :posts, :pages, :static_files, :categories, :exclude, :include, :source, :dest, :lsi, :pygments, :permalink_style, :tags, :time, :future, :safe, :plugins, :limit_posts, - :show_drafts, :keep_files + :show_drafts, :keep_files, :baseurl attr_accessor :converters, :generators From b3c319743c31fb1266ba7c627b22551397c39185 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 17 Mar 2013 20:49:58 +0100 Subject: [PATCH 51/85] Update history to reflect merge of #862. --- History.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/History.txt b/History.txt index 4eeaf966c..6b3e0a99e 100644 --- a/History.txt +++ b/History.txt @@ -39,7 +39,7 @@ * Force Categories to be Strings (#767) * Safe YAML plugin to prevent vulnerability (#777) * Add SVG support to Jekyll/WEBrick. (#407, #406) - * Prevent custom destination from causing continuous regen on watch (#528, #820) + * Prevent custom destination from causing continuous regen on watch (#528, #820, #862) * Site Enhancements * Bring site into master branch with better preview/deploy (#709) * Redesigned site (#583) From 69edec85597dd12c1ed7c6ad4346f7dc1faf289d Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 17 Mar 2013 20:54:52 +0100 Subject: [PATCH 52/85] Update history to reflect merge of #869. --- History.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/History.txt b/History.txt index 6b3e0a99e..361d12441 100644 --- a/History.txt +++ b/History.txt @@ -5,6 +5,7 @@ * Removed importers/migrators from main project, migrated to jekyll-import sub-gem (#793) * Added ability to render drafts in _drafts folder via command line (#833) * Minor Enhancements + * Expose site.baseurl to Liquid templates (#869) * Adds excerpt attribute to posts which contains first paragraph of content (#837) * Accept custom configuration file via CLI (#863) * Load in Apache MIME Types on `jekyll serve` (#847) From 92a2a9ff612f6dc299a1a0cd6dc67c8c050bd81f Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 17 Mar 2013 21:07:27 +0100 Subject: [PATCH 53/85] Update gemspec so bundler doesn't complain. --- jekyll.gemspec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/jekyll.gemspec b/jekyll.gemspec index c93639c53..40e2f1b74 100644 --- a/jekyll.gemspec +++ b/jekyll.gemspec @@ -6,7 +6,7 @@ Gem::Specification.new do |s| s.name = 'jekyll' s.version = '1.0.0.beta1' s.license = 'MIT' - s.date = '2013-03-14' + s.date = '2013-03-17' s.rubyforge_project = 'jekyll' s.summary = "A simple, blog aware, static site generator." @@ -70,7 +70,6 @@ Gem::Specification.new do |s| lib/jekyll.rb lib/jekyll/command.rb lib/jekyll/commands/build.rb - lib/jekyll/commands/migrate.rb lib/jekyll/commands/new.rb lib/jekyll/commands/serve.rb lib/jekyll/converter.rb @@ -164,6 +163,7 @@ Gem::Specification.new do |s| test/source/_includes/sig.markdown test/source/_layouts/default.html test/source/_layouts/simple.html + test/source/_plugins/dummy.rb test/source/_posts/2008-02-02-not-published.textile test/source/_posts/2008-02-02-published.textile test/source/_posts/2008-10-18-foo-bar.textile @@ -189,6 +189,7 @@ Gem::Specification.new do |s| test/source/_posts/2010-01-16-override-data.textile test/source/_posts/2011-04-12-md-extension.md test/source/_posts/2011-04-12-text-extension.text + test/source/_posts/2013-01-02-post-excerpt.markdown test/source/_posts/2013-01-12-nil-layout.textile test/source/_posts/2013-01-12-no-layout.textile test/source/about.html @@ -204,12 +205,14 @@ Gem::Specification.new do |s| test/source/win/_posts/2009-05-24-yaml-linebreak.markdown test/source/z_category/_posts/2008-9-23-categories.textile test/suite.rb + test/test_command.rb test/test_configuration.rb test/test_convertible.rb test/test_core_ext.rb test/test_filters.rb test/test_generated_site.rb test/test_kramdown.rb + test/test_new_command.rb test/test_page.rb test/test_pager.rb test/test_post.rb From ee697a6308f32a4b7374069da72e4c6681ea40ae Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 17 Mar 2013 21:09:58 +0100 Subject: [PATCH 54/85] Add Jekyll::DEFAULTS['baseurl'] and set the default pygments option to _true_ --- lib/jekyll.rb | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/jekyll.rb b/lib/jekyll.rb index ead5e1382..b773897fc 100644 --- a/lib/jekyll.rb +++ b/lib/jekyll.rb @@ -64,12 +64,13 @@ module Jekyll 'keep_files' => ['.git','.svn'], 'future' => true, # remove and make true just default - 'pygments' => false, # remove and make true just default + 'pygments' => true, # remove and make true just default - 'markdown' => 'maruku', # no longer a command option - 'permalink' => 'date', # no longer a command option - 'include' => ['.htaccess'], # no longer a command option - 'paginate_path' => 'page:num', # no longer a command option + 'markdown' => 'maruku', + 'permalink' => 'date', + 'baseurl' => '', + 'include' => ['.htaccess'], + 'paginate_path' => 'page:num', 'markdown_ext' => 'markdown,mkd,mkdn,md', 'textile_ext' => 'textile', From 8c6c33a6c87643ecab6acb7b48013be3071b22b7 Mon Sep 17 00:00:00 2001 From: Tom Preston-Werner Date: Sun, 17 Mar 2013 13:14:35 -0700 Subject: [PATCH 55/85] Use GH Pages MIME types. --- lib/jekyll/mime.types | 1672 +++-------------------------------------- 1 file changed, 84 insertions(+), 1588 deletions(-) diff --git a/lib/jekyll/mime.types b/lib/jekyll/mime.types index b90b16587..fe827bb89 100644 --- a/lib/jekyll/mime.types +++ b/lib/jekyll/mime.types @@ -1,1588 +1,84 @@ -# This file maps Internet media types to unique file extension(s). -# Although created for httpd, this file is used by many software systems -# and has been placed in the public domain for unlimited redisribution. -# -# The table below contains both registered and (common) unregistered types. -# A type that has no unique extension can be ignored -- they are listed -# here to guide configurations toward known types and to make it easier to -# identify "new" types. File extensions are also commonly used to indicate -# content languages and encodings, so choose them carefully. -# -# Internet media types should be registered as described in RFC 4288. -# The registry is at . -# -# MIME type (lowercased) Extensions -# ============================================ ========== -# application/1d-interleaved-parityfec -# application/3gpp-ims+xml -# application/activemessage -application/andrew-inset ez -# application/applefile -application/applixware aw -application/atom+xml atom -application/atomcat+xml atomcat -# application/atomicmail -application/atomsvc+xml atomsvc -# application/auth-policy+xml -# application/batch-smtp -# application/beep+xml -# application/calendar+xml -# application/cals-1840 -# application/ccmp+xml -application/ccxml+xml ccxml -application/cdmi-capability cdmia -application/cdmi-container cdmic -application/cdmi-domain cdmid -application/cdmi-object cdmio -application/cdmi-queue cdmiq -# application/cea-2018+xml -# application/cellml+xml -# application/cfw -# application/cnrp+xml -# application/commonground -# application/conference-info+xml -# application/cpl+xml -# application/csta+xml -# application/cstadata+xml -application/cu-seeme cu -# application/cybercash -application/davmount+xml davmount -# application/dca-rft -# application/dec-dx -# application/dialog-info+xml -# application/dicom -# application/dns -application/docbook+xml dbk -# application/dskpp+xml -application/dssc+der dssc -application/dssc+xml xdssc -# application/dvcs -application/ecmascript ecma -# application/edi-consent -# application/edi-x12 -# application/edifact -application/emma+xml emma -# application/epp+xml -application/epub+zip epub -# application/eshop -# application/example -application/exi exi -# application/fastinfoset -# application/fastsoap -# application/fits -application/font-tdpfr pfr -# application/framework-attributes+xml -application/gml+xml gml -application/gpx+xml gpx -application/gxf gxf -# application/h224 -# application/held+xml -# application/http -application/hyperstudio stk -# application/ibe-key-request+xml -# application/ibe-pkg-reply+xml -# application/ibe-pp-data -# application/iges -# application/im-iscomposing+xml -# application/index -# application/index.cmd -# application/index.obj -# application/index.response -# application/index.vnd -application/inkml+xml ink inkml -# application/iotp -application/ipfix ipfix -# application/ipp -# application/isup -application/java-archive jar -application/java-serialized-object ser -application/java-vm class -application/javascript js -application/json json -application/jsonml+json jsonml -# application/kpml-request+xml -# application/kpml-response+xml -application/lost+xml lostxml -application/mac-binhex40 hqx -application/mac-compactpro cpt -# application/macwriteii -application/mads+xml mads -application/marc mrc -application/marcxml+xml mrcx -application/mathematica ma nb mb -# application/mathml-content+xml -# application/mathml-presentation+xml -application/mathml+xml mathml -# application/mbms-associated-procedure-description+xml -# application/mbms-deregister+xml -# application/mbms-envelope+xml -# application/mbms-msk+xml -# application/mbms-msk-response+xml -# application/mbms-protection-description+xml -# application/mbms-reception-report+xml -# application/mbms-register+xml -# application/mbms-register-response+xml -# application/mbms-user-service-description+xml -application/mbox mbox -# application/media_control+xml -application/mediaservercontrol+xml mscml -application/metalink+xml metalink -application/metalink4+xml meta4 -application/mets+xml mets -# application/mikey -application/mods+xml mods -# application/moss-keys -# application/moss-signature -# application/mosskey-data -# application/mosskey-request -application/mp21 m21 mp21 -application/mp4 mp4s -# application/mpeg4-generic -# application/mpeg4-iod -# application/mpeg4-iod-xmt -# application/msc-ivr+xml -# application/msc-mixer+xml -application/msword doc dot -application/mxf mxf -# application/nasdata -# application/news-checkgroups -# application/news-groupinfo -# application/news-transmission -# application/nss -# application/ocsp-request -# application/ocsp-response -application/octet-stream bin dms lrf mar so dist distz pkg bpk dump elc deploy -application/oda oda -application/oebps-package+xml opf -application/ogg ogx -application/omdoc+xml omdoc -application/onenote onetoc onetoc2 onetmp onepkg -application/oxps oxps -# application/parityfec -application/patch-ops-error+xml xer -application/pdf pdf -application/pgp-encrypted pgp -# application/pgp-keys -application/pgp-signature asc sig -application/pics-rules prf -# application/pidf+xml -# application/pidf-diff+xml -application/pkcs10 p10 -application/pkcs7-mime p7m p7c -application/pkcs7-signature p7s -application/pkcs8 p8 -application/pkix-attr-cert ac -application/pkix-cert cer -application/pkix-crl crl -application/pkix-pkipath pkipath -application/pkixcmp pki -application/pls+xml pls -# application/poc-settings+xml -application/postscript ai eps ps -# application/prs.alvestrand.titrax-sheet -application/prs.cww cww -# application/prs.nprend -# application/prs.plucker -# application/prs.rdf-xml-crypt -# application/prs.xsf+xml -application/pskc+xml pskcxml -# application/qsig -application/rdf+xml rdf -application/reginfo+xml rif -application/relax-ng-compact-syntax rnc -# application/remote-printing -application/resource-lists+xml rl -application/resource-lists-diff+xml rld -# application/riscos -# application/rlmi+xml -application/rls-services+xml rs -application/rpki-ghostbusters gbr -application/rpki-manifest mft -application/rpki-roa roa -# application/rpki-updown -application/rsd+xml rsd -application/rss+xml rss -application/rtf rtf -# application/rtx -# application/samlassertion+xml -# application/samlmetadata+xml -application/sbml+xml sbml -application/scvp-cv-request scq -application/scvp-cv-response scs -application/scvp-vp-request spq -application/scvp-vp-response spp -application/sdp sdp -# application/set-payment -application/set-payment-initiation setpay -# application/set-registration -application/set-registration-initiation setreg -# application/sgml -# application/sgml-open-catalog -application/shf+xml shf -# application/sieve -# application/simple-filter+xml -# application/simple-message-summary -# application/simplesymbolcontainer -# application/slate -# application/smil -application/smil+xml smi smil -# application/soap+fastinfoset -# application/soap+xml -application/sparql-query rq -application/sparql-results+xml srx -# application/spirits-event+xml -application/srgs gram -application/srgs+xml grxml -application/sru+xml sru -application/ssdl+xml ssdl -application/ssml+xml ssml -# application/tamp-apex-update -# application/tamp-apex-update-confirm -# application/tamp-community-update -# application/tamp-community-update-confirm -# application/tamp-error -# application/tamp-sequence-adjust -# application/tamp-sequence-adjust-confirm -# application/tamp-status-query -# application/tamp-status-response -# application/tamp-update -# application/tamp-update-confirm -application/tei+xml tei teicorpus -application/thraud+xml tfi -# application/timestamp-query -# application/timestamp-reply -application/timestamped-data tsd -# application/tve-trigger -# application/ulpfec -# application/vcard+xml -# application/vemmi -# application/vividence.scriptfile -# application/vnd.3gpp.bsf+xml -application/vnd.3gpp.pic-bw-large plb -application/vnd.3gpp.pic-bw-small psb -application/vnd.3gpp.pic-bw-var pvb -# application/vnd.3gpp.sms -# application/vnd.3gpp2.bcmcsinfo+xml -# application/vnd.3gpp2.sms -application/vnd.3gpp2.tcap tcap -application/vnd.3m.post-it-notes pwn -application/vnd.accpac.simply.aso aso -application/vnd.accpac.simply.imp imp -application/vnd.acucobol acu -application/vnd.acucorp atc acutc -application/vnd.adobe.air-application-installer-package+zip air -application/vnd.adobe.formscentral.fcdt fcdt -application/vnd.adobe.fxp fxp fxpl -# application/vnd.adobe.partial-upload -application/vnd.adobe.xdp+xml xdp -application/vnd.adobe.xfdf xfdf -# application/vnd.aether.imp -# application/vnd.ah-barcode -application/vnd.ahead.space ahead -application/vnd.airzip.filesecure.azf azf -application/vnd.airzip.filesecure.azs azs -application/vnd.amazon.ebook azw -application/vnd.americandynamics.acc acc -application/vnd.amiga.ami ami -# application/vnd.amundsen.maze+xml -application/vnd.android.package-archive apk -application/vnd.anser-web-certificate-issue-initiation cii -application/vnd.anser-web-funds-transfer-initiation fti -application/vnd.antix.game-component atx -application/vnd.apple.installer+xml mpkg -application/vnd.apple.mpegurl m3u8 -# application/vnd.arastra.swi -application/vnd.aristanetworks.swi swi -application/vnd.astraea-software.iota iota -application/vnd.audiograph aep -# application/vnd.autopackage -# application/vnd.avistar+xml -application/vnd.blueice.multipass mpm -# application/vnd.bluetooth.ep.oob -application/vnd.bmi bmi -application/vnd.businessobjects rep -# application/vnd.cab-jscript -# application/vnd.canon-cpdl -# application/vnd.canon-lips -# application/vnd.cendio.thinlinc.clientconf -application/vnd.chemdraw+xml cdxml -application/vnd.chipnuts.karaoke-mmd mmd -application/vnd.cinderella cdy -# application/vnd.cirpack.isdn-ext -application/vnd.claymore cla -application/vnd.cloanto.rp9 rp9 -application/vnd.clonk.c4group c4g c4d c4f c4p c4u -application/vnd.cluetrust.cartomobile-config c11amc -application/vnd.cluetrust.cartomobile-config-pkg c11amz -# application/vnd.collection+json -# application/vnd.commerce-battelle -application/vnd.commonspace csp -application/vnd.contact.cmsg cdbcmsg -application/vnd.cosmocaller cmc -application/vnd.crick.clicker clkx -application/vnd.crick.clicker.keyboard clkk -application/vnd.crick.clicker.palette clkp -application/vnd.crick.clicker.template clkt -application/vnd.crick.clicker.wordbank clkw -application/vnd.criticaltools.wbs+xml wbs -application/vnd.ctc-posml pml -# application/vnd.ctct.ws+xml -# application/vnd.cups-pdf -# application/vnd.cups-postscript -application/vnd.cups-ppd ppd -# application/vnd.cups-raster -# application/vnd.cups-raw -# application/vnd.curl -application/vnd.curl.car car -application/vnd.curl.pcurl pcurl -# application/vnd.cybank -application/vnd.dart dart -application/vnd.data-vision.rdz rdz -application/vnd.dece.data uvf uvvf uvd uvvd -application/vnd.dece.ttml+xml uvt uvvt -application/vnd.dece.unspecified uvx uvvx -application/vnd.dece.zip uvz uvvz -application/vnd.denovo.fcselayout-link fe_launch -# application/vnd.dir-bi.plate-dl-nosuffix -application/vnd.dna dna -application/vnd.dolby.mlp mlp -# application/vnd.dolby.mobile.1 -# application/vnd.dolby.mobile.2 -application/vnd.dpgraph dpg -application/vnd.dreamfactory dfac -application/vnd.ds-keypoint kpxx -application/vnd.dvb.ait ait -# application/vnd.dvb.dvbj -# application/vnd.dvb.esgcontainer -# application/vnd.dvb.ipdcdftnotifaccess -# application/vnd.dvb.ipdcesgaccess -# application/vnd.dvb.ipdcesgaccess2 -# application/vnd.dvb.ipdcesgpdd -# application/vnd.dvb.ipdcroaming -# application/vnd.dvb.iptv.alfec-base -# application/vnd.dvb.iptv.alfec-enhancement -# application/vnd.dvb.notif-aggregate-root+xml -# application/vnd.dvb.notif-container+xml -# application/vnd.dvb.notif-generic+xml -# application/vnd.dvb.notif-ia-msglist+xml -# application/vnd.dvb.notif-ia-registration-request+xml -# application/vnd.dvb.notif-ia-registration-response+xml -# application/vnd.dvb.notif-init+xml -# application/vnd.dvb.pfr -application/vnd.dvb.service svc -# application/vnd.dxr -application/vnd.dynageo geo -# application/vnd.easykaraoke.cdgdownload -# application/vnd.ecdis-update -application/vnd.ecowin.chart mag -# application/vnd.ecowin.filerequest -# application/vnd.ecowin.fileupdate -# application/vnd.ecowin.series -# application/vnd.ecowin.seriesrequest -# application/vnd.ecowin.seriesupdate -# application/vnd.emclient.accessrequest+xml -application/vnd.enliven nml -# application/vnd.eprints.data+xml -application/vnd.epson.esf esf -application/vnd.epson.msf msf -application/vnd.epson.quickanime qam -application/vnd.epson.salt slt -application/vnd.epson.ssf ssf -# application/vnd.ericsson.quickcall -application/vnd.eszigno3+xml es3 et3 -# application/vnd.etsi.aoc+xml -# application/vnd.etsi.cug+xml -# application/vnd.etsi.iptvcommand+xml -# application/vnd.etsi.iptvdiscovery+xml -# application/vnd.etsi.iptvprofile+xml -# application/vnd.etsi.iptvsad-bc+xml -# application/vnd.etsi.iptvsad-cod+xml -# application/vnd.etsi.iptvsad-npvr+xml -# application/vnd.etsi.iptvservice+xml -# application/vnd.etsi.iptvsync+xml -# application/vnd.etsi.iptvueprofile+xml -# application/vnd.etsi.mcid+xml -# application/vnd.etsi.overload-control-policy-dataset+xml -# application/vnd.etsi.sci+xml -# application/vnd.etsi.simservs+xml -# application/vnd.etsi.tsl+xml -# application/vnd.etsi.tsl.der -# application/vnd.eudora.data -application/vnd.ezpix-album ez2 -application/vnd.ezpix-package ez3 -# application/vnd.f-secure.mobile -application/vnd.fdf fdf -application/vnd.fdsn.mseed mseed -application/vnd.fdsn.seed seed dataless -# application/vnd.ffsns -# application/vnd.fints -application/vnd.flographit gph -application/vnd.fluxtime.clip ftc -# application/vnd.font-fontforge-sfd -application/vnd.framemaker fm frame maker book -application/vnd.frogans.fnc fnc -application/vnd.frogans.ltf ltf -application/vnd.fsc.weblaunch fsc -application/vnd.fujitsu.oasys oas -application/vnd.fujitsu.oasys2 oa2 -application/vnd.fujitsu.oasys3 oa3 -application/vnd.fujitsu.oasysgp fg5 -application/vnd.fujitsu.oasysprs bh2 -# application/vnd.fujixerox.art-ex -# application/vnd.fujixerox.art4 -# application/vnd.fujixerox.hbpl -application/vnd.fujixerox.ddd ddd -application/vnd.fujixerox.docuworks xdw -application/vnd.fujixerox.docuworks.binder xbd -# application/vnd.fut-misnet -application/vnd.fuzzysheet fzs -application/vnd.genomatix.tuxedo txd -# application/vnd.geocube+xml -application/vnd.geogebra.file ggb -application/vnd.geogebra.tool ggt -application/vnd.geometry-explorer gex gre -application/vnd.geonext gxt -application/vnd.geoplan g2w -application/vnd.geospace g3w -# application/vnd.globalplatform.card-content-mgt -# application/vnd.globalplatform.card-content-mgt-response -application/vnd.gmx gmx -application/vnd.google-earth.kml+xml kml -application/vnd.google-earth.kmz kmz -application/vnd.grafeq gqf gqs -# application/vnd.gridmp -application/vnd.groove-account gac -application/vnd.groove-help ghf -application/vnd.groove-identity-message gim -application/vnd.groove-injector grv -application/vnd.groove-tool-message gtm -application/vnd.groove-tool-template tpl -application/vnd.groove-vcard vcg -# application/vnd.hal+json -application/vnd.hal+xml hal -application/vnd.handheld-entertainment+xml zmm -application/vnd.hbci hbci -# application/vnd.hcl-bireports -application/vnd.hhe.lesson-player les -application/vnd.hp-hpgl hpgl -application/vnd.hp-hpid hpid -application/vnd.hp-hps hps -application/vnd.hp-jlyt jlt -application/vnd.hp-pcl pcl -application/vnd.hp-pclxl pclxl -# application/vnd.httphone -application/vnd.hydrostatix.sof-data sfd-hdstx -# application/vnd.hzn-3d-crossword -# application/vnd.ibm.afplinedata -# application/vnd.ibm.electronic-media -application/vnd.ibm.minipay mpy -application/vnd.ibm.modcap afp listafp list3820 -application/vnd.ibm.rights-management irm -application/vnd.ibm.secure-container sc -application/vnd.iccprofile icc icm -application/vnd.igloader igl -application/vnd.immervision-ivp ivp -application/vnd.immervision-ivu ivu -# application/vnd.informedcontrol.rms+xml -# application/vnd.informix-visionary -# application/vnd.infotech.project -# application/vnd.infotech.project+xml -# application/vnd.innopath.wamp.notification -application/vnd.insors.igm igm -application/vnd.intercon.formnet xpw xpx -application/vnd.intergeo i2g -# application/vnd.intertrust.digibox -# application/vnd.intertrust.nncp -application/vnd.intu.qbo qbo -application/vnd.intu.qfx qfx -# application/vnd.iptc.g2.conceptitem+xml -# application/vnd.iptc.g2.knowledgeitem+xml -# application/vnd.iptc.g2.newsitem+xml -# application/vnd.iptc.g2.newsmessage+xml -# application/vnd.iptc.g2.packageitem+xml -# application/vnd.iptc.g2.planningitem+xml -application/vnd.ipunplugged.rcprofile rcprofile -application/vnd.irepository.package+xml irp -application/vnd.is-xpr xpr -application/vnd.isac.fcs fcs -application/vnd.jam jam -# application/vnd.japannet-directory-service -# application/vnd.japannet-jpnstore-wakeup -# application/vnd.japannet-payment-wakeup -# application/vnd.japannet-registration -# application/vnd.japannet-registration-wakeup -# application/vnd.japannet-setstore-wakeup -# application/vnd.japannet-verification -# application/vnd.japannet-verification-wakeup -application/vnd.jcp.javame.midlet-rms rms -application/vnd.jisp jisp -application/vnd.joost.joda-archive joda -application/vnd.kahootz ktz ktr -application/vnd.kde.karbon karbon -application/vnd.kde.kchart chrt -application/vnd.kde.kformula kfo -application/vnd.kde.kivio flw -application/vnd.kde.kontour kon -application/vnd.kde.kpresenter kpr kpt -application/vnd.kde.kspread ksp -application/vnd.kde.kword kwd kwt -application/vnd.kenameaapp htke -application/vnd.kidspiration kia -application/vnd.kinar kne knp -application/vnd.koan skp skd skt skm -application/vnd.kodak-descriptor sse -application/vnd.las.las+xml lasxml -# application/vnd.liberty-request+xml -application/vnd.llamagraphics.life-balance.desktop lbd -application/vnd.llamagraphics.life-balance.exchange+xml lbe -application/vnd.lotus-1-2-3 123 -application/vnd.lotus-approach apr -application/vnd.lotus-freelance pre -application/vnd.lotus-notes nsf -application/vnd.lotus-organizer org -application/vnd.lotus-screencam scm -application/vnd.lotus-wordpro lwp -application/vnd.macports.portpkg portpkg -# application/vnd.marlin.drm.actiontoken+xml -# application/vnd.marlin.drm.conftoken+xml -# application/vnd.marlin.drm.license+xml -# application/vnd.marlin.drm.mdcf -application/vnd.mcd mcd -application/vnd.medcalcdata mc1 -application/vnd.mediastation.cdkey cdkey -# application/vnd.meridian-slingshot -application/vnd.mfer mwf -application/vnd.mfmp mfm -application/vnd.micrografx.flo flo -application/vnd.micrografx.igx igx -application/vnd.mif mif -# application/vnd.minisoft-hp3000-save -# application/vnd.mitsubishi.misty-guard.trustweb -application/vnd.mobius.daf daf -application/vnd.mobius.dis dis -application/vnd.mobius.mbk mbk -application/vnd.mobius.mqy mqy -application/vnd.mobius.msl msl -application/vnd.mobius.plc plc -application/vnd.mobius.txf txf -application/vnd.mophun.application mpn -application/vnd.mophun.certificate mpc -# application/vnd.motorola.flexsuite -# application/vnd.motorola.flexsuite.adsi -# application/vnd.motorola.flexsuite.fis -# application/vnd.motorola.flexsuite.gotap -# application/vnd.motorola.flexsuite.kmr -# application/vnd.motorola.flexsuite.ttc -# application/vnd.motorola.flexsuite.wem -# application/vnd.motorola.iprm -application/vnd.mozilla.xul+xml xul -application/vnd.ms-artgalry cil -# application/vnd.ms-asf -application/vnd.ms-cab-compressed cab -# application/vnd.ms-color.iccprofile -application/vnd.ms-excel xls xlm xla xlc xlt xlw -application/vnd.ms-excel.addin.macroenabled.12 xlam -application/vnd.ms-excel.sheet.binary.macroenabled.12 xlsb -application/vnd.ms-excel.sheet.macroenabled.12 xlsm -application/vnd.ms-excel.template.macroenabled.12 xltm -application/vnd.ms-fontobject eot -application/vnd.ms-htmlhelp chm -application/vnd.ms-ims ims -application/vnd.ms-lrm lrm -# application/vnd.ms-office.activex+xml -application/vnd.ms-officetheme thmx -# application/vnd.ms-opentype -# application/vnd.ms-package.obfuscated-opentype -application/vnd.ms-pki.seccat cat -application/vnd.ms-pki.stl stl -# application/vnd.ms-playready.initiator+xml -application/vnd.ms-powerpoint ppt pps pot -application/vnd.ms-powerpoint.addin.macroenabled.12 ppam -application/vnd.ms-powerpoint.presentation.macroenabled.12 pptm -application/vnd.ms-powerpoint.slide.macroenabled.12 sldm -application/vnd.ms-powerpoint.slideshow.macroenabled.12 ppsm -application/vnd.ms-powerpoint.template.macroenabled.12 potm -# application/vnd.ms-printing.printticket+xml -application/vnd.ms-project mpp mpt -# application/vnd.ms-tnef -# application/vnd.ms-wmdrm.lic-chlg-req -# application/vnd.ms-wmdrm.lic-resp -# application/vnd.ms-wmdrm.meter-chlg-req -# application/vnd.ms-wmdrm.meter-resp -application/vnd.ms-word.document.macroenabled.12 docm -application/vnd.ms-word.template.macroenabled.12 dotm -application/vnd.ms-works wps wks wcm wdb -application/vnd.ms-wpl wpl -application/vnd.ms-xpsdocument xps -application/vnd.mseq mseq -# application/vnd.msign -# application/vnd.multiad.creator -# application/vnd.multiad.creator.cif -# application/vnd.music-niff -application/vnd.musician mus -application/vnd.muvee.style msty -application/vnd.mynfc taglet -# application/vnd.ncd.control -# application/vnd.ncd.reference -# application/vnd.nervana -# application/vnd.netfpx -application/vnd.neurolanguage.nlu nlu -application/vnd.nitf ntf nitf -application/vnd.noblenet-directory nnd -application/vnd.noblenet-sealer nns -application/vnd.noblenet-web nnw -# application/vnd.nokia.catalogs -# application/vnd.nokia.conml+wbxml -# application/vnd.nokia.conml+xml -# application/vnd.nokia.isds-radio-presets -# application/vnd.nokia.iptv.config+xml -# application/vnd.nokia.landmark+wbxml -# application/vnd.nokia.landmark+xml -# application/vnd.nokia.landmarkcollection+xml -# application/vnd.nokia.n-gage.ac+xml -application/vnd.nokia.n-gage.data ngdat -application/vnd.nokia.n-gage.symbian.install n-gage -# application/vnd.nokia.ncd -# application/vnd.nokia.pcd+wbxml -# application/vnd.nokia.pcd+xml -application/vnd.nokia.radio-preset rpst -application/vnd.nokia.radio-presets rpss -application/vnd.novadigm.edm edm -application/vnd.novadigm.edx edx -application/vnd.novadigm.ext ext -# application/vnd.ntt-local.file-transfer -# application/vnd.ntt-local.sip-ta_remote -# application/vnd.ntt-local.sip-ta_tcp_stream -application/vnd.oasis.opendocument.chart odc -application/vnd.oasis.opendocument.chart-template otc -application/vnd.oasis.opendocument.database odb -application/vnd.oasis.opendocument.formula odf -application/vnd.oasis.opendocument.formula-template odft -application/vnd.oasis.opendocument.graphics odg -application/vnd.oasis.opendocument.graphics-template otg -application/vnd.oasis.opendocument.image odi -application/vnd.oasis.opendocument.image-template oti -application/vnd.oasis.opendocument.presentation odp -application/vnd.oasis.opendocument.presentation-template otp -application/vnd.oasis.opendocument.spreadsheet ods -application/vnd.oasis.opendocument.spreadsheet-template ots -application/vnd.oasis.opendocument.text odt -application/vnd.oasis.opendocument.text-master odm -application/vnd.oasis.opendocument.text-template ott -application/vnd.oasis.opendocument.text-web oth -# application/vnd.obn -# application/vnd.oftn.l10n+json -# application/vnd.oipf.contentaccessdownload+xml -# application/vnd.oipf.contentaccessstreaming+xml -# application/vnd.oipf.cspg-hexbinary -# application/vnd.oipf.dae.svg+xml -# application/vnd.oipf.dae.xhtml+xml -# application/vnd.oipf.mippvcontrolmessage+xml -# application/vnd.oipf.pae.gem -# application/vnd.oipf.spdiscovery+xml -# application/vnd.oipf.spdlist+xml -# application/vnd.oipf.ueprofile+xml -# application/vnd.oipf.userprofile+xml -application/vnd.olpc-sugar xo -# application/vnd.oma-scws-config -# application/vnd.oma-scws-http-request -# application/vnd.oma-scws-http-response -# application/vnd.oma.bcast.associated-procedure-parameter+xml -# application/vnd.oma.bcast.drm-trigger+xml -# application/vnd.oma.bcast.imd+xml -# application/vnd.oma.bcast.ltkm -# application/vnd.oma.bcast.notification+xml -# application/vnd.oma.bcast.provisioningtrigger -# application/vnd.oma.bcast.sgboot -# application/vnd.oma.bcast.sgdd+xml -# application/vnd.oma.bcast.sgdu -# application/vnd.oma.bcast.simple-symbol-container -# application/vnd.oma.bcast.smartcard-trigger+xml -# application/vnd.oma.bcast.sprov+xml -# application/vnd.oma.bcast.stkm -# application/vnd.oma.cab-address-book+xml -# application/vnd.oma.cab-feature-handler+xml -# application/vnd.oma.cab-pcc+xml -# application/vnd.oma.cab-user-prefs+xml -# application/vnd.oma.dcd -# application/vnd.oma.dcdc -application/vnd.oma.dd2+xml dd2 -# application/vnd.oma.drm.risd+xml -# application/vnd.oma.group-usage-list+xml -# application/vnd.oma.pal+xml -# application/vnd.oma.poc.detailed-progress-report+xml -# application/vnd.oma.poc.final-report+xml -# application/vnd.oma.poc.groups+xml -# application/vnd.oma.poc.invocation-descriptor+xml -# application/vnd.oma.poc.optimized-progress-report+xml -# application/vnd.oma.push -# application/vnd.oma.scidm.messages+xml -# application/vnd.oma.xcap-directory+xml -# application/vnd.omads-email+xml -# application/vnd.omads-file+xml -# application/vnd.omads-folder+xml -# application/vnd.omaloc-supl-init -application/vnd.openofficeorg.extension oxt -# application/vnd.openxmlformats-officedocument.custom-properties+xml -# application/vnd.openxmlformats-officedocument.customxmlproperties+xml -# application/vnd.openxmlformats-officedocument.drawing+xml -# application/vnd.openxmlformats-officedocument.drawingml.chart+xml -# application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml -# application/vnd.openxmlformats-officedocument.extended-properties+xml -# application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml -# application/vnd.openxmlformats-officedocument.presentationml.comments+xml -# application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml -# application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml -# application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml -application/vnd.openxmlformats-officedocument.presentationml.presentation pptx -# application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml -# application/vnd.openxmlformats-officedocument.presentationml.presprops+xml -application/vnd.openxmlformats-officedocument.presentationml.slide sldx -# application/vnd.openxmlformats-officedocument.presentationml.slide+xml -# application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml -# application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml -application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx -# application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml -# application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml -# application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml -# application/vnd.openxmlformats-officedocument.presentationml.tags+xml -application/vnd.openxmlformats-officedocument.presentationml.template potx -# application/vnd.openxmlformats-officedocument.presentationml.template.main+xml -# application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml -application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx -# application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml -application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx -# application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml -# application/vnd.openxmlformats-officedocument.theme+xml -# application/vnd.openxmlformats-officedocument.themeoverride+xml -# application/vnd.openxmlformats-officedocument.vmldrawing -# application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml -application/vnd.openxmlformats-officedocument.wordprocessingml.document docx -# application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml -application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx -# application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml -# application/vnd.openxmlformats-package.core-properties+xml -# application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml -# application/vnd.openxmlformats-package.relationships+xml -# application/vnd.quobject-quoxdocument -# application/vnd.osa.netdeploy -application/vnd.osgeo.mapguide.package mgp -# application/vnd.osgi.bundle -application/vnd.osgi.dp dp -application/vnd.osgi.subsystem esa -# application/vnd.otps.ct-kip+xml -application/vnd.palm pdb pqa oprc -# application/vnd.paos.xml -application/vnd.pawaafile paw -application/vnd.pg.format str -application/vnd.pg.osasli ei6 -# application/vnd.piaccess.application-licence -application/vnd.picsel efif -application/vnd.pmi.widget wg -# application/vnd.poc.group-advertisement+xml -application/vnd.pocketlearn plf -application/vnd.powerbuilder6 pbd -# application/vnd.powerbuilder6-s -# application/vnd.powerbuilder7 -# application/vnd.powerbuilder7-s -# application/vnd.powerbuilder75 -# application/vnd.powerbuilder75-s -# application/vnd.preminet -application/vnd.previewsystems.box box -application/vnd.proteus.magazine mgz -application/vnd.publishare-delta-tree qps -application/vnd.pvi.ptid1 ptid -# application/vnd.pwg-multiplexed -# application/vnd.pwg-xhtml-print+xml -# application/vnd.qualcomm.brew-app-res -application/vnd.quark.quarkxpress qxd qxt qwd qwt qxl qxb -# application/vnd.radisys.moml+xml -# application/vnd.radisys.msml+xml -# application/vnd.radisys.msml-audit+xml -# application/vnd.radisys.msml-audit-conf+xml -# application/vnd.radisys.msml-audit-conn+xml -# application/vnd.radisys.msml-audit-dialog+xml -# application/vnd.radisys.msml-audit-stream+xml -# application/vnd.radisys.msml-conf+xml -# application/vnd.radisys.msml-dialog+xml -# application/vnd.radisys.msml-dialog-base+xml -# application/vnd.radisys.msml-dialog-fax-detect+xml -# application/vnd.radisys.msml-dialog-fax-sendrecv+xml -# application/vnd.radisys.msml-dialog-group+xml -# application/vnd.radisys.msml-dialog-speech+xml -# application/vnd.radisys.msml-dialog-transform+xml -# application/vnd.rainstor.data -# application/vnd.rapid -application/vnd.realvnc.bed bed -application/vnd.recordare.musicxml mxl -application/vnd.recordare.musicxml+xml musicxml -# application/vnd.renlearn.rlprint -application/vnd.rig.cryptonote cryptonote -application/vnd.rim.cod cod -application/vnd.rn-realmedia rm -application/vnd.rn-realmedia-vbr rmvb -application/vnd.route66.link66+xml link66 -# application/vnd.rs-274x -# application/vnd.ruckus.download -# application/vnd.s3sms -application/vnd.sailingtracker.track st -# application/vnd.sbm.cid -# application/vnd.sbm.mid2 -# application/vnd.scribus -# application/vnd.sealed.3df -# application/vnd.sealed.csf -# application/vnd.sealed.doc -# application/vnd.sealed.eml -# application/vnd.sealed.mht -# application/vnd.sealed.net -# application/vnd.sealed.ppt -# application/vnd.sealed.tiff -# application/vnd.sealed.xls -# application/vnd.sealedmedia.softseal.html -# application/vnd.sealedmedia.softseal.pdf -application/vnd.seemail see -application/vnd.sema sema -application/vnd.semd semd -application/vnd.semf semf -application/vnd.shana.informed.formdata ifm -application/vnd.shana.informed.formtemplate itp -application/vnd.shana.informed.interchange iif -application/vnd.shana.informed.package ipk -application/vnd.simtech-mindmapper twd twds -application/vnd.smaf mmf -# application/vnd.smart.notebook -application/vnd.smart.teacher teacher -# application/vnd.software602.filler.form+xml -# application/vnd.software602.filler.form-xml-zip -application/vnd.solent.sdkm+xml sdkm sdkd -application/vnd.spotfire.dxp dxp -application/vnd.spotfire.sfs sfs -# application/vnd.sss-cod -# application/vnd.sss-dtf -# application/vnd.sss-ntf -application/vnd.stardivision.calc sdc -application/vnd.stardivision.draw sda -application/vnd.stardivision.impress sdd -application/vnd.stardivision.math smf -application/vnd.stardivision.writer sdw vor -application/vnd.stardivision.writer-global sgl -application/vnd.stepmania.package smzip -application/vnd.stepmania.stepchart sm -# application/vnd.street-stream -application/vnd.sun.xml.calc sxc -application/vnd.sun.xml.calc.template stc -application/vnd.sun.xml.draw sxd -application/vnd.sun.xml.draw.template std -application/vnd.sun.xml.impress sxi -application/vnd.sun.xml.impress.template sti -application/vnd.sun.xml.math sxm -application/vnd.sun.xml.writer sxw -application/vnd.sun.xml.writer.global sxg -application/vnd.sun.xml.writer.template stw -# application/vnd.sun.wadl+xml -application/vnd.sus-calendar sus susp -application/vnd.svd svd -# application/vnd.swiftview-ics -application/vnd.symbian.install sis sisx -application/vnd.syncml+xml xsm -application/vnd.syncml.dm+wbxml bdm -application/vnd.syncml.dm+xml xdm -# application/vnd.syncml.dm.notification -# application/vnd.syncml.ds.notification -application/vnd.tao.intent-module-archive tao -application/vnd.tcpdump.pcap pcap cap dmp -application/vnd.tmobile-livetv tmo -application/vnd.trid.tpt tpt -application/vnd.triscape.mxs mxs -application/vnd.trueapp tra -# application/vnd.truedoc -# application/vnd.ubisoft.webplayer -application/vnd.ufdl ufd ufdl -application/vnd.uiq.theme utz -application/vnd.umajin umj -application/vnd.unity unityweb -application/vnd.uoml+xml uoml -# application/vnd.uplanet.alert -# application/vnd.uplanet.alert-wbxml -# application/vnd.uplanet.bearer-choice -# application/vnd.uplanet.bearer-choice-wbxml -# application/vnd.uplanet.cacheop -# application/vnd.uplanet.cacheop-wbxml -# application/vnd.uplanet.channel -# application/vnd.uplanet.channel-wbxml -# application/vnd.uplanet.list -# application/vnd.uplanet.list-wbxml -# application/vnd.uplanet.listcmd -# application/vnd.uplanet.listcmd-wbxml -# application/vnd.uplanet.signal -application/vnd.vcx vcx -# application/vnd.vd-study -# application/vnd.vectorworks -# application/vnd.verimatrix.vcas -# application/vnd.vidsoft.vidconference -application/vnd.visio vsd vst vss vsw -application/vnd.visionary vis -# application/vnd.vividence.scriptfile -application/vnd.vsf vsf -# application/vnd.wap.sic -# application/vnd.wap.slc -application/vnd.wap.wbxml wbxml -application/vnd.wap.wmlc wmlc -application/vnd.wap.wmlscriptc wmlsc -application/vnd.webturbo wtb -# application/vnd.wfa.wsc -# application/vnd.wmc -# application/vnd.wmf.bootstrap -# application/vnd.wolfram.mathematica -# application/vnd.wolfram.mathematica.package -application/vnd.wolfram.player nbp -application/vnd.wordperfect wpd -application/vnd.wqd wqd -# application/vnd.wrq-hp3000-labelled -application/vnd.wt.stf stf -# application/vnd.wv.csp+wbxml -# application/vnd.wv.csp+xml -# application/vnd.wv.ssp+xml -application/vnd.xara xar -application/vnd.xfdl xfdl -# application/vnd.xfdl.webform -# application/vnd.xmi+xml -# application/vnd.xmpie.cpkg -# application/vnd.xmpie.dpkg -# application/vnd.xmpie.plan -# application/vnd.xmpie.ppkg -# application/vnd.xmpie.xlim -application/vnd.yamaha.hv-dic hvd -application/vnd.yamaha.hv-script hvs -application/vnd.yamaha.hv-voice hvp -application/vnd.yamaha.openscoreformat osf -application/vnd.yamaha.openscoreformat.osfpvg+xml osfpvg -# application/vnd.yamaha.remote-setup -application/vnd.yamaha.smaf-audio saf -application/vnd.yamaha.smaf-phrase spf -# application/vnd.yamaha.through-ngn -# application/vnd.yamaha.tunnel-udpencap -application/vnd.yellowriver-custom-menu cmp -application/vnd.zul zir zirz -application/vnd.zzazz.deck+xml zaz -application/voicexml+xml vxml -# application/vq-rtcpxr -# application/watcherinfo+xml -# application/whoispp-query -# application/whoispp-response -application/widget wgt -application/winhlp hlp -# application/wita -# application/wordperfect5.1 -application/wsdl+xml wsdl -application/wspolicy+xml wspolicy -application/x-7z-compressed 7z -application/x-abiword abw -application/x-ace-compressed ace -# application/x-amf -application/x-apple-diskimage dmg -application/x-authorware-bin aab x32 u32 vox -application/x-authorware-map aam -application/x-authorware-seg aas -application/x-bcpio bcpio -application/x-bittorrent torrent -application/x-blorb blb blorb -application/x-bzip bz -application/x-bzip2 bz2 boz -application/x-cbr cbr cba cbt cbz cb7 -application/x-cdlink vcd -application/x-cfs-compressed cfs -application/x-chat chat -application/x-chess-pgn pgn -application/x-conference nsc -# application/x-compress -application/x-cpio cpio -application/x-csh csh -application/x-debian-package deb udeb -application/x-dgc-compressed dgc -application/x-director dir dcr dxr cst cct cxt w3d fgd swa -application/x-doom wad -application/x-dtbncx+xml ncx -application/x-dtbook+xml dtb -application/x-dtbresource+xml res -application/x-dvi dvi -application/x-envoy evy -application/x-eva eva -application/x-font-bdf bdf -# application/x-font-dos -# application/x-font-framemaker -application/x-font-ghostscript gsf -# application/x-font-libgrx -application/x-font-linux-psf psf -application/x-font-otf otf -application/x-font-pcf pcf -application/x-font-snf snf -# application/x-font-speedo -# application/x-font-sunos-news -application/x-font-ttf ttf ttc -application/x-font-type1 pfa pfb pfm afm -application/x-font-woff woff -# application/x-font-vfont -application/x-freearc arc -application/x-futuresplash spl -application/x-gca-compressed gca -application/x-glulx ulx -application/x-gnumeric gnumeric -application/x-gramps-xml gramps -application/x-gtar gtar -# application/x-gzip -application/x-hdf hdf -application/x-install-instructions install -application/x-iso9660-image iso -application/x-java-jnlp-file jnlp -application/x-latex latex -application/x-lzh-compressed lzh lha -application/x-mie mie -application/x-mobipocket-ebook prc mobi -application/x-ms-application application -application/x-ms-shortcut lnk -application/x-ms-wmd wmd -application/x-ms-wmz wmz -application/x-ms-xbap xbap -application/x-msaccess mdb -application/x-msbinder obd -application/x-mscardfile crd -application/x-msclip clp -application/x-msdownload exe dll com bat msi -application/x-msmediaview mvb m13 m14 -application/x-msmetafile wmf wmz emf emz -application/x-msmoney mny -application/x-mspublisher pub -application/x-msschedule scd -application/x-msterminal trm -application/x-mswrite wri -application/x-netcdf nc cdf -application/x-nzb nzb -application/x-pkcs12 p12 pfx -application/x-pkcs7-certificates p7b spc -application/x-pkcs7-certreqresp p7r -application/x-rar-compressed rar -application/x-research-info-systems ris -application/x-sh sh -application/x-shar shar -application/x-shockwave-flash swf -application/x-silverlight-app xap -application/x-sql sql -application/x-stuffit sit -application/x-stuffitx sitx -application/x-subrip srt -application/x-sv4cpio sv4cpio -application/x-sv4crc sv4crc -application/x-t3vm-image t3 -application/x-tads gam -application/x-tar tar -application/x-tcl tcl -application/x-tex tex -application/x-tex-tfm tfm -application/x-texinfo texinfo texi -application/x-tgif obj -application/x-ustar ustar -application/x-wais-source src -application/x-x509-ca-cert der crt -application/x-xfig fig -application/x-xliff+xml xlf -application/x-xpinstall xpi -application/x-xz xz -application/x-zmachine z1 z2 z3 z4 z5 z6 z7 z8 -# application/x400-bp -application/xaml+xml xaml -# application/xcap-att+xml -# application/xcap-caps+xml -application/xcap-diff+xml xdf -# application/xcap-el+xml -# application/xcap-error+xml -# application/xcap-ns+xml -# application/xcon-conference-info-diff+xml -# application/xcon-conference-info+xml -application/xenc+xml xenc -application/xhtml+xml xhtml xht -# application/xhtml-voice+xml -application/xml xml xsl -application/xml-dtd dtd -# application/xml-external-parsed-entity -# application/xmpp+xml -application/xop+xml xop -application/xproc+xml xpl -application/xslt+xml xslt -application/xspf+xml xspf -application/xv+xml mxml xhvml xvml xvm -application/yang yang -application/yin+xml yin -application/zip zip -# audio/1d-interleaved-parityfec -# audio/32kadpcm -# audio/3gpp -# audio/3gpp2 -# audio/ac3 -audio/adpcm adp -# audio/amr -# audio/amr-wb -# audio/amr-wb+ -# audio/asc -# audio/atrac-advanced-lossless -# audio/atrac-x -# audio/atrac3 -audio/basic au snd -# audio/bv16 -# audio/bv32 -# audio/clearmode -# audio/cn -# audio/dat12 -# audio/dls -# audio/dsr-es201108 -# audio/dsr-es202050 -# audio/dsr-es202211 -# audio/dsr-es202212 -# audio/dv -# audio/dvi4 -# audio/eac3 -# audio/evrc -# audio/evrc-qcp -# audio/evrc0 -# audio/evrc1 -# audio/evrcb -# audio/evrcb0 -# audio/evrcb1 -# audio/evrcwb -# audio/evrcwb0 -# audio/evrcwb1 -# audio/example -# audio/fwdred -# audio/g719 -# audio/g722 -# audio/g7221 -# audio/g723 -# audio/g726-16 -# audio/g726-24 -# audio/g726-32 -# audio/g726-40 -# audio/g728 -# audio/g729 -# audio/g7291 -# audio/g729d -# audio/g729e -# audio/gsm -# audio/gsm-efr -# audio/gsm-hr-08 -# audio/ilbc -# audio/ip-mr_v2.5 -# audio/isac -# audio/l16 -# audio/l20 -# audio/l24 -# audio/l8 -# audio/lpc -audio/midi mid midi kar rmi -# audio/mobile-xmf -audio/mp4 mp4a -# audio/mp4a-latm -# audio/mpa -# audio/mpa-robust -audio/mpeg mpga mp2 mp2a mp3 m2a m3a -# audio/mpeg4-generic -# audio/musepack -audio/ogg oga ogg spx -# audio/opus -# audio/parityfec -# audio/pcma -# audio/pcma-wb -# audio/pcmu-wb -# audio/pcmu -# audio/prs.sid -# audio/qcelp -# audio/red -# audio/rtp-enc-aescm128 -# audio/rtp-midi -# audio/rtx -audio/s3m s3m -audio/silk sil -# audio/smv -# audio/smv0 -# audio/smv-qcp -# audio/sp-midi -# audio/speex -# audio/t140c -# audio/t38 -# audio/telephone-event -# audio/tone -# audio/uemclip -# audio/ulpfec -# audio/vdvi -# audio/vmr-wb -# audio/vnd.3gpp.iufp -# audio/vnd.4sb -# audio/vnd.audiokoz -# audio/vnd.celp -# audio/vnd.cisco.nse -# audio/vnd.cmles.radio-events -# audio/vnd.cns.anp1 -# audio/vnd.cns.inf1 -audio/vnd.dece.audio uva uvva -audio/vnd.digital-winds eol -# audio/vnd.dlna.adts -# audio/vnd.dolby.heaac.1 -# audio/vnd.dolby.heaac.2 -# audio/vnd.dolby.mlp -# audio/vnd.dolby.mps -# audio/vnd.dolby.pl2 -# audio/vnd.dolby.pl2x -# audio/vnd.dolby.pl2z -# audio/vnd.dolby.pulse.1 -audio/vnd.dra dra -audio/vnd.dts dts -audio/vnd.dts.hd dtshd -# audio/vnd.dvb.file -# audio/vnd.everad.plj -# audio/vnd.hns.audio -audio/vnd.lucent.voice lvp -audio/vnd.ms-playready.media.pya pya -# audio/vnd.nokia.mobile-xmf -# audio/vnd.nortel.vbk -audio/vnd.nuera.ecelp4800 ecelp4800 -audio/vnd.nuera.ecelp7470 ecelp7470 -audio/vnd.nuera.ecelp9600 ecelp9600 -# audio/vnd.octel.sbc -# audio/vnd.qcelp -# audio/vnd.rhetorex.32kadpcm -audio/vnd.rip rip -# audio/vnd.sealedmedia.softseal.mpeg -# audio/vnd.vmx.cvsd -# audio/vorbis -# audio/vorbis-config -audio/webm weba -audio/x-aac aac -audio/x-aiff aif aiff aifc -audio/x-caf caf -audio/x-flac flac -audio/x-matroska mka -audio/x-mpegurl m3u -audio/x-ms-wax wax -audio/x-ms-wma wma -audio/x-pn-realaudio ram ra -audio/x-pn-realaudio-plugin rmp -# audio/x-tta -audio/x-wav wav -audio/xm xm -chemical/x-cdx cdx -chemical/x-cif cif -chemical/x-cmdf cmdf -chemical/x-cml cml -chemical/x-csml csml -# chemical/x-pdb -chemical/x-xyz xyz -image/bmp bmp -image/cgm cgm -# image/example -# image/fits -image/g3fax g3 -image/gif gif -image/ief ief -# image/jp2 -image/jpeg jpeg jpg jpe -# image/jpm -# image/jpx -image/ktx ktx -# image/naplps -image/png png -image/prs.btif btif -# image/prs.pti -image/sgi sgi -image/svg+xml svg svgz -# image/t38 -image/tiff tiff tif -# image/tiff-fx -image/vnd.adobe.photoshop psd -# image/vnd.cns.inf2 -image/vnd.dece.graphic uvi uvvi uvg uvvg -image/vnd.dvb.subtitle sub -image/vnd.djvu djvu djv -image/vnd.dwg dwg -image/vnd.dxf dxf -image/vnd.fastbidsheet fbs -image/vnd.fpx fpx -image/vnd.fst fst -image/vnd.fujixerox.edmics-mmr mmr -image/vnd.fujixerox.edmics-rlc rlc -# image/vnd.globalgraphics.pgb -# image/vnd.microsoft.icon -# image/vnd.mix -image/vnd.ms-modi mdi -image/vnd.ms-photo wdp -image/vnd.net-fpx npx -# image/vnd.radiance -# image/vnd.sealed.png -# image/vnd.sealedmedia.softseal.gif -# image/vnd.sealedmedia.softseal.jpg -# image/vnd.svf -image/vnd.wap.wbmp wbmp -image/vnd.xiff xif -image/webp webp -image/x-3ds 3ds -image/x-cmu-raster ras -image/x-cmx cmx -image/x-freehand fh fhc fh4 fh5 fh7 -image/x-icon ico -image/x-mrsid-image sid -image/x-pcx pcx -image/x-pict pic pct -image/x-portable-anymap pnm -image/x-portable-bitmap pbm -image/x-portable-graymap pgm -image/x-portable-pixmap ppm -image/x-rgb rgb -image/x-tga tga -image/x-xbitmap xbm -image/x-xpixmap xpm -image/x-xwindowdump xwd -# message/cpim -# message/delivery-status -# message/disposition-notification -# message/example -# message/external-body -# message/feedback-report -# message/global -# message/global-delivery-status -# message/global-disposition-notification -# message/global-headers -# message/http -# message/imdn+xml -# message/news -# message/partial -message/rfc822 eml mime -# message/s-http -# message/sip -# message/sipfrag -# message/tracking-status -# message/vnd.si.simp -# model/example -model/iges igs iges -model/mesh msh mesh silo -model/vnd.collada+xml dae -model/vnd.dwf dwf -# model/vnd.flatland.3dml -model/vnd.gdl gdl -# model/vnd.gs-gdl -# model/vnd.gs.gdl -model/vnd.gtw gtw -# model/vnd.moml+xml -model/vnd.mts mts -# model/vnd.parasolid.transmit.binary -# model/vnd.parasolid.transmit.text -model/vnd.vtu vtu -model/vrml wrl vrml -model/x3d+binary x3db x3dbz -model/x3d+vrml x3dv x3dvz -model/x3d+xml x3d x3dz -# multipart/alternative -# multipart/appledouble -# multipart/byteranges -# multipart/digest -# multipart/encrypted -# multipart/example -# multipart/form-data -# multipart/header-set -# multipart/mixed -# multipart/parallel -# multipart/related -# multipart/report -# multipart/signed -# multipart/voice-message -# text/1d-interleaved-parityfec -text/cache-manifest appcache -text/calendar ics ifb -text/css css -text/csv csv -# text/directory -# text/dns -# text/ecmascript -# text/enriched -# text/example -# text/fwdred -text/html html htm -# text/javascript -text/n3 n3 -# text/parityfec -text/plain txt text conf def list log in -# text/prs.fallenstein.rst -text/prs.lines.tag dsc -# text/vnd.radisys.msml-basic-layout -# text/red -# text/rfc822-headers -text/richtext rtx -# text/rtf -# text/rtp-enc-aescm128 -# text/rtx -text/sgml sgml sgm -# text/t140 -text/tab-separated-values tsv -text/troff t tr roff man me ms -text/turtle ttl -# text/ulpfec -text/uri-list uri uris urls -text/vcard vcard -# text/vnd.abc -text/vnd.curl curl -text/vnd.curl.dcurl dcurl -text/vnd.curl.scurl scurl -text/vnd.curl.mcurl mcurl -# text/vnd.dmclientscript -text/vnd.dvb.subtitle sub -# text/vnd.esmertec.theme-descriptor -text/vnd.fly fly -text/vnd.fmi.flexstor flx -text/vnd.graphviz gv -text/vnd.in3d.3dml 3dml -text/vnd.in3d.spot spot -# text/vnd.iptc.newsml -# text/vnd.iptc.nitf -# text/vnd.latex-z -# text/vnd.motorola.reflex -# text/vnd.ms-mediapackage -# text/vnd.net2phone.commcenter.command -# text/vnd.si.uricatalogue -text/vnd.sun.j2me.app-descriptor jad -# text/vnd.trolltech.linguist -# text/vnd.wap.si -# text/vnd.wap.sl -text/vnd.wap.wml wml -text/vnd.wap.wmlscript wmls -text/x-asm s asm -text/x-c c cc cxx cpp h hh dic -text/x-fortran f for f77 f90 -text/x-java-source java -text/x-opml opml -text/x-pascal p pas -text/x-nfo nfo -text/x-setext etx -text/x-sfv sfv -text/x-uuencode uu -text/x-vcalendar vcs -text/x-vcard vcf -# text/xml -# text/xml-external-parsed-entity -# video/1d-interleaved-parityfec -video/3gpp 3gp -# video/3gpp-tt -video/3gpp2 3g2 -# video/bmpeg -# video/bt656 -# video/celb -# video/dv -# video/example -video/h261 h261 -video/h263 h263 -# video/h263-1998 -# video/h263-2000 -video/h264 h264 -# video/h264-rcdo -# video/h264-svc -video/jpeg jpgv -# video/jpeg2000 -video/jpm jpm jpgm -video/mj2 mj2 mjp2 -# video/mp1s -# video/mp2p -# video/mp2t -video/mp4 mp4 mp4v mpg4 -# video/mp4v-es -video/mpeg mpeg mpg mpe m1v m2v -# video/mpeg4-generic -# video/mpv -# video/nv -video/ogg ogv -# video/parityfec -# video/pointer -video/quicktime qt mov -# video/raw -# video/rtp-enc-aescm128 -# video/rtx -# video/smpte292m -# video/ulpfec -# video/vc1 -# video/vnd.cctv -video/vnd.dece.hd uvh uvvh -video/vnd.dece.mobile uvm uvvm -# video/vnd.dece.mp4 -video/vnd.dece.pd uvp uvvp -video/vnd.dece.sd uvs uvvs -video/vnd.dece.video uvv uvvv -# video/vnd.directv.mpeg -# video/vnd.directv.mpeg-tts -# video/vnd.dlna.mpeg-tts -video/vnd.dvb.file dvb -video/vnd.fvt fvt -# video/vnd.hns.video -# video/vnd.iptvforum.1dparityfec-1010 -# video/vnd.iptvforum.1dparityfec-2005 -# video/vnd.iptvforum.2dparityfec-1010 -# video/vnd.iptvforum.2dparityfec-2005 -# video/vnd.iptvforum.ttsavc -# video/vnd.iptvforum.ttsmpeg2 -# video/vnd.motorola.video -# video/vnd.motorola.videop -video/vnd.mpegurl mxu m4u -video/vnd.ms-playready.media.pyv pyv -# video/vnd.nokia.interleaved-multimedia -# video/vnd.nokia.videovoip -# video/vnd.objectvideo -# video/vnd.sealed.mpeg1 -# video/vnd.sealed.mpeg4 -# video/vnd.sealed.swf -# video/vnd.sealedmedia.softseal.mov -video/vnd.uvvu.mp4 uvu uvvu -video/vnd.vivo viv -video/webm webm -video/x-f4v f4v -video/x-fli fli -video/x-flv flv -video/x-m4v m4v -video/x-matroska mkv mk3d mks -video/x-mng mng -video/x-ms-asf asf asx -video/x-ms-vob vob -video/x-ms-wm wm -video/x-ms-wmv wmv -video/x-ms-wmx wmx -video/x-ms-wvx wvx -video/x-msvideo avi -video/x-sgi-movie movie -video/x-smv smv -x-conference/x-cooltalk ice +# These are the same MIME types that GitHub Pages uses as of 17 Mar 2013. + +text/html html htm shtml +text/css css +text/xml xml rss xsl +image/gif gif +image/jpeg jpeg jpg +application/x-javascript js +application/atom+xml atom + +text/mathml mml +text/plain txt +text/vnd.sun.j2me.app-descriptor jad +text/vnd.wap.wml wml +text/x-component htc +text/cache-manifest manifest appcache +text/coffeescript coffee +text/plain pde +text/plain md markdown + +image/png png +image/svg+xml svg +image/tiff tif tiff +image/vnd.wap.wbmp wbmp +image/x-icon ico +image/x-jng jng +image/x-ms-bmp bmp + +application/json json +application/java-archive jar ear +application/mac-binhex40 hqx +application/msword doc +application/pdf pdf +application/postscript ps eps ai +application/rdf+xml rdf +application/rtf rtf +text/vcard vcf vcard +application/vnd.ms-excel xls +application/vnd.ms-powerpoint ppt +application/vnd.wap.wmlc wmlc +application/xhtml+xml xhtml +application/x-chrome-extension crx +application/x-cocoa cco +application/x-font-ttf ttf +application/x-java-archive-diff jardiff +application/x-java-jnlp-file jnlp +application/x-makeself run +application/x-ns-proxy-autoconfig pac +application/x-perl pl pm +application/x-pilot prc pdb +application/x-rar-compressed rar +application/x-redhat-package-manager rpm +application/x-sea sea +application/x-shockwave-flash swf +application/x-stuffit sit +application/x-tcl tcl tk +application/x-web-app-manifest+json webapp +application/x-x509-ca-cert der pem crt +application/x-xpinstall xpi +application/x-zip war +application/zip zip + +application/octet-stream bin exe dll +application/octet-stream deb +application/octet-stream dmg +application/octet-stream eot +application/octet-stream iso img +application/octet-stream msi msp msm + +audio/midi mid midi kar +audio/mpeg mp3 +audio/x-realaudio ra +audio/ogg ogg + +video/3gpp 3gpp 3gp +video/mpeg mpeg mpg +video/quicktime mov +video/x-flv flv +video/x-mng mng +video/x-ms-asf asx asf +video/x-ms-wmv wmv +video/x-msvideo avi +video/ogg ogv +video/webm webm From 0765d077300b3a57d585ce61726801cec69cbb50 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 17 Mar 2013 21:15:17 +0100 Subject: [PATCH 56/85] Added sanity tests for #869. --- test/test_site.rb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/test/test_site.rb b/test/test_site.rb index 07182727e..6934596f5 100644 --- a/test/test_site.rb +++ b/test/test_site.rb @@ -32,6 +32,15 @@ class TestSite < Test::Unit::TestCase assert_equal [], site.plugins end + should "expose default baseurl" do + site = Site.new(Jekyll::DEFAULTS) + assert_equal Jekyll::DEFAULTS['baseurl'], site.baseurl + end + + should "expose baseurl passed in from config" do + site = Site.new(Jekyll::DEFAULTS.merge({'baseurl' => '/blog'})) + assert_equal '/blog', site.baseurl + end end context "creating sites" do setup do From 4400e898985ec083cf89aefc8076bf18f2075273 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 17 Mar 2013 21:18:45 +0100 Subject: [PATCH 57/85] Expect a 'baseurl' to be passed in to Site --- lib/jekyll/site.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll/site.rb b/lib/jekyll/site.rb index 6b431acbc..b4b404424 100644 --- a/lib/jekyll/site.rb +++ b/lib/jekyll/site.rb @@ -21,7 +21,7 @@ module Jekyll self.plugins = plugins_path self.lsi = config['lsi'] self.pygments = config['pygments'] - self.baseurl = config['baseurl'] || '/' + self.baseurl = config['baseurl'] self.permalink_style = config['permalink'].to_sym self.exclude = config['exclude'] || [] self.include = config['include'] || [] From 309e03b1d3600ea1507c6cc4cb5143b1a55f5923 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 17 Mar 2013 21:31:30 +0100 Subject: [PATCH 58/85] Update history to reflect merge of #871. --- History.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/History.txt b/History.txt index 361d12441..90271ecd3 100644 --- a/History.txt +++ b/History.txt @@ -8,7 +8,7 @@ * Expose site.baseurl to Liquid templates (#869) * Adds excerpt attribute to posts which contains first paragraph of content (#837) * Accept custom configuration file via CLI (#863) - * Load in Apache MIME Types on `jekyll serve` (#847) + * Load in GitHub Pages MIME Types on `jekyll serve` (#847, #871) * Improve debugability of error message for a malformed highlight tag (#785) * Allow symlinked files in unsafe mode (#824) * Add 'gist' liquid tag to core (#822) From 677a87e43739643193d734a7cd15062f86607d7b Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 17 Mar 2013 21:34:35 +0100 Subject: [PATCH 59/85] Update history to reflect #861 --- History.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/History.txt b/History.txt index 90271ecd3..824b95931 100644 --- a/History.txt +++ b/History.txt @@ -11,7 +11,7 @@ * Load in GitHub Pages MIME Types on `jekyll serve` (#847, #871) * Improve debugability of error message for a malformed highlight tag (#785) * Allow symlinked files in unsafe mode (#824) - * Add 'gist' liquid tag to core (#822) + * Add 'gist' Liquid tag to core (#822, #861) * New format of Jekyll output (#795) * Reinstate --limit_posts and --future switches (#788) * Remove ambiguity from command descriptions (#815) From f7f64576e5d69b0c5f05f27270a5c382a251bf0d Mon Sep 17 00:00:00 2001 From: Dave Wasmer Date: Sun, 17 Mar 2013 22:28:33 +0100 Subject: [PATCH 60/85] Force encoding of the rdiscount TOC to UTF8 to avoid conversion errors --- lib/jekyll/converters/markdown.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll/converters/markdown.rb b/lib/jekyll/converters/markdown.rb index 14a7d4da8..b345b88c7 100644 --- a/lib/jekyll/converters/markdown.rb +++ b/lib/jekyll/converters/markdown.rb @@ -137,7 +137,7 @@ module Jekyll rd = RDiscount.new(content, *@rdiscount_extensions) html = rd.to_html if rd.generate_toc and html.include?(@config['rdiscount']['toc_token']) - html.gsub!(@config['rdiscount']['toc_token'], rd.toc_content) + html.gsub!(@config['rdiscount']['toc_token'], rd.toc_content.force_encoding('utf-8')) end html when 'maruku' From 036fce8799a5cb8c3b2d88eacc658117df23f7e5 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 17 Mar 2013 22:29:50 +0100 Subject: [PATCH 61/85] Update history to reflect merge of #555. Closes #555. --- History.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/History.txt b/History.txt index 824b95931..da1923733 100644 --- a/History.txt +++ b/History.txt @@ -30,6 +30,7 @@ * Add source and destination directory protection (#535) * Better YAML error message (#718) * Bug Fixes + * Force encoding of the rdiscount TOC to UTF8 to avoid conversion errors (#555) * Patch for multibyte URI problem with jekyll serve (#723) * Order plugin execution by priority (#864) * Fixed Page#dir and Page#url for edge cases (#536) From 9d814a4eb7b59ce617569b40a19c3c183fecda33 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 17 Mar 2013 23:35:46 +0100 Subject: [PATCH 62/85] Add method String#force_encoding to 1.8.7 --- lib/jekyll/core_ext.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/jekyll/core_ext.rb b/lib/jekyll/core_ext.rb index 1d6b83a19..b1192cf45 100644 --- a/lib/jekyll/core_ext.rb +++ b/lib/jekyll/core_ext.rb @@ -58,3 +58,11 @@ module Enumerable any? { |exp| File.fnmatch?(exp, e) } end end + +if RUBY_VERSION < "1.9" + class String + def force_encoding(enc) + self + end + end +end From 73ca35ee81a0eb10740eab542c4b45be6c1fa520 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 17 Mar 2013 22:59:33 +0100 Subject: [PATCH 63/85] Ensure all categories are downcase. Fix for #842. --- features/post_data.feature | 45 ++++++++++++++++++++++++++++++++++---- lib/jekyll/post.rb | 4 ++-- 2 files changed, 43 insertions(+), 6 deletions(-) diff --git a/features/post_data.feature b/features/post_data.feature index c6d45b048..61732f90e 100644 --- a/features/post_data.feature +++ b/features/post_data.feature @@ -94,6 +94,41 @@ Feature: Post data Then the _site directory should exist And I should see "Post categories: scifi and movies" in "_site/scifi/movies/2009/03/27/star-wars.html" + Scenario: Use post.categories variable when categories are in folders with mixed case + Given I have a scifi directory + And I have a scifi/Movies directory + And I have a scifi/Movies/_posts directory + And I have a _layouts directory + And I have the following post in "scifi/Movies": + | title | date | layout | content | + | Star Wars | 3/27/2009 | simple | Luke, I am your father. | + And I have a simple layout that contains "Post categories: {{ page.categories | array_to_sentence_string }}" + When I run jekyll + Then the _site directory should exist + And I should see "Post categories: scifi and movies" in "_site/scifi/movies/2009/03/27/star-wars.html" + + Scenario: Use post.categories variable when category is in YAML + Given I have a _posts directory + And I have a _layouts directory + And I have the following post: + | title | date | layout | category | content | + | Star Wars | 3/27/2009 | simple | movies | Luke, I am your father. | + And I have a simple layout that contains "Post category: {{ page.categories }}" + When I run jekyll + Then the _site directory should exist + And I should see "Post category: movies" in "_site/movies/2009/03/27/star-wars.html" + + Scenario: Use post.categories variable when category is in YAML and is mixed-case + Given I have a _posts directory + And I have a _layouts directory + And I have the following post: + | title | date | layout | category | content | + | Star Wars | 3/27/2009 | simple | Movies | Luke, I am your father. | + And I have a simple layout that contains "Post category: {{ page.categories }}" + When I run jekyll + Then the _site directory should exist + And I should see "Post category: movies" in "_site/movies/2009/03/27/star-wars.html" + Scenario: Use post.categories variable when category is in YAML Given I have a _posts directory And I have a _layouts directory @@ -105,16 +140,18 @@ Feature: Post data Then the _site directory should exist And I should see "Post category: movies" in "_site/movies/2009/03/27/star-wars.html" - Scenario: Use post.categories variable when categories are in YAML + Scenario: Use post.categories variable when categories are in YAML with mixed case Given I have a _posts directory And I have a _layouts directory - And I have the following post: - | title | date | layout | categories | content | - | Star Wars | 3/27/2009 | simple | ['scifi', 'movies'] | Luke, I am your father. | + And I have the following posts: + | title | date | layout | categories | content | + | Star Wars | 3/27/2009 | simple | ['scifi', 'Movies'] | Luke, I am your father. | + | Star Trek | 3/17/2013 | simple | ['SciFi', 'movies'] | Jean Luc, I am your father. | And I have a simple layout that contains "Post categories: {{ page.categories | array_to_sentence_string }}" When I run jekyll Then the _site directory should exist And I should see "Post categories: scifi and movies" in "_site/scifi/movies/2009/03/27/star-wars.html" + And I should see "Post categories: scifi and movies" in "_site/scifi/movies/2013/03/17/star-trek.html" Scenario: Disable a post from being published Given I have a _posts directory diff --git a/lib/jekyll/post.rb b/lib/jekyll/post.rb index b97dec4b8..38ae39867 100644 --- a/lib/jekyll/post.rb +++ b/lib/jekyll/post.rb @@ -36,7 +36,7 @@ module Jekyll @base = self.containing_dir(source, dir) @name = name - self.categories = dir.split('/').reject { |x| x.empty? } + self.categories = dir.downcase.split('/').reject { |x| x.empty? } self.process(name) begin self.read_yaml(@base, name) @@ -60,7 +60,7 @@ module Jekyll self.tags = self.data.pluralized_array("tag", "tags") if self.categories.empty? - self.categories = self.data.pluralized_array('category', 'categories') + self.categories = self.data.pluralized_array('category', 'categories').map {|c| c.downcase} end end From c1f309d2d77b6e468e43c0058b89e808dff66085 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Mon, 18 Mar 2013 00:00:48 +0100 Subject: [PATCH 64/85] Update history to reflect merge of #872. Closes #842. --- History.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/History.txt b/History.txt index da1923733..24685eb10 100644 --- a/History.txt +++ b/History.txt @@ -30,6 +30,7 @@ * Add source and destination directory protection (#535) * Better YAML error message (#718) * Bug Fixes + * Ensure all Post categories are downcase (#842, #872) * Force encoding of the rdiscount TOC to UTF8 to avoid conversion errors (#555) * Patch for multibyte URI problem with jekyll serve (#723) * Order plugin execution by priority (#864) From 51ec073e34e44b9f66bb94b62b30aa9e16422ab0 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Mon, 18 Mar 2013 18:32:50 +0100 Subject: [PATCH 65/85] Add 0.12.1 release notes to History.txt in master. #866 --- History.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/History.txt b/History.txt index 24685eb10..29b34d9c5 100644 --- a/History.txt +++ b/History.txt @@ -57,6 +57,14 @@ of greater than 1.9 (#771) * Switch to Simplecov for coverage report (#765) +== 0.12.1 / 2013-02-19 + * Minor Enhancements + * Update Kramdown version to 0.14.1 (#744) + * Test Enhancements + * Update Rake version to 10.0.3 (#744) + * Update Shoulda version to 3.3.2 (#744) + * Update Redcarpet version to 2.2.2 (#744) + == 0.12.0 / 2012-12-22 * Minor Enhancements * Add ability to explicitly specify included files (#261) From de8f0c986ced57ddfc52b47b2717d14ce9eef42d Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Tue, 19 Mar 2013 00:08:56 +0100 Subject: [PATCH 66/85] Update version for 1.0.0.beta2. --- jekyll.gemspec | 4 ++-- lib/jekyll.rb | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/jekyll.gemspec b/jekyll.gemspec index 40e2f1b74..c437eb8ec 100644 --- a/jekyll.gemspec +++ b/jekyll.gemspec @@ -4,9 +4,9 @@ Gem::Specification.new do |s| s.rubygems_version = '1.3.5' s.name = 'jekyll' - s.version = '1.0.0.beta1' + s.version = '1.0.0.beta2' s.license = 'MIT' - s.date = '2013-03-17' + s.date = '2013-03-19' s.rubyforge_project = 'jekyll' s.summary = "A simple, blog aware, static site generator." diff --git a/lib/jekyll.rb b/lib/jekyll.rb index b773897fc..b0401b99d 100644 --- a/lib/jekyll.rb +++ b/lib/jekyll.rb @@ -52,7 +52,7 @@ require_all 'jekyll/tags' SafeYAML::OPTIONS[:suppress_warnings] = true module Jekyll - VERSION = '1.0.0.beta1' + VERSION = '1.0.0.beta2' # Default options. Overriden by values in _config.yml. # Strings rather than symbols are used for compatability with YAML. From 787d68f512a023c0c321deb3fa25cffd02fc851d Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Tue, 19 Mar 2013 00:11:33 +0100 Subject: [PATCH 67/85] Release 1.0.0.beta2 From d6e0e5e2976a9868bdeb989c5dc22486ee6173ac Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Tue, 19 Mar 2013 22:22:46 +0100 Subject: [PATCH 68/85] Syncing STDOUT. Fixes #625. --- bin/jekyll | 1 + 1 file changed, 1 insertion(+) diff --git a/bin/jekyll b/bin/jekyll index 1dacb29be..2b36463a6 100755 --- a/bin/jekyll +++ b/bin/jekyll @@ -1,4 +1,5 @@ #!/usr/bin/env ruby +STDOUT.sync = true $:.unshift File.join(File.dirname(__FILE__), *%w{ .. lib }) From a72cdc9293051937ddca6af4db01fddbc54828ca Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Tue, 19 Mar 2013 22:31:37 +0100 Subject: [PATCH 69/85] Auto-regeneration fails loudly. Fixes #470. --- lib/jekyll/commands/build.rb | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/jekyll/commands/build.rb b/lib/jekyll/commands/build.rb index 181316d22..14961cdd8 100644 --- a/lib/jekyll/commands/build.rb +++ b/lib/jekyll/commands/build.rb @@ -61,7 +61,15 @@ module Jekyll dw.add_observer do |*args| t = Time.now.strftime("%Y-%m-%d %H:%M:%S") print " Regenerating: #{args.size} files at #{t} " - site.process + begin + site.process + rescue Jekyll::FatalException => e + puts + puts "ERROR: YOUR SITE COULD NOT BE BUILT:" + puts "------------------------------------" + puts e.message + exit(1) + end puts "...done." end From 0353733455579c838c3483488f343ea8db09f26b Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Tue, 19 Mar 2013 22:38:58 +0100 Subject: [PATCH 70/85] @mojombo and I are sick of Travis emails. --- .travis.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.travis.yml b/.travis.yml index b6b39b7d9..672606502 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,3 +4,8 @@ rvm: - 1.9.2 - 1.8.7 script: bundle exec rake +notifications: + irc: "irc.freenode.org#jekyll" + email: + on_success: never + on_failure: never From 196e26b580c5f001a6671094e046b1c6bbd30f78 Mon Sep 17 00:00:00 2001 From: "Aleksey V. Zapparov" Date: Tue, 19 Mar 2013 23:14:39 +0100 Subject: [PATCH 71/85] Flatten tags and categories lists. Fixes #741. --- lib/jekyll/post.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/jekyll/post.rb b/lib/jekyll/post.rb index 38ae39867..62c36d424 100644 --- a/lib/jekyll/post.rb +++ b/lib/jekyll/post.rb @@ -62,6 +62,9 @@ module Jekyll if self.categories.empty? self.categories = self.data.pluralized_array('category', 'categories').map {|c| c.downcase} end + + self.tags.flatten! + self.categories.flatten! end # Get the full path to the directory containing the post files From 51e130bb791bee508b5ac9f00b2342d4ccc77c33 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Mon, 25 Mar 2013 19:01:28 +0100 Subject: [PATCH 72/85] Force usage of older directory_watcher gem as 1.5 is broken. #883 --- jekyll.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jekyll.gemspec b/jekyll.gemspec index c437eb8ec..ac5c46e0b 100644 --- a/jekyll.gemspec +++ b/jekyll.gemspec @@ -25,7 +25,7 @@ Gem::Specification.new do |s| s.add_runtime_dependency('liquid', "~> 2.3") s.add_runtime_dependency('classifier', "~> 1.3") - s.add_runtime_dependency('directory_watcher', "~> 1.1") + s.add_runtime_dependency('directory_watcher', "~> 1.4.1") s.add_runtime_dependency('maruku', "~> 0.5") s.add_runtime_dependency('kramdown', "~> 0.14") s.add_runtime_dependency('pygments.rb', "~> 0.3.2") From 0520ecb3c4332d960b2ae705a9397d4bc4417e4e Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Mon, 25 Mar 2013 19:01:57 +0100 Subject: [PATCH 73/85] Update history to reflect merge of #883 --- History.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/History.txt b/History.txt index 29b34d9c5..1b310e970 100644 --- a/History.txt +++ b/History.txt @@ -30,6 +30,7 @@ * Add source and destination directory protection (#535) * Better YAML error message (#718) * Bug Fixes + * Force usage of older directory_watcher gem as 1.5 is broken (#883) * Ensure all Post categories are downcase (#842, #872) * Force encoding of the rdiscount TOC to UTF8 to avoid conversion errors (#555) * Patch for multibyte URI problem with jekyll serve (#723) From fa39a97bc6ef32d5020eff54bd110acc2c4278ac Mon Sep 17 00:00:00 2001 From: Matt Rogers Date: Mon, 25 Mar 2013 21:22:42 -0500 Subject: [PATCH 74/85] Remove unused code --- lib/jekyll/commands/build.rb | 3 --- 1 file changed, 3 deletions(-) diff --git a/lib/jekyll/commands/build.rb b/lib/jekyll/commands/build.rb index 14961cdd8..f105f81bd 100644 --- a/lib/jekyll/commands/build.rb +++ b/lib/jekyll/commands/build.rb @@ -4,9 +4,6 @@ module Jekyll def self.process(options) site = Jekyll::Site.new(options) - source = options['source'] - destination = options['destination'] - if options['watch'] self.watch(site, options) else From 0bebe0f31c63e8df275c725fb3cc21c5993f2e05 Mon Sep 17 00:00:00 2001 From: Lucas Jenss Date: Sun, 31 Mar 2013 20:20:15 +0200 Subject: [PATCH 75/85] Add test for processing of symlinked static files and pages --- test/source/symlink-test/symlinked-dir | 1 + test/source/symlink-test/symlinked-file | 1 + test/test_site.rb | 14 ++++++++++++++ 3 files changed, 16 insertions(+) create mode 120000 test/source/symlink-test/symlinked-dir create mode 120000 test/source/symlink-test/symlinked-file diff --git a/test/source/symlink-test/symlinked-dir b/test/source/symlink-test/symlinked-dir new file mode 120000 index 000000000..d2d7c52c8 --- /dev/null +++ b/test/source/symlink-test/symlinked-dir @@ -0,0 +1 @@ +../css \ No newline at end of file diff --git a/test/source/symlink-test/symlinked-file b/test/source/symlink-test/symlinked-file new file mode 120000 index 000000000..79c5d6f02 --- /dev/null +++ b/test/source/symlink-test/symlinked-file @@ -0,0 +1 @@ +../index.html \ No newline at end of file diff --git a/test/test_site.rb b/test/test_site.rb index 6934596f5..17303f7da 100644 --- a/test/test_site.rb +++ b/test/test_site.rb @@ -206,12 +206,26 @@ class TestSite < Test::Unit::TestCase Jekyll::DEFAULTS.merge({'source' => source_dir, 'destination' => dest_dir, 'safe' => true}) end site = Site.new(Jekyll.configuration) + + site.read_directories("symlink-test") + assert_equal [], site.pages + assert_equal [], site.static_files + stub(File).symlink?('symlink.js') {true} files = %w[symlink.js] assert_equal [], site.filter_entries(files) end should "not filter symlink entries when safe mode disabled" do + stub(Jekyll).configuration do + Jekyll::DEFAULTS.merge({'source' => source_dir, 'destination' => dest_dir, 'safe' => false}) + end + site = Site.new(Jekyll.configuration) + + site.read_directories("symlink-test") + assert_not_equal [], site.pages + assert_not_equal [], site.static_files + stub(File).symlink?('symlink.js') {true} files = %w[symlink.js] assert_equal files, @site.filter_entries(files) From 2c7325223fcc945e919f0f1de0106c8196d39ac7 Mon Sep 17 00:00:00 2001 From: Lucas Jenss Date: Sun, 31 Mar 2013 20:49:43 +0200 Subject: [PATCH 76/85] Fix symlinked assets not being included, even in unsafe mode --- lib/jekyll/site.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll/site.rb b/lib/jekyll/site.rb index b4b404424..b9a82ef2c 100644 --- a/lib/jekyll/site.rb +++ b/lib/jekyll/site.rb @@ -159,7 +159,7 @@ module Jekyll if File.directory?(f_abs) next if self.dest.sub(/\/$/, '') == f_abs read_directories(f_rel) - elsif !File.symlink?(f_abs) + else first3 = File.open(f_abs) { |fd| fd.read(3) } if first3 == "---" # file appears to have a YAML header so process it as a page From 88bd349ca9f0906f37282e6dec38dfa14c278736 Mon Sep 17 00:00:00 2001 From: Lucas Jenss Date: Sun, 31 Mar 2013 22:27:38 +0200 Subject: [PATCH 77/85] Fix import command parameters Apparently, the Commander gem treats options as boolean values when one does not indicate that a certain options is followed by a string. This led to the jekyll-import gem only receiving booleans instead of dbname/user/pwd... --- bin/jekyll | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/bin/jekyll b/bin/jekyll index 2b36463a6..5d3b229b5 100755 --- a/bin/jekyll +++ b/bin/jekyll @@ -92,12 +92,12 @@ command :import do |c| c.syntax = 'jekyll import [options]' c.description = 'Import your old blog to Jekyll' - c.option '--source', 'Source file or URL to migrate from' - c.option '--file', 'File to migrate from' - c.option '--dbname', 'Database name to migrate from' - c.option '--user', 'Username to use when migrating' - c.option '--pass', 'Password to use when migrating' - c.option '--host', 'Host address to use when migrating' + c.option '--source STRING', 'Source file or URL to migrate from' + c.option '--file STRING', 'File to migrate from' + c.option '--dbname STRING', 'Database name to migrate from' + c.option '--user STRING', 'Username to use when migrating' + c.option '--pass STRING', 'Password to use when migrating' + c.option '--host STRING', 'Host address to use when migrating' c.action do |args, options| begin From 571bdd686cc09dcc0f309debd1ee6a215462f790 Mon Sep 17 00:00:00 2001 From: Lucas Jenss Date: Mon, 1 Apr 2013 12:02:15 +0200 Subject: [PATCH 78/85] Move tests for symlinked files to separate test cases --- test/test_site.rb | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/test/test_site.rb b/test/test_site.rb index 17303f7da..42643b13e 100644 --- a/test/test_site.rb +++ b/test/test_site.rb @@ -206,17 +206,29 @@ class TestSite < Test::Unit::TestCase Jekyll::DEFAULTS.merge({'source' => source_dir, 'destination' => dest_dir, 'safe' => true}) end site = Site.new(Jekyll.configuration) - - site.read_directories("symlink-test") - assert_equal [], site.pages - assert_equal [], site.static_files - stub(File).symlink?('symlink.js') {true} files = %w[symlink.js] assert_equal [], site.filter_entries(files) end should "not filter symlink entries when safe mode disabled" do + stub(File).symlink?('symlink.js') {true} + files = %w[symlink.js] + assert_equal files, @site.filter_entries(files) + end + + should "not include symlinks in safe mode" do + stub(Jekyll).configuration do + Jekyll::DEFAULTS.merge({'source' => source_dir, 'destination' => dest_dir, 'safe' => true}) + end + site = Site.new(Jekyll.configuration) + + site.read_directories("symlink-test") + assert_equal [], site.pages + assert_equal [], site.static_files + end + + should "include symlinks in unsafe mode" do stub(Jekyll).configuration do Jekyll::DEFAULTS.merge({'source' => source_dir, 'destination' => dest_dir, 'safe' => false}) end @@ -225,10 +237,6 @@ class TestSite < Test::Unit::TestCase site.read_directories("symlink-test") assert_not_equal [], site.pages assert_not_equal [], site.static_files - - stub(File).symlink?('symlink.js') {true} - files = %w[symlink.js] - assert_equal files, @site.filter_entries(files) end context 'error handling' do From 6c6c57609823621159850868e0b627487645695b Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Mon, 1 Apr 2013 20:03:33 +0200 Subject: [PATCH 79/85] Update history to reflect merge of #910. --- History.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/History.txt b/History.txt index 1b310e970..78052ea57 100644 --- a/History.txt +++ b/History.txt @@ -30,6 +30,7 @@ * Add source and destination directory protection (#535) * Better YAML error message (#718) * Bug Fixes + * Accepting strings as arguments to jekyll-import command (#910) * Force usage of older directory_watcher gem as 1.5 is broken (#883) * Ensure all Post categories are downcase (#842, #872) * Force encoding of the rdiscount TOC to UTF8 to avoid conversion errors (#555) From d1de9e29d1cf8d04174e0eb59cc096941493829d Mon Sep 17 00:00:00 2001 From: Brian Kim Date: Mon, 1 Apr 2013 16:42:53 -0400 Subject: [PATCH 80/85] Add code climate badge to README --- README.textile | 1 + 1 file changed, 1 insertion(+) diff --git a/README.textile b/README.textile index 6ce392a8a..759401af0 100644 --- a/README.textile +++ b/README.textile @@ -1,6 +1,7 @@ h1. Jekyll !https://travis-ci.org/mojombo/jekyll.png?branch=master!:https://travis-ci.org/mojombo/jekyll +"!https://codeclimate.com/github/mojombo/jekyll.png!":https://codeclimate.com/github/mojombo/jekyll By Tom Preston-Werner, Nick Quaranto, and many awesome contributors! From 8810dc64794f58464cf6430dd16b16d6640296dc Mon Sep 17 00:00:00 2001 From: Alexander Ekdahl Date: Tue, 2 Apr 2013 17:46:07 +0200 Subject: [PATCH 81/85] Preloads directory_watcher glob --- lib/jekyll/commands/build.rb | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/lib/jekyll/commands/build.rb b/lib/jekyll/commands/build.rb index f105f81bd..1a23e49bc 100644 --- a/lib/jekyll/commands/build.rb +++ b/lib/jekyll/commands/build.rb @@ -4,11 +4,8 @@ module Jekyll def self.process(options) site = Jekyll::Site.new(options) - if options['watch'] - self.watch(site, options) - else - self.build(site, options) - end + self.build(site, options) + self.watch(site, options) if options['watch'] end # Private: Build the site from source into destination. @@ -47,13 +44,10 @@ module Jekyll source = options['source'] destination = options['destination'] - puts " Source: #{source}" - puts " Destination: #{destination}" puts " Auto-regeneration: enabled" - dw = DirectoryWatcher.new(source) + dw = DirectoryWatcher.new(source, :glob => self.globs(source, destination), :pre_load => true) dw.interval = 1 - dw.glob = self.globs(source, destination) dw.add_observer do |*args| t = Time.now.strftime("%Y-%m-%d %H:%M:%S") From 91197a1928e7d75473606789fb6e8ba6ebb204bf Mon Sep 17 00:00:00 2001 From: Alexander Ekdahl Date: Wed, 3 Apr 2013 00:57:57 +0200 Subject: [PATCH 82/85] Fixes for directory_watcher 1.5.x integration. Closes #916. --- jekyll.gemspec | 2 +- lib/jekyll/commands/build.rb | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/jekyll.gemspec b/jekyll.gemspec index ac5c46e0b..54ab33309 100644 --- a/jekyll.gemspec +++ b/jekyll.gemspec @@ -25,7 +25,7 @@ Gem::Specification.new do |s| s.add_runtime_dependency('liquid', "~> 2.3") s.add_runtime_dependency('classifier', "~> 1.3") - s.add_runtime_dependency('directory_watcher', "~> 1.4.1") + s.add_runtime_dependency('directory_watcher', "~> 1.5.1") s.add_runtime_dependency('maruku', "~> 0.5") s.add_runtime_dependency('kramdown', "~> 0.14") s.add_runtime_dependency('pygments.rb', "~> 0.3.2") diff --git a/lib/jekyll/commands/build.rb b/lib/jekyll/commands/build.rb index f105f81bd..405f01464 100644 --- a/lib/jekyll/commands/build.rb +++ b/lib/jekyll/commands/build.rb @@ -51,9 +51,8 @@ module Jekyll puts " Destination: #{destination}" puts " Auto-regeneration: enabled" - dw = DirectoryWatcher.new(source) + dw = DirectoryWatcher.new(source, :glob => self.globs(source, destination), :pre_load => true) dw.interval = 1 - dw.glob = self.globs(source, destination) dw.add_observer do |*args| t = Time.now.strftime("%Y-%m-%d %H:%M:%S") From e0a1bbe6e50e702361abc7980c1b6d2e0bd86014 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Wed, 3 Apr 2013 00:59:25 +0200 Subject: [PATCH 83/85] Update history to reflect inclusion of fix from #916. --- History.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/History.txt b/History.txt index 78052ea57..1a915b655 100644 --- a/History.txt +++ b/History.txt @@ -30,6 +30,7 @@ * Add source and destination directory protection (#535) * Better YAML error message (#718) * Bug Fixes + * Fix integration with directory_watcher 1.5.x (#916) * Accepting strings as arguments to jekyll-import command (#910) * Force usage of older directory_watcher gem as 1.5 is broken (#883) * Ensure all Post categories are downcase (#842, #872) From cf393cb862896967ea7e5febbc287d8340c71b76 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Wed, 3 Apr 2013 19:03:25 +0200 Subject: [PATCH 84/85] Using directory_watcher 1.4.1. 1.5.1 has issues on ubuntu. #916. --- History.txt | 2 +- jekyll.gemspec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/History.txt b/History.txt index 1a915b655..ab0a404c4 100644 --- a/History.txt +++ b/History.txt @@ -30,7 +30,7 @@ * Add source and destination directory protection (#535) * Better YAML error message (#718) * Bug Fixes - * Fix integration with directory_watcher 1.5.x (#916) + * Fix integration with directory_watcher 1.4.x (#916) * Accepting strings as arguments to jekyll-import command (#910) * Force usage of older directory_watcher gem as 1.5 is broken (#883) * Ensure all Post categories are downcase (#842, #872) diff --git a/jekyll.gemspec b/jekyll.gemspec index 54ab33309..ac5c46e0b 100644 --- a/jekyll.gemspec +++ b/jekyll.gemspec @@ -25,7 +25,7 @@ Gem::Specification.new do |s| s.add_runtime_dependency('liquid', "~> 2.3") s.add_runtime_dependency('classifier', "~> 1.3") - s.add_runtime_dependency('directory_watcher', "~> 1.5.1") + s.add_runtime_dependency('directory_watcher', "~> 1.4.1") s.add_runtime_dependency('maruku', "~> 0.5") s.add_runtime_dependency('kramdown', "~> 0.14") s.add_runtime_dependency('pygments.rb', "~> 0.3.2") From d3e92183fdaec6177c3e13fa458312bb542c56c5 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Wed, 3 Apr 2013 23:11:40 +0200 Subject: [PATCH 85/85] Update history to reflect merge of #909. --- History.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/History.txt b/History.txt index ab0a404c4..9ad68d665 100644 --- a/History.txt +++ b/History.txt @@ -30,6 +30,7 @@ * Add source and destination directory protection (#535) * Better YAML error message (#718) * Bug Fixes + * Fix symlinked static files not being correctly built in unsafe mode (#909) * Fix integration with directory_watcher 1.4.x (#916) * Accepting strings as arguments to jekyll-import command (#910) * Force usage of older directory_watcher gem as 1.5 is broken (#883)