bloggit 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History +4 -0
- data/Manifest +422 -0
- data/Rakefile +64 -0
- data/ReadMe +69 -0
- data/Todo +26 -0
- data/bin/bloggit +5 -0
- data/docs/index.html +57 -0
- data/docs/specifications.html +100 -0
- data/docs/src/_layout.rhtml +53 -0
- data/docs/src/index.markdown +5 -0
- data/docs/src/specifications.markdown +48 -0
- data/lib/bloggit.rb +28 -0
- data/lib/bloggit/boilerplate/Rakefile +2 -0
- data/lib/bloggit/boilerplate/pages/about.page +5 -0
- data/lib/bloggit/boilerplate/plugins/haloscan/init.rb +5 -0
- data/lib/bloggit/boilerplate/settings.yml +28 -0
- data/lib/bloggit/boilerplate/themes/default/styles/main.css +145 -0
- data/lib/bloggit/boilerplate/themes/default/templates/archive.rhtml +20 -0
- data/lib/bloggit/boilerplate/themes/default/templates/home.rhtml +6 -0
- data/lib/bloggit/boilerplate/themes/default/templates/layouts/main.rhtml +15 -0
- data/lib/bloggit/boilerplate/themes/default/templates/layouts/two-columns.rhtml +21 -0
- data/lib/bloggit/boilerplate/themes/default/templates/page.rhtml +8 -0
- data/lib/bloggit/boilerplate/themes/default/templates/post.rhtml +3 -0
- data/lib/bloggit/boilerplate/themes/default/templates/snippets/blog_entry.rhtml +16 -0
- data/lib/bloggit/boilerplate/themes/default/templates/snippets/navigation.rhtml +12 -0
- data/lib/bloggit/boilerplate/themes/default/templates/snippets/tag_list.rhtml +9 -0
- data/lib/bloggit/boilerplate/themes/default/templates/tag_archive.rhtml +38 -0
- data/lib/bloggit/checksum.rb +39 -0
- data/lib/bloggit/client/index.html +2 -0
- data/lib/bloggit/client/scripts/adapter/jquery/ext-jquery-adapter.js +12 -0
- data/lib/bloggit/client/scripts/adapter/jquery/jquery-plugins.js +965 -0
- data/lib/bloggit/client/scripts/adapter/jquery/jquery.js +2201 -0
- data/lib/bloggit/client/scripts/adapter/prototype/effects.js +1098 -0
- data/lib/bloggit/client/scripts/adapter/prototype/ext-prototype-adapter.js +12 -0
- data/lib/bloggit/client/scripts/adapter/prototype/prototype.js +2523 -0
- data/lib/bloggit/client/scripts/adapter/prototype/scriptaculous.js +59 -0
- data/lib/bloggit/client/scripts/adapter/yui/ext-yui-adapter.js +12 -0
- data/lib/bloggit/client/scripts/adapter/yui/yui-utilities.js +18 -0
- data/lib/bloggit/client/scripts/app.js +121 -0
- data/lib/bloggit/client/scripts/ext-all.js +256 -0
- data/lib/bloggit/client/scripts/resources/css/README.txt +3 -0
- data/lib/bloggit/client/scripts/resources/css/basic-dialog.css +286 -0
- data/lib/bloggit/client/scripts/resources/css/box.css +111 -0
- data/lib/bloggit/client/scripts/resources/css/button.css +148 -0
- data/lib/bloggit/client/scripts/resources/css/combo.css +46 -0
- data/lib/bloggit/client/scripts/resources/css/core.css +290 -0
- data/lib/bloggit/client/scripts/resources/css/date-picker.css +155 -0
- data/lib/bloggit/client/scripts/resources/css/dd.css +61 -0
- data/lib/bloggit/client/scripts/resources/css/debug.css +55 -0
- data/lib/bloggit/client/scripts/resources/css/ext-all.css +3167 -0
- data/lib/bloggit/client/scripts/resources/css/form.css +359 -0
- data/lib/bloggit/client/scripts/resources/css/grid.css +295 -0
- data/lib/bloggit/client/scripts/resources/css/layout.css +252 -0
- data/lib/bloggit/client/scripts/resources/css/menu.css +116 -0
- data/lib/bloggit/client/scripts/resources/css/panel.css +258 -0
- data/lib/bloggit/client/scripts/resources/css/qtips.css +119 -0
- data/lib/bloggit/client/scripts/resources/css/reset-min.css +9 -0
- data/lib/bloggit/client/scripts/resources/css/resizable.css +143 -0
- data/lib/bloggit/client/scripts/resources/css/tabs.css +134 -0
- data/lib/bloggit/client/scripts/resources/css/toolbar.css +160 -0
- data/lib/bloggit/client/scripts/resources/css/tree.css +179 -0
- data/lib/bloggit/client/scripts/resources/css/window.css +155 -0
- data/lib/bloggit/client/scripts/resources/css/ytheme-aero.css +581 -0
- data/lib/bloggit/client/scripts/resources/css/ytheme-gray.css +438 -0
- data/lib/bloggit/client/scripts/resources/css/ytheme-vista.css +511 -0
- data/lib/bloggit/client/scripts/resources/images/aero/basic-dialog/aero-close-over.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/basic-dialog/aero-close.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/basic-dialog/bg-center.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/basic-dialog/bg-left.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/basic-dialog/bg-right.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/basic-dialog/close.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/basic-dialog/collapse-over.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/basic-dialog/collapse.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/basic-dialog/e-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/basic-dialog/expand-over.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/basic-dialog/expand.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/basic-dialog/hd-sprite.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/basic-dialog/s-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/basic-dialog/se-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/basic-dialog/w-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/gradient-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/grid/grid-blue-split.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/grid/grid-hrow.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/grid/grid-split.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/grid/grid-vista-hd.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/grid/pspbrwse.jbf +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/grid/sort-col-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/grid/sort_asc.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/grid/sort_desc.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/layout/collapse.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/layout/expand.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/layout/gradient-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/layout/ns-collapse.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/layout/ns-expand.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/layout/panel-close.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/layout/panel-title-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/layout/panel-title-light-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/layout/tab-close-on.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/layout/tab-close.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/qtip/bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/s.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/sizer/e-handle-dark.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/sizer/e-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/sizer/ne-handle-dark.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/sizer/ne-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/sizer/nw-handle-dark.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/sizer/nw-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/sizer/s-handle-dark.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/sizer/s-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/sizer/se-handle-dark.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/sizer/se-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/sizer/sw-handle-dark.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/sizer/sw-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/tabs/tab-btm-inactive-left-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/tabs/tab-btm-inactive-right-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/tabs/tab-btm-left-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/tabs/tab-btm-right-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/tabs/tab-sprite.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/tabs/tab-strip-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/tabs/tab-strip-bg.png +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/tabs/tab-strip-btm-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/toolbar/bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/aero/toolbar/tb-btn-sprite.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/basic-dialog/btn-arrow.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/basic-dialog/btn-sprite.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/basic-dialog/close.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/basic-dialog/collapse.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/basic-dialog/e-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/basic-dialog/expand.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/basic-dialog/hd-sprite.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/basic-dialog/progress.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/basic-dialog/progress2.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/basic-dialog/s-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/basic-dialog/se-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/box/corners-blue.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/box/corners.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/box/l-blue.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/box/l.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/box/r-blue.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/box/r.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/box/tb-blue.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/box/tb.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/dd/drop-add.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/dd/drop-no.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/dd/drop-yes.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/form/date-trigger.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/form/error-tip-corners.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/form/exclamation.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/form/text-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/form/trigger.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/gradient-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/Thumbs.db +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/arrow-left-white.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/arrow-right-white.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/col-move-bottom.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/col-move-top.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/dirty.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/done.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/drop-no.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/drop-yes.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/footer-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/grid-blue-hd.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/grid-blue-split.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/grid-hrow.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/grid-loading.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/grid-split.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/grid-vista-hd.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/hd-pop.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/hmenu-asc.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/hmenu-desc.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/hmenu-lock.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/hmenu-lock.png +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/hmenu-unlock.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/hmenu-unlock.png +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/invalid_line.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/loading.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/mso-hd.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/nowait.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/page-first-disabled.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/page-first.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/page-last-disabled.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/page-last.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/page-next-disabled.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/page-next.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/page-prev-disabled.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/page-prev.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/pick-button.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/refresh.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/sort_asc.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/sort_desc.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/grid/wait.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/layout/collapse.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/layout/expand.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/layout/gradient-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/layout/ns-collapse.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/layout/ns-expand.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/layout/panel-close.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/layout/panel-title-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/layout/panel-title-light-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/layout/stick.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/layout/stuck.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/layout/tab-close-on.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/layout/tab-close.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/menu/checked.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/menu/group-checked.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/menu/menu-parent.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/menu/menu.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/menu/unchecked.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/qtip/bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/qtip/close.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/qtip/tip-sprite.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/s.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/shadow-c.png +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/shadow-lr.png +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/shadow.png +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/shared/calendar.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/shared/left-btn.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/shared/right-btn.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/shared/warning.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/sizer/e-handle-dark.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/sizer/e-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/sizer/ne-handle-dark.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/sizer/ne-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/sizer/nw-handle-dark.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/sizer/nw-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/sizer/s-handle-dark.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/sizer/s-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/sizer/se-handle-dark.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/sizer/se-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/sizer/square.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/sizer/sw-handle-dark.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/sizer/sw-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/tabs/tab-btm-inactive-left-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/tabs/tab-btm-inactive-right-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/tabs/tab-btm-left-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/tabs/tab-btm-right-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/tabs/tab-sprite.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/toolbar/btn-arrow-light.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/toolbar/btn-arrow.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/toolbar/btn-over-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/toolbar/gray-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/toolbar/tb-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/toolbar/tb-btn-sprite.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/tree/drop-add.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/tree/drop-between.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/tree/drop-no.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/tree/drop-over.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/tree/drop-under.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/tree/drop-yes.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/tree/elbow-end-minus-nl.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/tree/elbow-end-minus.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/tree/elbow-end-plus-nl.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/tree/elbow-end-plus.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/tree/elbow-end.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/tree/elbow-line.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/tree/elbow-minus-nl.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/tree/elbow-minus.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/tree/elbow-plus-nl.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/tree/elbow-plus.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/tree/elbow.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/tree/folder-open.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/tree/folder.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/tree/leaf.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/tree/loading.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/default/tree/s.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/basic-dialog/close.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/basic-dialog/collapse.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/basic-dialog/dlg-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/basic-dialog/e-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/basic-dialog/expand.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/basic-dialog/hd-sprite.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/basic-dialog/s-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/basic-dialog/se-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/gradient-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/grid/grid-hrow.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/layout/collapse.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/layout/expand.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/layout/gradient-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/layout/ns-collapse.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/layout/ns-expand.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/layout/panel-close.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/layout/panel-title-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/layout/panel-title-light-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/layout/stick.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/layout/tab-close-on.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/layout/tab-close.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/menu/checked.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/menu/group-checked.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/menu/menu-parent.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/menu/menu.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/menu/unchecked.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/qtip/bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/qtip/tip-sprite.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/s.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/sizer/e-handle-dark.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/sizer/e-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/sizer/ne-handle-dark.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/sizer/ne-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/sizer/nw-handle-dark.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/sizer/nw-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/sizer/s-handle-dark.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/sizer/s-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/sizer/se-handle-dark.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/sizer/se-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/sizer/sw-handle-dark.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/sizer/sw-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/tabs/tab-btm-inactive-left-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/tabs/tab-btm-inactive-right-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/tabs/tab-btm-left-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/tabs/tab-btm-right-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/tabs/tab-sprite.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/toolbar/gray-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/gray/toolbar/tb-btn-sprite.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/basic-dialog/bg-center.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/basic-dialog/bg-left.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/basic-dialog/bg-right.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/basic-dialog/close.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/basic-dialog/collapse.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/basic-dialog/dlg-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/basic-dialog/e-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/basic-dialog/expand.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/basic-dialog/hd-sprite.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/basic-dialog/s-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/basic-dialog/se-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/basic-dialog/w-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/gradient-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/grid/grid-split.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/grid/grid-vista-hd.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/layout/collapse.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/layout/expand.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/layout/gradient-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/layout/ns-collapse.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/layout/ns-expand.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/layout/panel-close.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/layout/panel-title-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/layout/panel-title-light-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/layout/stick.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/layout/tab-close-on.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/layout/tab-close.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/qtip/bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/qtip/tip-sprite.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/s.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/sizer/e-handle-dark.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/sizer/e-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/sizer/ne-handle-dark.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/sizer/ne-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/sizer/nw-handle-dark.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/sizer/nw-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/sizer/s-handle-dark.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/sizer/s-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/sizer/se-handle-dark.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/sizer/se-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/sizer/sw-handle-dark.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/sizer/sw-handle.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/tabs/tab-btm-inactive-left-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/tabs/tab-btm-inactive-right-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/tabs/tab-btm-left-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/tabs/tab-btm-right-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/tabs/tab-sprite.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/toolbar/gray-bg.gif +0 -0
- data/lib/bloggit/client/scripts/resources/images/vista/toolbar/tb-btn-sprite.gif +0 -0
- data/lib/bloggit/client/scripts/resources/license.txt +25 -0
- data/lib/bloggit/client/scripts/resources/raw-images/shadow.psd +0 -0
- data/lib/bloggit/client/scripts/resources/resources.jsb +522 -0
- data/lib/bloggit/client/templates/json.rhtml +5 -0
- data/lib/bloggit/client/templates/main.rhtml +109 -0
- data/lib/bloggit/commandline.rb +52 -0
- data/lib/bloggit/commands/page_cmd.rb +17 -0
- data/lib/bloggit/commands/plugin_cmd.rb +89 -0
- data/lib/bloggit/commands/post_cmd.rb +17 -0
- data/lib/bloggit/commands/site_cmd.rb +82 -0
- data/lib/bloggit/commands/theme_cmd.rb +16 -0
- data/lib/bloggit/etc/hash.rb +24 -0
- data/lib/bloggit/etc/string.rb +5 -0
- data/lib/bloggit/generator.rb +331 -0
- data/lib/bloggit/hooks.rb +21 -0
- data/lib/bloggit/media.rb +40 -0
- data/lib/bloggit/page.rb +98 -0
- data/lib/bloggit/plugin.rb +52 -0
- data/lib/bloggit/post.rb +169 -0
- data/lib/bloggit/publisher.rb +115 -0
- data/lib/bloggit/server.rb +102 -0
- data/lib/bloggit/site.rb +183 -0
- data/lib/bloggit/tag.rb +61 -0
- data/lib/bloggit/tasks/client.rb +9 -0
- data/lib/bloggit/tasks/publishing.rb +36 -0
- data/lib/bloggit/tasks/scm.rb +78 -0
- data/lib/bloggit/tasks/specs.rb +128 -0
- data/lib/bloggit/template.rb +334 -0
- data/lib/bloggit/text_formatter.rb +50 -0
- data/lib/util/fixed_hoe.rb +553 -0
- data/test/fixtures/test.blog/Rakefile +7 -0
- data/test/fixtures/test.blog/pages/about.page +7 -0
- data/test/fixtures/test.blog/pages/coming-soon.page +3 -0
- data/test/fixtures/test.blog/pages/todo.page +23 -0
- data/test/fixtures/test.blog/plugins/example/init.rb +69 -0
- data/test/fixtures/test.blog/plugins/haloscan/init.rb +25 -0
- data/test/fixtures/test.blog/plugins/js_search/init.rb +51 -0
- data/test/fixtures/test.blog/plugins/rdoc_formatter/init.rb +14 -0
- data/test/fixtures/test.blog/posts/2004.03.07_to-boldly-go.post +11 -0
- data/test/fixtures/test.blog/posts/2007.03.25_sure-whatever.post +10 -0
- data/test/fixtures/test.blog/posts/2007.03.27_rdoc-anyone.post +13 -0
- data/test/fixtures/test.blog/posts/2010.12.07_35-already.post +5 -0
- data/test/fixtures/test.blog/settings.yml +34 -0
- data/test/fixtures/test.blog/themes/default/styles/main.css +145 -0
- data/test/fixtures/test.blog/themes/default/templates/archive.rhtml +22 -0
- data/test/fixtures/test.blog/themes/default/templates/home.rhtml +9 -0
- data/test/fixtures/test.blog/themes/default/templates/layouts/main.rhtml +17 -0
- data/test/fixtures/test.blog/themes/default/templates/layouts/two-columns.rhtml +21 -0
- data/test/fixtures/test.blog/themes/default/templates/page.rhtml +8 -0
- data/test/fixtures/test.blog/themes/default/templates/post.rhtml +15 -0
- data/test/fixtures/test.blog/themes/default/templates/snippets/blog_entry.rhtml +10 -0
- data/test/fixtures/test.blog/themes/default/templates/snippets/navigation.rhtml +12 -0
- data/test/fixtures/test.blog/themes/default/templates/snippets/tag_list.rhtml +9 -0
- data/test/fixtures/test.blog/themes/default/templates/tag_archive.rhtml +41 -0
- data/test/helpers.rb +25 -0
- data/test/unit/bloggit_test.rb +9 -0
- data/test/unit/page_test.rb +28 -0
- data/test/unit/post_test.rb +36 -0
- data/test/unit/site_test.rb +27 -0
- data/test/unit/template_test.rb +21 -0
- data/test/unit/text_formatter_test.rb +43 -0
- metadata +520 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
require 'rake'
|
|
2
|
+
require 'rake/tasklib'
|
|
3
|
+
|
|
4
|
+
module Behaviors #:nodoc:
|
|
5
|
+
include Rake
|
|
6
|
+
|
|
7
|
+
class ReportTask < TaskLib #:nodoc:
|
|
8
|
+
attr_accessor :pattern
|
|
9
|
+
attr_accessor :html_dir
|
|
10
|
+
attr_accessor :src_dir
|
|
11
|
+
|
|
12
|
+
def initialize(name=:behaviors)
|
|
13
|
+
@name = name
|
|
14
|
+
@html_dir = 'doc'
|
|
15
|
+
@src_dir = 'doc'
|
|
16
|
+
yield self if block_given?
|
|
17
|
+
define
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def define
|
|
21
|
+
desc "List behavioral definitions for the classes specified (use for=<regexp> to further limit files included in report)"
|
|
22
|
+
task @name do
|
|
23
|
+
specifications.each do |spec|
|
|
24
|
+
puts "#{spec.name} should:\n"
|
|
25
|
+
spec.requirements.each do |req|
|
|
26
|
+
puts " - #{req}"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
desc "Generate html report of behavioral definitions for the classes specified (use for=<regexp> to further limit files included in report)"
|
|
32
|
+
task "#{@name}_html" do
|
|
33
|
+
require 'erb'
|
|
34
|
+
txt =<<-EOS
|
|
35
|
+
<html><head>
|
|
36
|
+
<style>
|
|
37
|
+
div.title { width: 600px; font: bold 14pt trebuchet ms; }
|
|
38
|
+
div.specification { font: bold 12pt trebuchet ms; border: solid 1px black; width: 600px; padding: 5px; margin: 5px; }
|
|
39
|
+
ul.requirements { font: normal 11pt verdana; padding-left: 0; margin-left: 0; border-bottom: 1px solid gray; width: 600px; }
|
|
40
|
+
ul.requirements li { list-style: none; margin: 0; padding: 0.25em; border-top: 1px solid gray; }
|
|
41
|
+
</style>
|
|
42
|
+
</head>
|
|
43
|
+
<body>
|
|
44
|
+
<div class="title">Specifications</div>
|
|
45
|
+
<% specifications.each do |spec| %>
|
|
46
|
+
<div class="specification">
|
|
47
|
+
<%= spec.name %> should:
|
|
48
|
+
<ul class="requirements">
|
|
49
|
+
<% spec.requirements.each do |req| %>
|
|
50
|
+
<li><%= req %></li>
|
|
51
|
+
<% end %>
|
|
52
|
+
</ul>
|
|
53
|
+
</div>
|
|
54
|
+
<% end %>
|
|
55
|
+
</body>
|
|
56
|
+
</html>
|
|
57
|
+
EOS
|
|
58
|
+
output_dir = File.expand_path(@html_dir)
|
|
59
|
+
mkdir_p output_dir
|
|
60
|
+
output_filename = output_dir + "/behaviors.html"
|
|
61
|
+
File.open(output_filename,"w") do |f|
|
|
62
|
+
f.write ERB.new(txt).result(binding)
|
|
63
|
+
end
|
|
64
|
+
puts "(Wrote #{output_filename})"
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
task "#{@name}_src" do
|
|
68
|
+
require 'erb'
|
|
69
|
+
txt =<<-EOS
|
|
70
|
+
<% specifications.each do |spec| %>
|
|
71
|
+
## <%= spec.name %> should:
|
|
72
|
+
|
|
73
|
+
<% spec.requirements.each do |req| %>
|
|
74
|
+
* <%= req %><% end %>
|
|
75
|
+
|
|
76
|
+
<% end %>
|
|
77
|
+
EOS
|
|
78
|
+
output_dir = File.expand_path(@src_dir)
|
|
79
|
+
mkdir_p output_dir
|
|
80
|
+
output_filename = output_dir + "/specifications.markdown"
|
|
81
|
+
File.open(output_filename,"w") do |f|
|
|
82
|
+
f.write ERB.new(txt).result(binding)
|
|
83
|
+
end
|
|
84
|
+
puts "(Wrote #{output_filename})"
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
protected
|
|
90
|
+
|
|
91
|
+
def test_files
|
|
92
|
+
test_list = FileList[@pattern]
|
|
93
|
+
if ENV['for']
|
|
94
|
+
test_list = test_list.grep(/#{ENV['for']}/i)
|
|
95
|
+
end
|
|
96
|
+
test_list
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def specifications
|
|
100
|
+
test_files.map do |file|
|
|
101
|
+
spec = OpenStruct.new
|
|
102
|
+
m = %r".*/([^/].*)_test.rb".match(file)
|
|
103
|
+
class_name = titleize(m[1]) if m[1]
|
|
104
|
+
spec.name = class_name
|
|
105
|
+
spec.requirements = []
|
|
106
|
+
File::readlines(file).each do |line|
|
|
107
|
+
if line =~ /^\s*should\s+\(?\s*["'](.*)["']/
|
|
108
|
+
spec.requirements << $1
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
spec
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def titleize(word)
|
|
116
|
+
humanize(underscore(word)).gsub(/\b([a-z])/) { $1.capitalize }
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def underscore(camel_cased_word) camel_cased_word.to_s.gsub(/::/, '/').
|
|
120
|
+
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').gsub(/([a-z\d])([A-Z])/,'\1_\2').tr("-", "_").downcase
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def humanize(lower_case_and_underscored_word)
|
|
124
|
+
lower_case_and_underscored_word.to_s.gsub(/_id$/, "").gsub(/_/, " ").capitalize
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
end
|
|
128
|
+
end
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
# See Bloggit::Template
|
|
2
|
+
require 'test/unit/assertions'
|
|
3
|
+
require 'erb'
|
|
4
|
+
|
|
5
|
+
module Bloggit
|
|
6
|
+
|
|
7
|
+
# = Template
|
|
8
|
+
class Template
|
|
9
|
+
include Test::Unit::Assertions
|
|
10
|
+
attr_reader :file_path, :settings, :template, :template_src, :yaml_parts, :content_parts
|
|
11
|
+
|
|
12
|
+
def initialize(file_path, content=nil)
|
|
13
|
+
@file_path = file_path
|
|
14
|
+
@settings = {}
|
|
15
|
+
@template_src = ""
|
|
16
|
+
@content_parts = {}
|
|
17
|
+
unless file_path.nil?
|
|
18
|
+
@yaml_parts = YAML::load_stream( File.open(file_path, 'r') )
|
|
19
|
+
@yaml_parts.documents.each do |yml|
|
|
20
|
+
if yml.is_a? Hash
|
|
21
|
+
@settings.merge!(yml)
|
|
22
|
+
elsif yml.is_a? String
|
|
23
|
+
@template_src << yml.to_s
|
|
24
|
+
else
|
|
25
|
+
puts "TEMPLATE: Uh, not sure what to do with this part"
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
else
|
|
29
|
+
@template_src = content
|
|
30
|
+
end
|
|
31
|
+
@template = ERB.new(@template_src, 0, "%<>")
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def render(params={})
|
|
35
|
+
if name = params.fetch(:snippet, nil)
|
|
36
|
+
Template.generate "snippets/#{name}", params
|
|
37
|
+
|
|
38
|
+
elsif ctx = params.fetch(:template, nil)
|
|
39
|
+
@params = ctx
|
|
40
|
+
if layout_name = @settings.fetch('layout', nil)
|
|
41
|
+
output = @template.result( binding )
|
|
42
|
+
ctx['content_for_layout'] = output
|
|
43
|
+
Template.generate "layouts/#{layout_name}", ctx
|
|
44
|
+
else
|
|
45
|
+
@template.result( binding )
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
elsif name = params.fetch(:plugin, nil)
|
|
49
|
+
puts "RENDER PLUGIN #{name}"
|
|
50
|
+
|
|
51
|
+
elsif name = params.fetch(:content_for, nil)
|
|
52
|
+
Template[name].to_s
|
|
53
|
+
|
|
54
|
+
elsif obj = params.fetch(:content, nil)
|
|
55
|
+
obj.render_content(binding)
|
|
56
|
+
|
|
57
|
+
elsif content = params.fetch(:text, nil)
|
|
58
|
+
Template.from_text(content).template.result(binding)
|
|
59
|
+
|
|
60
|
+
else
|
|
61
|
+
puts "Cannot find renderer for #{params.to_yaml}"
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def url_for(params={})
|
|
66
|
+
if post = params.delete(:post)
|
|
67
|
+
if post.is_a? String
|
|
68
|
+
Template.path_to_root + site.get_post_by_slug(post).permalink
|
|
69
|
+
elsif post.is_a? Post
|
|
70
|
+
Template.path_to_root + post.permalink
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
elsif page = params.delete(:page)
|
|
74
|
+
if page.is_a? String
|
|
75
|
+
Template.path_to_root + site.get_page_by_slug(page).permalink
|
|
76
|
+
elsif page.is_a? Page
|
|
77
|
+
Template.path_to_root + page.permalink
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
elsif tag = params.delete(:tag)
|
|
81
|
+
if tag.is_a? String
|
|
82
|
+
Template.path_to_root + Tag.tag_list[tag].permalink
|
|
83
|
+
elsif tag.is_a? Tag
|
|
84
|
+
Template.path_to_root + tag.permalink
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
elsif media = params.delete(:media)
|
|
88
|
+
if media.is_a? String
|
|
89
|
+
Template.path_to_root + site.media[media].permalink
|
|
90
|
+
elsif media.is_a? Media
|
|
91
|
+
Template.path_to_root + media.permalink
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
elsif script = params.delete(:script)
|
|
95
|
+
script += '.js' unless script.ends_with? '.js'
|
|
96
|
+
"#{ Template.path_to_root }theme/scripts/#{ script }"
|
|
97
|
+
|
|
98
|
+
elsif style = params.delete(:style)
|
|
99
|
+
style += '.css' unless style.ends_with? '.css'
|
|
100
|
+
"#{ Template.path_to_root }theme/styles/#{ style }"
|
|
101
|
+
|
|
102
|
+
elsif image = params.delete(:image)
|
|
103
|
+
"#{ Template.path_to_root }theme/images/#{ image }"
|
|
104
|
+
|
|
105
|
+
elsif path = params.delete(:from_root)
|
|
106
|
+
Template.path_to_root + path
|
|
107
|
+
|
|
108
|
+
elsif url = params.delete(:url)
|
|
109
|
+
url
|
|
110
|
+
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def tag_links(obj)
|
|
115
|
+
links = []
|
|
116
|
+
obj.tags.each do |tag|
|
|
117
|
+
links << link_to(tag, :tag=>tag)
|
|
118
|
+
end
|
|
119
|
+
links
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def url_for_blog
|
|
123
|
+
"#{ Template.path_to_root }#{site.build_post_path('index.html')}"
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def url_for_home
|
|
127
|
+
"#{ Template.path_to_root }index.html"
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def url_for_feed
|
|
131
|
+
"#{ Template.path_to_root }#{site.settings.syndication.filename}"
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def link_to(title, params={})
|
|
135
|
+
url = url_for(params)
|
|
136
|
+
title ||= url
|
|
137
|
+
atts = ""
|
|
138
|
+
params.each {|k,v| atts << %Q|#{k}="#{v.to_s}"|}
|
|
139
|
+
%Q|<a #{atts} href="#{url}">#{title}</a>|
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
def link_to_home(title, params={})
|
|
143
|
+
atts = ""
|
|
144
|
+
params.each {|k,v| atts << %Q|#{k}="#{v.to_s}"|}
|
|
145
|
+
%Q|<a #{atts} href="#{ url_for_home }">#{title}</a>|
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
def link_to_blog(title, params={})
|
|
149
|
+
atts = ""
|
|
150
|
+
params.each {|k,v| atts << %Q|#{k}="#{v.to_s}"|}
|
|
151
|
+
%Q|<a #{atts} href="#{ url_for_blog }">#{title}</a>|
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
def link_to_feed(title, params={})
|
|
155
|
+
atts = ""
|
|
156
|
+
params.each {|k,v| atts << %Q|#{k}="#{v.to_s}"|}
|
|
157
|
+
%Q|<a #{atts} href="#{ url_for_feed }">#{title}</a>|
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def media_link_to(media_path, params={})
|
|
161
|
+
media_item_url = url_for(:media=>media_path)
|
|
162
|
+
size = params.delete(:size).to_s
|
|
163
|
+
atts = %Q|border="0" |
|
|
164
|
+
atts << %Q|width="#{size}" | if size.ends_with?('%')
|
|
165
|
+
image_tag = %Q|<img src="#{media_item_url}" #{atts} />|
|
|
166
|
+
link_to image_tag, params
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
# def link_to_archive(title, params={})
|
|
171
|
+
# atts = ""
|
|
172
|
+
# params.each {|k,v| atts << %Q|#{k}="#{v.to_s}"|}
|
|
173
|
+
# %Q|<a #{atts} href="#{Template.path_to_root}index.html">#{title}</a>|
|
|
174
|
+
# end
|
|
175
|
+
|
|
176
|
+
def site
|
|
177
|
+
Template.site
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
def [](key)
|
|
181
|
+
if @params.has_key? key.to_s
|
|
182
|
+
@params[key.to_s]
|
|
183
|
+
elsif @params.has_key? key.to_sym
|
|
184
|
+
@params[key.to_sym]
|
|
185
|
+
else
|
|
186
|
+
super(*args)
|
|
187
|
+
end
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
def method_missing(name, *args)
|
|
191
|
+
if @params.has_key? name.to_s
|
|
192
|
+
@params[name.to_s]
|
|
193
|
+
elsif @params.has_key? name.to_sym
|
|
194
|
+
@params[name.to_sym]
|
|
195
|
+
elsif Template.tag_registered?(name)
|
|
196
|
+
Template.execute_tag(name, self, *args)
|
|
197
|
+
else
|
|
198
|
+
raise "Template Error: No method/data found for '#{name}' in template #{file_path}"
|
|
199
|
+
end
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
def capture(*args, &block)
|
|
203
|
+
# execute the block
|
|
204
|
+
begin
|
|
205
|
+
buffer = eval('_erbout', block.binding)
|
|
206
|
+
rescue
|
|
207
|
+
buffer = nil
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
if buffer.nil?
|
|
211
|
+
capture_block(*args, &block).to_s
|
|
212
|
+
else
|
|
213
|
+
capture_erb_with_buffer(buffer, *args, &block).to_s
|
|
214
|
+
end
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
def content_for(name, content = nil, &block)
|
|
218
|
+
Template[name] = capture(&block)
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
def render_binding
|
|
222
|
+
binding
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
private
|
|
226
|
+
|
|
227
|
+
def capture_block(*args, &block)
|
|
228
|
+
block.call(*args)
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
def capture_erb(*args, &block)
|
|
232
|
+
buffer = eval('_erbout', block.binding)
|
|
233
|
+
capture_erb_with_buffer(buffer, *args, &block)
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
def capture_erb_with_buffer(buffer, *args, &block)
|
|
237
|
+
pos = buffer.length
|
|
238
|
+
block.call(*args)
|
|
239
|
+
# extract the block
|
|
240
|
+
data = buffer[pos..-1]
|
|
241
|
+
# replace it in the original with empty string
|
|
242
|
+
buffer[pos..-1] = ''
|
|
243
|
+
data
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
def erb_content_for(name, &block)
|
|
247
|
+
Template[name] = capture_erb(&block)
|
|
248
|
+
end
|
|
249
|
+
|
|
250
|
+
def block_content_for(name, &block)
|
|
251
|
+
Template[name] = capture_block(&block)
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
class << self
|
|
256
|
+
private :new
|
|
257
|
+
|
|
258
|
+
attr_accessor :site, :template_dir, :content_parts, :src_path, :current_template, :folder_depth
|
|
259
|
+
|
|
260
|
+
include Test::Unit::Assertions
|
|
261
|
+
|
|
262
|
+
def config
|
|
263
|
+
yield self
|
|
264
|
+
assert !@site.nil?, 'Site cannot be nil'
|
|
265
|
+
@template_dir = File.join(@site.base_path, 'themes', @site.theme, 'templates') if @template_dir.nil?
|
|
266
|
+
@is_ready = true
|
|
267
|
+
@template_cache = {}
|
|
268
|
+
@content_parts = {}
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
# Do not call directly!
|
|
272
|
+
def generate(template, ctx) #:nodoc:
|
|
273
|
+
assert @is_ready, "Template isn't ready"
|
|
274
|
+
@template_cache[template] ||= from_file( "#{template_dir}/#{template.to_s}.rhtml" )
|
|
275
|
+
@template_cache[template].render(:template=>ctx).to_s
|
|
276
|
+
end
|
|
277
|
+
|
|
278
|
+
def render(template, src_path, ctx)
|
|
279
|
+
@content_parts.clear
|
|
280
|
+
@folder_depth = (src_path == '.') ? 0 : src_path.split(File::SEPARATOR).length
|
|
281
|
+
generate(template, ctx)
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
def set_content_for(key, value)
|
|
285
|
+
@content_parts[key] = [] unless @content_parts.has_key? key
|
|
286
|
+
@content_parts[key] << value
|
|
287
|
+
end
|
|
288
|
+
|
|
289
|
+
def [](key)
|
|
290
|
+
if @content_parts.has_key?( key )
|
|
291
|
+
@content_parts[key].join
|
|
292
|
+
else
|
|
293
|
+
"<!-- `#{key}` not available -->"
|
|
294
|
+
end
|
|
295
|
+
end
|
|
296
|
+
|
|
297
|
+
def []=(key,value)
|
|
298
|
+
set_content_for(key, value)
|
|
299
|
+
end
|
|
300
|
+
|
|
301
|
+
def path_to_root
|
|
302
|
+
'../' * @folder_depth
|
|
303
|
+
end
|
|
304
|
+
|
|
305
|
+
def from_file(path)
|
|
306
|
+
path = File.expand_path(path)
|
|
307
|
+
raise "Template file must exist" unless File.exists?( path )
|
|
308
|
+
new(path)
|
|
309
|
+
end
|
|
310
|
+
|
|
311
|
+
def from_text(text)
|
|
312
|
+
new(nil, text)
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
# Custom Tag support
|
|
316
|
+
def register_tag(name, &block)
|
|
317
|
+
@custom_tags ||= {}
|
|
318
|
+
@custom_tags[name.to_sym] = block
|
|
319
|
+
end
|
|
320
|
+
|
|
321
|
+
def tag_registered?(name)
|
|
322
|
+
@custom_tags.has_key? name.to_sym
|
|
323
|
+
end
|
|
324
|
+
|
|
325
|
+
def execute_tag(name, template, *args)
|
|
326
|
+
@current_template = template
|
|
327
|
+
@custom_tags[name.to_sym].call( *args )
|
|
328
|
+
end
|
|
329
|
+
|
|
330
|
+
end
|
|
331
|
+
|
|
332
|
+
end
|
|
333
|
+
|
|
334
|
+
end
|