ramaze 0.3.9.1 → 2023.01.06
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.
- checksums.yaml +7 -0
- data/Gemfile +3 -0
- data/README.md +125 -0
- data/Rakefile +13 -186
- data/bin/ramaze +4 -149
- data/examples/app/auth/layout/auth.xhtml +25 -0
- data/examples/app/auth/start.rb +25 -0
- data/examples/app/auth/view/index.xhtml +4 -0
- data/examples/app/auth/view/login.xhtml +20 -0
- data/examples/app/auth/view/secret.xhtml +1 -0
- data/examples/app/blog/app.rb +23 -0
- data/examples/app/blog/config.ru +19 -0
- data/examples/app/blog/controller/init.rb +30 -0
- data/examples/app/blog/controller/posts.rb +223 -0
- data/examples/app/blog/controller/users.rb +152 -0
- data/examples/app/blog/layout/default.xhtml +61 -0
- data/examples/app/blog/migrations/01_create_schema.rb +50 -0
- data/examples/app/blog/model/comment.rb +42 -0
- data/examples/app/blog/model/init.rb +44 -0
- data/examples/app/blog/model/post.rb +33 -0
- data/examples/app/blog/model/user.rb +100 -0
- data/examples/app/blog/public/css/grid.css +107 -0
- data/examples/app/blog/public/css/layout.css +203 -0
- data/examples/app/blog/public/css/reset.css +123 -0
- data/examples/app/blog/public/css/text.css +109 -0
- data/examples/app/blog/public/dispatch.fcgi +11 -0
- data/examples/app/blog/public/favicon.ico +0 -0
- data/examples/app/blog/public/images/bg.png +0 -0
- data/examples/app/blog/start.rb +20 -0
- data/examples/app/blog/view/feed.xhtml +23 -0
- data/examples/app/blog/view/form.xhtml +11 -0
- data/examples/app/blog/view/index.xhtml +44 -0
- data/examples/app/blog/view/users/form.xhtml +12 -0
- data/examples/app/blog/view/users/index.xhtml +30 -0
- data/examples/app/blog/view/users/login.xhtml +8 -0
- data/examples/app/blog/view/view.xhtml +68 -0
- data/examples/app/chat/layout/default.xhtml +13 -0
- data/examples/app/chat/model/history.rb +38 -0
- data/examples/app/chat/model/message.rb +7 -0
- data/examples/app/chat/public/css/chat.css +9 -0
- data/examples/app/chat/public/js/chat.js +28 -0
- data/{lib/proto → examples/app/chat}/public/js/jquery.js +75 -15
- data/examples/app/chat/start.rb +39 -0
- data/examples/app/chat/view/chat.xhtml +9 -0
- data/examples/app/chat/view/index.xhtml +7 -0
- data/examples/app/localization/locale/de.yaml +5 -0
- data/examples/app/localization/locale/en.yaml +5 -0
- data/examples/app/localization/locale/ja.yaml +5 -0
- data/examples/app/localization/start.rb +48 -0
- data/examples/app/todolist/controller/init.rb +11 -0
- data/examples/app/todolist/controller/task.rb +39 -0
- data/examples/app/todolist/layout/default.xhtml +14 -0
- data/examples/app/todolist/model/init.rb +14 -0
- data/examples/app/todolist/model/task.rb +39 -0
- data/examples/app/todolist/public/css/screen.css +63 -0
- data/examples/app/todolist/start.rb +7 -0
- data/examples/app/todolist/view/index.xhtml +29 -0
- data/examples/{upload → app/upload}/start.rb +7 -3
- data/examples/app/whywiki/spec/whywiki.rb +56 -0
- data/examples/{whywiki → app/whywiki}/start.rb +10 -9
- data/examples/{whywiki/template → app/whywiki/view}/edit.xhtml +2 -2
- data/examples/app/whywiki/view/show.xhtml +20 -0
- data/examples/{wikore → app/wikore}/spec/wikore.rb +7 -9
- data/examples/{wikore → app/wikore}/src/controller.rb +9 -11
- data/examples/{wikore → app/wikore}/src/model.rb +11 -13
- data/examples/app/wikore/start.rb +9 -0
- data/examples/{wiktacular/template/html_layout.xhtml → app/wiktacular/layout/application.xhtml} +1 -1
- data/examples/{wiktacular → app/wiktacular}/mkd/main/2007-07-20_19-21-12.mkd +1 -1
- data/examples/app/wiktacular/mkd/main/2007-07-20_19-23-10.mkd +2 -0
- data/examples/app/wiktacular/mkd/main/2007-07-20_19-45-07.mkd +2 -0
- data/examples/app/wiktacular/mkd/main/current.mkd +2 -0
- data/examples/{wiktacular → app/wiktacular}/mkd/markdown/current.mkd +2 -2
- data/examples/app/wiktacular/mkd/testing/2007-07-20_16-43-46.mkd +2 -0
- data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-20_19-43-50.mkd +2 -2
- data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-46-01.mkd +11 -11
- data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-46-32.mkd +12 -12
- data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-47-08.mkd +16 -16
- data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-47-54.mkd +16 -16
- data/examples/{wiktacular → app/wiktacular}/mkd/testing/current.mkd +16 -16
- data/examples/{wiktacular → app/wiktacular}/spec/wiktacular.rb +39 -40
- data/examples/{wiktacular → app/wiktacular}/src/controller.rb +18 -18
- data/examples/{wiktacular → app/wiktacular}/src/model.rb +30 -14
- data/examples/{wiktacular → app/wiktacular}/start.rb +1 -1
- data/examples/{wiktacular/template → app/wiktacular/view}/edit.xhtml +2 -2
- data/examples/{wiktacular/template → app/wiktacular/view}/new.xhtml +1 -1
- data/examples/{element.rb → basic/element.rb} +5 -3
- data/examples/basic/gestalt.rb +26 -0
- data/examples/basic/hello.rb +14 -0
- data/examples/{layout.rb → basic/layout.rb} +2 -2
- data/examples/basic/linking.rb +29 -0
- data/examples/basic/partial.rb +26 -0
- data/examples/{simple.rb → basic/simple.rb} +9 -12
- data/examples/{caching.rb → helpers/cache.rb} +9 -7
- data/examples/helpers/paginate.rb +71 -0
- data/examples/helpers/rest.rb +28 -0
- data/examples/helpers/simple_captcha.rb +29 -0
- data/examples/{css.rb → misc/css.rb} +6 -12
- data/examples/misc/memleak_detector.rb +37 -0
- data/examples/misc/nagoro_element.rb +43 -0
- data/examples/{ramaise.rb → misc/ramaise.rb} +2 -2
- data/examples/misc/rapp.rb +56 -0
- data/examples/misc/sequel_scaffolding.rb +45 -0
- data/examples/misc/serve_directory.rb +6 -0
- data/examples/templates/template_erubis.rb +9 -10
- data/examples/templates/template_ezamar.rb +8 -7
- data/examples/templates/template_haml.rb +7 -8
- data/examples/templates/template_liquid.rb +20 -19
- data/examples/templates/template_markaby.rb +6 -7
- data/examples/templates/template_mustache.rb +70 -0
- data/examples/templates/template_nagoro.rb +6 -7
- data/examples/templates/template_redcloth.rb +8 -9
- data/examples/templates/template_remarkably.rb +8 -9
- data/examples/templates/template_tenjin.rb +10 -15
- data/examples/templates/{template → view}/external.haml +4 -4
- data/examples/templates/{template → view}/external.mab +4 -4
- data/examples/templates/view/external.mt +29 -0
- data/examples/templates/{template → view}/external.nag +4 -4
- data/examples/templates/{template → view}/external.redcloth +4 -4
- data/examples/templates/{template → view}/external.rem +4 -4
- data/examples/templates/{template → view}/external.rhtml +6 -6
- data/examples/templates/{template → view}/external.tenjin +4 -4
- data/examples/templates/{template → view}/external.zmr +6 -6
- data/guide/AUTHORS +80 -0
- data/guide/CHANGELOG +20210 -0
- data/guide/LICENSE +19 -0
- data/guide/_static/logo.png +0 -0
- data/guide/_static/logo.svg +49 -0
- data/guide/css/common.css +20 -0
- data/guide/general/cache.md +168 -0
- data/guide/general/configuration.md +169 -0
- data/guide/general/contributing.md +182 -0
- data/guide/general/controllers.md +210 -0
- data/guide/general/helpers.md +89 -0
- data/guide/general/installation.md +59 -0
- data/guide/general/logging.md +96 -0
- data/guide/general/middlewares.md +111 -0
- data/guide/general/models.md +79 -0
- data/{doc/readme_chunks/principles.txt → guide/general/principles.md} +15 -17
- data/guide/general/ramaze_command.md +110 -0
- data/guide/general/routes.md +82 -0
- data/guide/general/sessions.md +210 -0
- data/guide/general/special_thanks.md +69 -0
- data/guide/general/testing.md +228 -0
- data/guide/general/upgrading.md +85 -0
- data/guide/general/views.md +335 -0
- data/lib/proto/Gemfile +4 -0
- data/lib/proto/README.md +35 -0
- data/lib/proto/Rakefile +1 -0
- data/lib/proto/app.rb +9 -0
- data/lib/proto/config.ru +19 -0
- data/lib/proto/controller/init.rb +18 -0
- data/lib/proto/controller/main.rb +13 -10
- data/lib/proto/layout/default.xhtml +57 -0
- data/lib/proto/public/css/grid.css +107 -0
- data/lib/proto/public/css/layout.css +81 -0
- data/lib/proto/public/css/reset.css +123 -0
- data/lib/proto/public/css/text.css +109 -0
- data/lib/proto/public/favicon.ico +0 -0
- data/lib/proto/public/images/bg.png +0 -0
- data/lib/proto/spec/helper.rb +39 -0
- data/lib/proto/task/ramaze.rake +57 -0
- data/lib/proto/view/index.xhtml +36 -25
- data/lib/ramaze/app.rb +198 -0
- data/lib/ramaze/bin/create.rb +92 -0
- data/lib/ramaze/bin/runner.rb +127 -0
- data/lib/ramaze/cache/lru.rb +88 -0
- data/lib/ramaze/cache/memcache.rb +219 -0
- data/lib/ramaze/cache/moneta.rb +143 -0
- data/lib/ramaze/cache/redis.rb +163 -0
- data/lib/ramaze/cache/sequel.rb +373 -0
- data/lib/ramaze/cache.rb +42 -82
- data/lib/ramaze/controller/default.rb +25 -0
- data/lib/ramaze/controller.rb +184 -224
- data/lib/ramaze/current.rb +17 -68
- data/lib/ramaze/default_middleware.rb +24 -0
- data/lib/ramaze/files.rb +59 -0
- data/lib/ramaze/gestalt.rb +95 -63
- data/lib/ramaze/helper/auth.rb +107 -107
- data/lib/ramaze/helper/bench.rb +51 -0
- data/lib/ramaze/helper/blue_form.rb +683 -0
- data/lib/ramaze/helper/cache.rb +108 -130
- data/lib/ramaze/helper/csrf.rb +191 -0
- data/lib/ramaze/helper/email.rb +116 -0
- data/lib/ramaze/helper/erector.rb +113 -0
- data/lib/ramaze/helper/flash.rb +42 -39
- data/lib/ramaze/helper/formatting.rb +200 -35
- data/lib/ramaze/helper/gestalt.rb +49 -0
- data/lib/ramaze/helper/gravatar.rb +75 -0
- data/lib/ramaze/helper/identity.rb +93 -68
- data/lib/ramaze/helper/layout.rb +128 -0
- data/lib/ramaze/helper/link.rb +52 -119
- data/lib/ramaze/helper/localize.rb +143 -0
- data/lib/ramaze/helper/markaby.rb +26 -24
- data/lib/ramaze/helper/maruku.rb +15 -6
- data/lib/ramaze/helper/paginate.rb +315 -0
- data/lib/ramaze/helper/remarkably.rb +14 -0
- data/lib/ramaze/helper/request_accessor.rb +20 -0
- data/lib/ramaze/helper/send_file.rb +34 -0
- data/lib/ramaze/helper/simple_captcha.rb +61 -0
- data/lib/ramaze/helper/stack.rb +72 -62
- data/lib/ramaze/helper/tagz.rb +13 -12
- data/lib/ramaze/helper/thread.rb +25 -0
- data/lib/ramaze/helper/upload.rb +525 -0
- data/lib/ramaze/helper/user.rb +260 -39
- data/lib/ramaze/helper/xhtml.rb +122 -0
- data/lib/ramaze/helper.rb +8 -79
- data/lib/ramaze/log/hub.rb +41 -32
- data/lib/ramaze/log/informer.rb +128 -104
- data/lib/ramaze/log/logger.rb +25 -15
- data/lib/ramaze/log/logging.rb +46 -27
- data/lib/ramaze/log/rotatinginformer.rb +237 -0
- data/lib/ramaze/log/syslog.rb +57 -31
- data/lib/ramaze/log.rb +16 -15
- data/lib/ramaze/reloader/watch_inotify.rb +84 -0
- data/lib/ramaze/reloader/watch_stat.rb +58 -0
- data/lib/ramaze/reloader.rb +212 -0
- data/lib/ramaze/request.rb +126 -0
- data/lib/ramaze/response.rb +67 -0
- data/lib/ramaze/snippets/object/__dir__.rb +25 -0
- data/lib/ramaze/snippets/ramaze/deprecated.rb +23 -0
- data/lib/ramaze/snippets/string/camel_case.rb +17 -14
- data/lib/ramaze/snippets/string/color.rb +27 -24
- data/lib/ramaze/snippets/string/esc.rb +25 -25
- data/lib/ramaze/snippets/string/snake_case.rb +16 -13
- data/lib/ramaze/snippets/string/unindent.rb +24 -11
- data/lib/ramaze/snippets.rb +21 -6
- data/lib/ramaze/spec/bacon.rb +44 -0
- data/lib/ramaze/spec/helper/bacon.rb +4 -4
- data/lib/ramaze/spec/helper/pretty_output.rb +9 -1
- data/lib/ramaze/spec/helper/snippets.rb +11 -1
- data/lib/ramaze/spec/helper/template_examples.rb +22 -0
- data/lib/ramaze/version.rb +4 -13
- data/lib/ramaze/view/erector.rb +116 -0
- data/lib/ramaze/view/erubis.rb +26 -0
- data/lib/ramaze/view/ezamar.rb +27 -0
- data/lib/ramaze/view/gestalt.rb +20 -0
- data/lib/ramaze/view/haml.rb +27 -0
- data/lib/ramaze/view/liquid.rb +99 -0
- data/lib/ramaze/view/lokar.rb +18 -0
- data/lib/ramaze/view/mustache.rb +46 -0
- data/lib/ramaze/view/nagoro/render_partial.rb +32 -0
- data/lib/ramaze/view/nagoro.rb +44 -0
- data/lib/ramaze/view/remarkably.rb +22 -0
- data/lib/ramaze/view/sass.rb +22 -0
- data/lib/ramaze/view/slim.rb +43 -0
- data/lib/ramaze/view/slippers.rb +51 -0
- data/lib/ramaze/view/tagz.rb +67 -0
- data/lib/ramaze/view/tenjin.rb +32 -0
- data/lib/ramaze/view.rb +35 -0
- data/lib/ramaze.rb +60 -100
- data/lib/vendor/route_exceptions.rb +42 -0
- data/ramaze.gemspec +61 -0
- data/spec/examples/caching.rb +5 -8
- data/spec/examples/css.rb +3 -4
- data/spec/examples/element.rb +4 -4
- data/spec/examples/hello.rb +4 -5
- data/spec/examples/linking.rb +3 -4
- data/spec/examples/misc/sequel_scaffolding.rb +18 -0
- data/spec/examples/simple.rb +3 -8
- data/spec/examples/templates/template_erubis.rb +8 -18
- data/spec/examples/templates/template_ezamar.rb +9 -19
- data/spec/examples/templates/template_haml.rb +8 -20
- data/spec/examples/templates/template_liquid.rb +8 -24
- data/spec/examples/templates/template_markaby.rb +10 -19
- data/spec/examples/templates/template_mustache.rb +13 -0
- data/spec/examples/templates/template_nagoro.rb +13 -0
- data/spec/examples/templates/template_remarkably.rb +8 -18
- data/spec/examples/templates/template_tenjin.rb +8 -23
- data/spec/examples/todolist.rb +33 -0
- data/spec/helper.rb +14 -3
- data/spec/ramaze/action/render.rb +9 -17
- data/spec/ramaze/action/view/other_wrapper.erb +1 -0
- data/spec/ramaze/action/view/sub/sub_wrapper.xhtml +1 -0
- data/spec/ramaze/app/location.rb +43 -0
- data/spec/ramaze/app.rb +50 -0
- data/spec/ramaze/bin/app/config.ru +11 -0
- data/spec/ramaze/bin/create.rb +28 -0
- data/spec/ramaze/bin/runner.rb +30 -0
- data/spec/ramaze/cache/lru.rb +48 -0
- data/spec/ramaze/cache/memcache.rb +69 -0
- data/spec/ramaze/cache/moneta.rb +53 -0
- data/spec/ramaze/cache/redis.rb +58 -0
- data/spec/ramaze/cache/sequel.rb +60 -0
- data/spec/ramaze/controller/actionless_templates.rb +16 -12
- data/spec/ramaze/controller/lonely_mapping.rb +18 -0
- data/spec/ramaze/controller/mapping.rb +63 -0
- data/spec/ramaze/controller/provide_inheritance.rb +40 -0
- data/spec/ramaze/controller/resolve.rb +9 -11
- data/spec/ramaze/controller/subclass.rb +22 -7
- data/spec/ramaze/controller/template_resolving.rb +23 -61
- data/spec/ramaze/controller/view/bar.xhtml +1 -0
- data/spec/ramaze/controller/view/base/another.xhtml +1 -0
- data/spec/ramaze/dispatcher/directory.rb +61 -33
- data/spec/ramaze/dispatcher/file.rb +65 -47
- data/spec/ramaze/error.rb +54 -64
- data/spec/ramaze/files/public_1/plain.txt +1 -0
- data/spec/ramaze/files/public_2/rich.txt +1 -0
- data/spec/ramaze/files.rb +30 -0
- data/spec/ramaze/gestalt.rb +28 -21
- data/spec/ramaze/helper/auth.rb +47 -29
- data/spec/ramaze/helper/bench.rb +21 -0
- data/spec/ramaze/helper/blue_form.rb +807 -0
- data/spec/ramaze/helper/cache.rb +65 -84
- data/spec/ramaze/helper/csrf.rb +64 -0
- data/spec/ramaze/helper/email.rb +69 -0
- data/spec/ramaze/helper/flash.rb +22 -101
- data/spec/ramaze/helper/formatting.rb +100 -6
- data/spec/ramaze/helper/gestalt.rb +18 -0
- data/spec/ramaze/helper/gravatar.rb +43 -0
- data/spec/ramaze/helper/layout/alternative.xhtml +5 -0
- data/spec/ramaze/helper/layout/default.xhtml +5 -0
- data/spec/ramaze/helper/layout.rb +109 -0
- data/spec/ramaze/helper/link.rb +48 -102
- data/spec/ramaze/helper/localize.rb +65 -0
- data/spec/ramaze/helper/maruku.rb +22 -0
- data/spec/ramaze/helper/paginate.rb +304 -0
- data/spec/ramaze/helper/request_accessor.rb +22 -0
- data/spec/ramaze/helper/simple_captcha.rb +45 -0
- data/spec/ramaze/helper/stack.rb +54 -41
- data/spec/ramaze/helper/upload.rb +150 -0
- data/spec/ramaze/helper/uploads/text_1.txt +1 -0
- data/spec/ramaze/helper/uploads/text_2.txt +1 -0
- data/spec/ramaze/helper/user.rb +63 -20
- data/spec/ramaze/helper/xhtml.rb +54 -0
- data/spec/ramaze/log/informer.rb +30 -28
- data/spec/ramaze/log/logging.rb +66 -0
- data/spec/ramaze/log/syslog.rb +89 -4
- data/spec/ramaze/params.rb +12 -16
- data/spec/ramaze/request.rb +51 -160
- data/spec/ramaze/rewrite/file.css +1 -0
- data/spec/ramaze/session/lru.rb +58 -0
- data/spec/ramaze/session/memcache.rb +66 -0
- data/spec/ramaze/session/redis.rb +63 -0
- data/spec/ramaze/session/sequel.rb +62 -0
- data/spec/ramaze/view/erector/external_view.erector +5 -0
- data/spec/ramaze/view/erector/index.erector +5 -0
- data/spec/ramaze/view/erector/layout.erector +13 -0
- data/spec/ramaze/view/erector/tables.erector +23 -0
- data/spec/ramaze/view/erector/view.erector +6 -0
- data/spec/ramaze/view/erector.rb +68 -0
- data/spec/ramaze/view/erubis/external.rhtml +8 -0
- data/spec/ramaze/view/erubis/sum.rhtml +1 -0
- data/spec/ramaze/view/erubis.rb +73 -0
- data/spec/ramaze/view/ezamar/external.zmr +8 -0
- data/spec/ramaze/view/ezamar/sum.zmr +1 -0
- data/spec/ramaze/view/ezamar.rb +73 -0
- data/spec/ramaze/view/gestalt/external.ges +8 -0
- data/spec/ramaze/view/gestalt.rb +94 -0
- data/spec/ramaze/view/haml/external.haml +5 -0
- data/spec/ramaze/view/haml/sum.haml +2 -0
- data/spec/ramaze/view/haml.rb +114 -0
- data/spec/ramaze/view/liquid/external.liquid +8 -0
- data/spec/ramaze/view/liquid/sum.liquid +1 -0
- data/spec/ramaze/view/liquid.rb +73 -0
- data/spec/ramaze/view/lokar/external.lok +8 -0
- data/spec/ramaze/view/lokar/sum.lok +1 -0
- data/spec/ramaze/view/lokar.rb +78 -0
- data/spec/ramaze/view/mustache/external.mt +8 -0
- data/spec/ramaze/view/mustache/sum.mt +1 -0
- data/spec/ramaze/view/mustache.rb +77 -0
- data/spec/ramaze/view/nagoro/external.nag +8 -0
- data/spec/ramaze/view/nagoro/sum.nag +1 -0
- data/spec/ramaze/view/nagoro.rb +78 -0
- data/spec/ramaze/view/remarkably.rb +49 -0
- data/spec/ramaze/view/sass.rb +73 -0
- data/spec/ramaze/view/slim/external.slim +5 -0
- data/spec/ramaze/view/slim/external_vars.slim +5 -0
- data/spec/ramaze/view/slim.rb +49 -0
- data/spec/ramaze/view/slippers/external.st +8 -0
- data/spec/ramaze/view/slippers/sum.st +1 -0
- data/spec/ramaze/view/slippers.rb +49 -0
- data/spec/ramaze/{template → view}/tagz.rb +20 -31
- data/spec/ramaze/view/tenjin/external.rbhtml +8 -0
- data/spec/ramaze/view/tenjin/sum.rbhtml +1 -0
- data/spec/ramaze/view/tenjin.rb +57 -0
- data/spec/ramaze/view.rb +36 -0
- data/spec/snippets/object/__dir__.rb +17 -0
- data/spec/snippets/ramaze/lru_hash.rb +88 -0
- data/spec/snippets/string/camel_case.rb +4 -1
- data/spec/snippets/string/color.rb +4 -1
- data/spec/snippets/string/snake_case.rb +4 -1
- data/spec/snippets/string/unindent.rb +10 -1
- data/tasks/authors.rake +17 -0
- data/tasks/bacon.rake +81 -0
- data/tasks/changelog.rake +20 -0
- data/tasks/gems.rake +15 -0
- data/tasks/release.rake +38 -0
- data/tasks/todo.rake +31 -0
- data/tasks/yard.rake +13 -0
- metadata +813 -714
- data/doc/AUTHORS +0 -25
- data/doc/CHANGELOG +0 -5757
- data/doc/COPYING +0 -56
- data/doc/FAQ +0 -92
- data/doc/GPL +0 -339
- data/doc/INSTALL +0 -34
- data/doc/LEGAL +0 -26
- data/doc/ProjectInfo +0 -53
- data/doc/README +0 -435
- data/doc/TODO +0 -29
- data/doc/meta/announcement.txt +0 -126
- data/doc/meta/configuration.txt +0 -162
- data/doc/meta/internals.txt +0 -278
- data/doc/meta/users.kml +0 -64
- data/doc/migrate/1110_to_1111.txt +0 -131
- data/doc/readme_chunks/appendix.txt +0 -10
- data/doc/readme_chunks/examples.txt +0 -38
- data/doc/readme_chunks/features.txt +0 -148
- data/doc/readme_chunks/getting_help.txt +0 -5
- data/doc/readme_chunks/getting_started.txt +0 -18
- data/doc/readme_chunks/installing.txt +0 -46
- data/doc/readme_chunks/introduction.txt +0 -18
- data/doc/readme_chunks/thanks.txt +0 -59
- data/doc/tutorial/todolist.html +0 -816
- data/doc/tutorial/todolist.mkd +0 -736
- data/examples/auth/auth.rb +0 -54
- data/examples/auth/template/layout.haml +0 -20
- data/examples/auth/template/login.haml +0 -16
- data/examples/blog/README +0 -3
- data/examples/blog/controller/main.rb +0 -29
- data/examples/blog/model/entry.rb +0 -30
- data/examples/blog/public/styles/blog.css +0 -132
- data/examples/blog/spec/blog.rb +0 -87
- data/examples/blog/start.rb +0 -7
- data/examples/blog/view/edit.xhtml +0 -17
- data/examples/blog/view/index.xhtml +0 -17
- data/examples/blog/view/layout.xhtml +0 -11
- data/examples/blog/view/new.xhtml +0 -16
- data/examples/hello.rb +0 -15
- data/examples/linking.rb +0 -29
- data/examples/memleak_detector.rb +0 -32
- data/examples/nitro_form.rb +0 -23
- data/examples/rammit/spec/rammit.rb +0 -30
- data/examples/rammit/src/controller/main.rb +0 -3
- data/examples/rammit/src/controller/page.rb +0 -16
- data/examples/rammit/src/model.rb +0 -33
- data/examples/rammit/start.rb +0 -8
- data/examples/rammit/template/index.xhtml +0 -14
- data/examples/rammit/template/page/view.xhtml +0 -4
- data/examples/rapaste/Rakefile +0 -35
- data/examples/rapaste/controller/paste.rb +0 -94
- data/examples/rapaste/model/paste.rb +0 -55
- data/examples/rapaste/public/css/active4d.css +0 -114
- data/examples/rapaste/public/css/all_hallows_eve.css +0 -72
- data/examples/rapaste/public/css/amy.css +0 -147
- data/examples/rapaste/public/css/blackboard.css +0 -88
- data/examples/rapaste/public/css/brilliance_black.css +0 -605
- data/examples/rapaste/public/css/brilliance_dull.css +0 -599
- data/examples/rapaste/public/css/cobalt.css +0 -149
- data/examples/rapaste/public/css/dawn.css +0 -121
- data/examples/rapaste/public/css/display.css +0 -197
- data/examples/rapaste/public/css/eiffel.css +0 -121
- data/examples/rapaste/public/css/espresso_libre.css +0 -109
- data/examples/rapaste/public/css/idle.css +0 -62
- data/examples/rapaste/public/css/iplastic.css +0 -80
- data/examples/rapaste/public/css/lazy.css +0 -73
- data/examples/rapaste/public/css/mac_classic.css +0 -123
- data/examples/rapaste/public/css/magicwb_amiga.css +0 -104
- data/examples/rapaste/public/css/pastels_on_dark.css +0 -188
- data/examples/rapaste/public/css/slush_poppies.css +0 -85
- data/examples/rapaste/public/css/spacecadet.css +0 -51
- data/examples/rapaste/public/css/sunburst.css +0 -180
- data/examples/rapaste/public/css/twilight.css +0 -137
- data/examples/rapaste/public/css/zenburnesque.css +0 -91
- data/examples/rapaste/public/js/jquery.js +0 -11
- data/examples/rapaste/spec/rapaste.rb +0 -49
- data/examples/rapaste/start.rb +0 -24
- data/examples/rapaste/view/copy.xhtml +0 -10
- data/examples/rapaste/view/index.xhtml +0 -9
- data/examples/rapaste/view/layout.xhtml +0 -25
- data/examples/rapaste/view/list.xhtml +0 -29
- data/examples/rapaste/view/search.xhtml +0 -41
- data/examples/rapaste/view/view.xhtml +0 -37
- data/examples/simple_auth.rb +0 -23
- data/examples/sourceview/public/coderay.css +0 -104
- data/examples/sourceview/public/images/file.gif +0 -0
- data/examples/sourceview/public/images/folder.gif +0 -0
- data/examples/sourceview/public/images/tv-collapsable-last.gif +0 -0
- data/examples/sourceview/public/images/tv-collapsable.gif +0 -0
- data/examples/sourceview/public/images/tv-expandable-last.gif +0 -0
- data/examples/sourceview/public/images/tv-expandable.gif +0 -0
- data/examples/sourceview/public/images/tv-item-last.gif +0 -0
- data/examples/sourceview/public/images/tv-item.gif +0 -0
- data/examples/sourceview/public/jquery.js +0 -11
- data/examples/sourceview/public/jquery.treeview.css +0 -48
- data/examples/sourceview/public/jquery.treeview.js +0 -223
- data/examples/sourceview/public/sourceview.js +0 -52
- data/examples/sourceview/sourceview.rb +0 -77
- data/examples/sourceview/template/index.haml +0 -59
- data/examples/templates/template/external.amrita +0 -19
- data/examples/templates/template/external.xsl +0 -57
- data/examples/templates/template_amrita2.rb +0 -74
- data/examples/templates/template_xslt.rb +0 -49
- data/examples/todolist/README +0 -1
- data/examples/todolist/public/js/jquery.js +0 -1923
- data/examples/todolist/public/ramaze.png +0 -0
- data/examples/todolist/spec/todolist.rb +0 -132
- data/examples/todolist/src/controller/main.rb +0 -70
- data/examples/todolist/src/element/page.rb +0 -31
- data/examples/todolist/src/model.rb +0 -14
- data/examples/todolist/start.rb +0 -11
- data/examples/todolist/template/index.xhtml +0 -17
- data/examples/todolist/template/new.xhtml +0 -7
- data/examples/whywiki/spec/whywiki.rb +0 -58
- data/examples/whywiki/template/show.xhtml +0 -18
- data/examples/wikore/start.rb +0 -9
- data/examples/wiktacular/mkd/main/2007-07-20_19-23-10.mkd +0 -2
- data/examples/wiktacular/mkd/main/2007-07-20_19-45-07.mkd +0 -2
- data/examples/wiktacular/mkd/main/current.mkd +0 -2
- data/examples/wiktacular/mkd/testing/2007-07-20_16-43-46.mkd +0 -2
- data/lib/proto/public/css/ramaze_error.css +0 -90
- data/lib/proto/public/dispatch.fcgi +0 -11
- data/lib/proto/public/ramaze.png +0 -0
- data/lib/proto/spec/main.rb +0 -24
- data/lib/proto/start.rb +0 -8
- data/lib/proto/start.ru +0 -8
- data/lib/proto/view/error.xhtml +0 -64
- data/lib/proto/view/page.xhtml +0 -15
- data/lib/ramaze/action/render.rb +0 -163
- data/lib/ramaze/action.rb +0 -136
- data/lib/ramaze/adapter/base.rb +0 -59
- data/lib/ramaze/adapter/cgi.rb +0 -24
- data/lib/ramaze/adapter/ebb.rb +0 -32
- data/lib/ramaze/adapter/evented_mongrel.rb +0 -7
- data/lib/ramaze/adapter/fcgi.rb +0 -24
- data/lib/ramaze/adapter/lsws.rb +0 -23
- data/lib/ramaze/adapter/mongrel.rb +0 -25
- data/lib/ramaze/adapter/scgi.rb +0 -22
- data/lib/ramaze/adapter/swiftiplied_mongrel.rb +0 -7
- data/lib/ramaze/adapter/thin.rb +0 -22
- data/lib/ramaze/adapter/webrick.rb +0 -52
- data/lib/ramaze/adapter.rb +0 -101
- data/lib/ramaze/cache/memcached.rb +0 -70
- data/lib/ramaze/cache/memory.rb +0 -6
- data/lib/ramaze/cache/yaml_store.rb +0 -68
- data/lib/ramaze/contrib/auto_params/get_args.rb +0 -57
- data/lib/ramaze/contrib/auto_params.rb +0 -135
- data/lib/ramaze/contrib/email.rb +0 -84
- data/lib/ramaze/contrib/facebook/facebook.rb +0 -171
- data/lib/ramaze/contrib/facebook.rb +0 -23
- data/lib/ramaze/contrib/file_cache.rb +0 -65
- data/lib/ramaze/contrib/gettext/mo.rb +0 -155
- data/lib/ramaze/contrib/gettext/parser.rb +0 -46
- data/lib/ramaze/contrib/gettext/po.rb +0 -109
- data/lib/ramaze/contrib/gettext.rb +0 -113
- data/lib/ramaze/contrib/gzip_filter.rb +0 -56
- data/lib/ramaze/contrib/profiling.rb +0 -36
- data/lib/ramaze/contrib/route.rb +0 -22
- data/lib/ramaze/contrib/sequel/fill.rb +0 -12
- data/lib/ramaze/contrib/sequel_cache.rb +0 -92
- data/lib/ramaze/contrib.rb +0 -82
- data/lib/ramaze/controller/error.rb +0 -46
- data/lib/ramaze/controller/main.rb +0 -2
- data/lib/ramaze/controller/resolve.rb +0 -234
- data/lib/ramaze/current/request.rb +0 -181
- data/lib/ramaze/current/response.rb +0 -19
- data/lib/ramaze/current/session/flash.rb +0 -67
- data/lib/ramaze/current/session/hash.rb +0 -65
- data/lib/ramaze/current/session.rb +0 -153
- data/lib/ramaze/dispatcher/action.rb +0 -40
- data/lib/ramaze/dispatcher/directory.rb +0 -116
- data/lib/ramaze/dispatcher/error.rb +0 -108
- data/lib/ramaze/dispatcher/file.rb +0 -87
- data/lib/ramaze/dispatcher.rb +0 -124
- data/lib/ramaze/error.rb +0 -24
- data/lib/ramaze/global/dsl.rb +0 -39
- data/lib/ramaze/global/globalstruct.rb +0 -147
- data/lib/ramaze/global.rb +0 -116
- data/lib/ramaze/helper/aspect.rb +0 -100
- data/lib/ramaze/helper/cgi.rb +0 -43
- data/lib/ramaze/helper/inform.rb +0 -40
- data/lib/ramaze/helper/nitroform.rb +0 -14
- data/lib/ramaze/helper/pager.rb +0 -366
- data/lib/ramaze/helper/partial.rb +0 -96
- data/lib/ramaze/helper/redirect.rb +0 -73
- data/lib/ramaze/helper/sendfile.rb +0 -18
- data/lib/ramaze/helper/sequel.rb +0 -52
- data/lib/ramaze/inform.rb +0 -4
- data/lib/ramaze/log/analogger.rb +0 -37
- data/lib/ramaze/log/growl.rb +0 -35
- data/lib/ramaze/log/knotify.rb +0 -25
- data/lib/ramaze/log/xosd.rb +0 -88
- data/lib/ramaze/route.rb +0 -84
- data/lib/ramaze/snippets/array/put_within.rb +0 -37
- data/lib/ramaze/snippets/binding/locals.rb +0 -13
- data/lib/ramaze/snippets/dictionary.rb +0 -504
- data/lib/ramaze/snippets/divide.rb +0 -20
- data/lib/ramaze/snippets/kernel/__dir__.rb +0 -23
- data/lib/ramaze/snippets/kernel/acquire.rb +0 -39
- data/lib/ramaze/snippets/kernel/aquire.rb +0 -1
- data/lib/ramaze/snippets/kernel/constant.rb +0 -26
- data/lib/ramaze/snippets/kernel/pretty_inspect.rb +0 -15
- data/lib/ramaze/snippets/metaid.rb +0 -17
- data/lib/ramaze/snippets/numeric/filesize_format.rb +0 -19
- data/lib/ramaze/snippets/object/pretty.rb +0 -6
- data/lib/ramaze/snippets/object/scope.rb +0 -11
- data/lib/ramaze/snippets/object/thread_accessor.rb +0 -5
- data/lib/ramaze/snippets/object/traits.rb +0 -76
- data/lib/ramaze/snippets/ordered_set.rb +0 -36
- data/lib/ramaze/snippets/proc/locals.rb +0 -11
- data/lib/ramaze/snippets/ramaze/caller_info.rb +0 -30
- data/lib/ramaze/snippets/ramaze/caller_lines.rb +0 -51
- data/lib/ramaze/snippets/ramaze/thread_accessor.rb +0 -44
- data/lib/ramaze/snippets/string/each.rb +0 -8
- data/lib/ramaze/snippets/string/ord.rb +0 -15
- data/lib/ramaze/snippets/string/start_with.rb +0 -7
- data/lib/ramaze/snippets/struct/fill.rb +0 -23
- data/lib/ramaze/snippets/struct/values_at.rb +0 -23
- data/lib/ramaze/snippets/symbol/to_proc.rb +0 -24
- data/lib/ramaze/snippets/thread/into.rb +0 -18
- data/lib/ramaze/sourcereload.rb +0 -169
- data/lib/ramaze/spec/helper/browser.rb +0 -88
- data/lib/ramaze/spec/helper/mock_http.rb +0 -69
- data/lib/ramaze/spec/helper/requester.rb +0 -49
- data/lib/ramaze/spec/helper/simple_http.rb +0 -434
- data/lib/ramaze/spec/helper.rb +0 -122
- data/lib/ramaze/spec.rb +0 -1
- data/lib/ramaze/store/default.rb +0 -109
- data/lib/ramaze/template/amrita2.rb +0 -44
- data/lib/ramaze/template/builder.rb +0 -28
- data/lib/ramaze/template/erubis.rb +0 -35
- data/lib/ramaze/template/ezamar/element.rb +0 -169
- data/lib/ramaze/template/ezamar/engine.rb +0 -76
- data/lib/ramaze/template/ezamar/morpher.rb +0 -135
- data/lib/ramaze/template/ezamar/render_partial.rb +0 -31
- data/lib/ramaze/template/ezamar.rb +0 -42
- data/lib/ramaze/template/haml.rb +0 -37
- data/lib/ramaze/template/liquid.rb +0 -36
- data/lib/ramaze/template/markaby.rb +0 -52
- data/lib/ramaze/template/nagoro.rb +0 -51
- data/lib/ramaze/template/none.rb +0 -14
- data/lib/ramaze/template/redcloth.rb +0 -24
- data/lib/ramaze/template/remarkably.rb +0 -38
- data/lib/ramaze/template/sass.rb +0 -37
- data/lib/ramaze/template/tagz.rb +0 -79
- data/lib/ramaze/template/tenjin.rb +0 -34
- data/lib/ramaze/template/xslt.rb +0 -96
- data/lib/ramaze/template.rb +0 -81
- data/lib/ramaze/tool/create.rb +0 -74
- data/lib/ramaze/tool/localize.rb +0 -162
- data/lib/ramaze/tool/mime.rb +0 -25
- data/lib/ramaze/tool/mime_types.yaml +0 -615
- data/lib/ramaze/tool/record.rb +0 -6
- data/lib/ramaze/tool.rb +0 -9
- data/lib/ramaze/trinity.rb +0 -13
- data/lib/vendor/bacon.rb +0 -323
- data/rake_tasks/conf.rake +0 -73
- data/rake_tasks/coverage.rake +0 -46
- data/rake_tasks/darcs.rake +0 -5
- data/rake_tasks/gem.rake +0 -43
- data/rake_tasks/maintenance.rake +0 -384
- data/rake_tasks/spec.rake +0 -62
- data/spec/contrib/auto_params.rb +0 -121
- data/spec/contrib/profiling.rb +0 -26
- data/spec/contrib/route.rb +0 -36
- data/spec/contrib/sequel/fill.rb +0 -47
- data/spec/examples/simple_auth.rb +0 -32
- data/spec/examples/templates/template_amrita2.rb +0 -16
- data/spec/examples/templates/template_redcloth.rb +0 -28
- data/spec/ramaze/action/basics.rb +0 -36
- data/spec/ramaze/action/cache.rb +0 -43
- data/spec/ramaze/action/layout.rb +0 -190
- data/spec/ramaze/adapter/mongrel.rb +0 -12
- data/spec/ramaze/adapter/record.rb +0 -31
- data/spec/ramaze/adapter/webrick.rb +0 -12
- data/spec/ramaze/adapter.rb +0 -22
- data/spec/ramaze/cache.rb +0 -73
- data/spec/ramaze/controller.rb +0 -177
- data/spec/ramaze/current/request.rb +0 -30
- data/spec/ramaze/current/session.rb +0 -97
- data/spec/ramaze/dispatcher.rb +0 -31
- data/spec/ramaze/element.rb +0 -107
- data/spec/ramaze/helper/aspect.rb +0 -92
- data/spec/ramaze/helper/cgi.rb +0 -43
- data/spec/ramaze/helper/file.rb +0 -18
- data/spec/ramaze/helper/pager.rb +0 -99
- data/spec/ramaze/helper/partial.rb +0 -76
- data/spec/ramaze/helper/redirect.rb +0 -112
- data/spec/ramaze/localize.rb +0 -67
- data/spec/ramaze/morpher.rb +0 -111
- data/spec/ramaze/public/error404.xhtml +0 -1
- data/spec/ramaze/request/mongrel.rb +0 -9
- data/spec/ramaze/request/thin.rb +0 -9
- data/spec/ramaze/request/webrick.rb +0 -5
- data/spec/ramaze/route.rb +0 -130
- data/spec/ramaze/session.rb +0 -94
- data/spec/ramaze/store/default.rb +0 -71
- data/spec/ramaze/template/amrita2/external.amrita +0 -6
- data/spec/ramaze/template/amrita2/sum.amrita +0 -1
- data/spec/ramaze/template/amrita2.rb +0 -50
- data/spec/ramaze/template/builder/external.rxml +0 -3
- data/spec/ramaze/template/builder.rb +0 -55
- data/spec/ramaze/template/erubis/sum.rhtml +0 -1
- data/spec/ramaze/template/erubis.rb +0 -41
- data/spec/ramaze/template/ezamar/another/long/action.zmr +0 -1
- data/spec/ramaze/template/ezamar/combined.zmr +0 -1
- data/spec/ramaze/template/ezamar/file_only.zmr +0 -1
- data/spec/ramaze/template/ezamar/index.zmr +0 -1
- data/spec/ramaze/template/ezamar/nested.zmr +0 -1
- data/spec/ramaze/template/ezamar/other__index.xhtml +0 -1
- data/spec/ramaze/template/ezamar/some__long__action.zmr +0 -1
- data/spec/ramaze/template/ezamar/sum.zmr +0 -1
- data/spec/ramaze/template/ezamar.rb +0 -63
- data/spec/ramaze/template/haml/index.haml +0 -5
- data/spec/ramaze/template/haml/locals.haml +0 -2
- data/spec/ramaze/template/haml/with_vars.haml +0 -4
- data/spec/ramaze/template/haml.rb +0 -66
- data/spec/ramaze/template/liquid/index.liquid +0 -1
- data/spec/ramaze/template/liquid/products.liquid +0 -45
- data/spec/ramaze/template/liquid.rb +0 -99
- data/spec/ramaze/template/markaby/external.mab +0 -8
- data/spec/ramaze/template/markaby/sum.mab +0 -1
- data/spec/ramaze/template/markaby.rb +0 -61
- data/spec/ramaze/template/nagoro/another/long/action.nag +0 -1
- data/spec/ramaze/template/nagoro/combined.nag +0 -1
- data/spec/ramaze/template/nagoro/file_only.nag +0 -1
- data/spec/ramaze/template/nagoro/index.nag +0 -1
- data/spec/ramaze/template/nagoro/nested.nag +0 -1
- data/spec/ramaze/template/nagoro/some__long__action.nag +0 -1
- data/spec/ramaze/template/nagoro/sum.nag +0 -1
- data/spec/ramaze/template/nagoro.rb +0 -64
- data/spec/ramaze/template/redcloth/external.redcloth +0 -1
- data/spec/ramaze/template/redcloth.rb +0 -38
- data/spec/ramaze/template/remarkably.rb +0 -58
- data/spec/ramaze/template/sass.rb +0 -69
- data/spec/ramaze/template/tenjin/external.tenjin +0 -1
- data/spec/ramaze/template/tenjin.rb +0 -49
- data/spec/ramaze/template/xslt/concat_words.xsl +0 -16
- data/spec/ramaze/template/xslt/index.xsl +0 -14
- data/spec/ramaze/template/xslt/products.xsl +0 -32
- data/spec/ramaze/template/xslt/ruby_version.xsl +0 -14
- data/spec/ramaze/template/xslt.rb +0 -90
- data/spec/ramaze/template.rb +0 -128
- data/spec/snippets/array/put_within.rb +0 -33
- data/spec/snippets/divide.rb +0 -19
- data/spec/snippets/kernel/__dir__.rb +0 -8
- data/spec/snippets/kernel/acquire.rb +0 -71
- data/spec/snippets/kernel/constant.rb +0 -23
- data/spec/snippets/numeric/filesize_format.rb +0 -12
- data/spec/snippets/ordered_set.rb +0 -63
- data/spec/snippets/ramaze/caller_info.rb +0 -39
- data/spec/snippets/ramaze/caller_lines.rb +0 -30
- data/spec/snippets/struct/fill.rb +0 -26
- data/spec/snippets/struct/values_at.rb +0 -44
- data/spec/snippets/symbol/to_proc.rb +0 -13
- data/spec/snippets/thread/into.rb +0 -20
- /data/examples/{todolist → app/todolist}/public/favicon.ico +0 -0
- /data/examples/{upload → app/upload}/view/index.xhtml +0 -0
- /data/examples/{wikore/template → app/wikore/view}/index.xhtml +0 -0
- /data/examples/{wiktacular → app/wiktacular}/README +0 -0
- /data/examples/{wiktacular → app/wiktacular}/mkd/link/2007-07-20_19-45-51.mkd +0 -0
- /data/examples/{wiktacular → app/wiktacular}/mkd/link/current.mkd +0 -0
- /data/examples/{wiktacular → app/wiktacular}/mkd/main/2007-07-20_16-31-33.mkd +0 -0
- /data/examples/{wiktacular → app/wiktacular}/public/favicon.ico +0 -0
- /data/examples/{wiktacular → app/wiktacular}/public/screen.css +0 -0
- /data/examples/{wiktacular/template → app/wiktacular/view}/index.xhtml +0 -0
- /data/examples/{identity.rb → helpers/identity.rb} +0 -0
- /data/examples/{facebook.rb → misc/facebook.rb} +0 -0
- /data/examples/templates/{template → view}/external.liquid +0 -0
- /data/spec/ramaze/action/{template → view}/bar.xhtml +0 -0
- /data/spec/ramaze/action/{template → view}/instancevars/layout.xhtml +0 -0
- /data/spec/ramaze/action/{template → view}/other_wrapper.xhtml +0 -0
- /data/spec/ramaze/action/{template → view}/single_wrapper.xhtml +0 -0
- /data/spec/ramaze/action/{template/sub/sub_wrapper.xhtml → view/sub/sub_wrapper.erb} +0 -0
- /data/spec/ramaze/controller/{template → view}/greet.xhtml +0 -0
- /data/spec/ramaze/controller/{template → view}/list.xhtml +0 -0
- /data/spec/ramaze/controller/{template → view}/other/greet/other.xhtml +0 -0
- /data/spec/ramaze/controller/{template → view}/other_wrapper.xhtml +0 -0
- /data/spec/ramaze/helper/{template → view}/locals.xhtml +0 -0
- /data/spec/ramaze/helper/{template → view}/loop.xhtml +0 -0
- /data/spec/ramaze/helper/{template → view}/num.xhtml +0 -0
- /data/spec/ramaze/helper/{template → view}/partial.xhtml +0 -0
- /data/spec/ramaze/helper/{template → view}/recursive.xhtml +0 -0
- /data/spec/ramaze/helper/{template → view}/recursive_local_ivars.xhtml +0 -0
- /data/spec/ramaze/helper/{template → view}/recursive_locals.xhtml +0 -0
- /data/spec/ramaze/helper/{template → view}/test_template.xhtml +0 -0
- /data/spec/ramaze/{template → view}/remarkably/external.rem +0 -0
- /data/spec/ramaze/{template → view}/remarkably/sum.rem +0 -0
- /data/spec/ramaze/{template → view}/sass/file.css.sass +0 -0
- /data/spec/ramaze/{template → view}/tagz/external.tagz +0 -0
- /data/spec/ramaze/{template → view}/tagz/sum.tagz +0 -0
data/lib/ramaze/helper/cache.rb
CHANGED
@@ -1,143 +1,121 @@
|
|
1
|
-
# Copyright (c)
|
2
|
-
# All files in this distribution are subject to the terms of the
|
1
|
+
# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com
|
2
|
+
# All files in this distribution are subject to the terms of the MIT license.
|
3
3
|
|
4
4
|
module Ramaze
|
5
|
+
module Helper
|
6
|
+
##
|
7
|
+
# Caching of simple objects and whole action responses.
|
8
|
+
#
|
9
|
+
module Cache
|
10
|
+
# Setup needed traits, add the singleton methods and add the caches used
|
11
|
+
# by this helper.
|
12
|
+
#
|
13
|
+
# @param [Class] into Class that this Module is included into
|
14
|
+
# @author manveru
|
15
|
+
#
|
16
|
+
def self.included(into)
|
17
|
+
into.extend(SingletonMethods)
|
18
|
+
into.add_action_wrapper(6.0, :cache_wrap)
|
19
|
+
into.trait[:cache_action] ||= Set.new
|
20
|
+
Ramaze::Cache.add(:action, :cache_helper_value)
|
21
|
+
end
|
5
22
|
|
6
|
-
|
7
|
-
|
23
|
+
##
|
24
|
+
# @param [Action] action The currently wrapped action
|
25
|
+
# @yield The next block in wrap_action_call
|
26
|
+
# @return [String] the response body
|
27
|
+
# @see Innate::Node#wrap_action_call
|
28
|
+
# @author manveru
|
29
|
+
#
|
30
|
+
def cache_wrap(action)
|
31
|
+
cache = Innate::Cache.action
|
8
32
|
|
9
|
-
|
10
|
-
|
33
|
+
ancestral_trait[:cache_action].each do |cache_action|
|
34
|
+
temp = cache_action.dup
|
35
|
+
block = temp.delete(:key)
|
36
|
+
ttl = temp.delete(:ttl)
|
11
37
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
end
|
38
|
+
if temp.all?{|key, value| action[key] == value }
|
39
|
+
cache_key = action.full_path
|
40
|
+
cache_key << "_#{action.instance.instance_eval(&block).to_s}" if block
|
16
41
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
# cache supports these options
|
25
|
-
# [+:ttl+] time-to-live in seconds
|
26
|
-
# [+:key+] proc that returns a key to store cache with
|
27
|
-
#
|
28
|
-
# Example:
|
29
|
-
#
|
30
|
-
# class CacheController < Ramaze::Controller
|
31
|
-
# helper :cache
|
32
|
-
#
|
33
|
-
# # for each distinct value of request['name']
|
34
|
-
# # cache rendered output of name action for 60 seconds
|
35
|
-
# cache :name, :key => lambda{ request['name'] }, :ttl => 60
|
36
|
-
#
|
37
|
-
# def name
|
38
|
-
# "hi #{request['name']}"
|
39
|
-
# end
|
40
|
-
# end
|
41
|
-
#
|
42
|
-
# cache acts as a wrapper for value_cache if no args are given
|
42
|
+
if cached = cache[cache_key]
|
43
|
+
action.options[:content_type] = cached[:type]
|
44
|
+
else
|
45
|
+
cached = {
|
46
|
+
:body => catch(:respond) { yield },
|
47
|
+
:type => response['Content-Type']
|
48
|
+
}
|
43
49
|
|
44
|
-
|
45
|
-
|
50
|
+
if ttl
|
51
|
+
cache.store(cache_key, cached, :ttl => ttl)
|
52
|
+
else
|
53
|
+
cache.store(cache_key, cached)
|
54
|
+
end
|
55
|
+
end
|
46
56
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
opts ||= {}
|
57
|
+
return cached[:body]
|
58
|
+
end
|
59
|
+
end
|
51
60
|
|
52
|
-
|
53
|
-
actions_cached[arg.to_sym] = opts unless arg.nil?
|
61
|
+
yield
|
54
62
|
end
|
55
|
-
end
|
56
|
-
|
57
|
-
private
|
58
|
-
|
59
|
-
# use this to cache values in your controller and templates,
|
60
|
-
# for example heavy calculations or time-consuming queries.
|
61
|
-
|
62
|
-
def value_cache
|
63
|
-
C.value_cache
|
64
|
-
end
|
65
|
-
|
66
|
-
# action_cache holds rendered output of actions for which caching is enabled.
|
67
|
-
#
|
68
|
-
# For simple cases:
|
69
|
-
#
|
70
|
-
# class Controller < Ramaze::Controller
|
71
|
-
# map '/path/to'
|
72
|
-
# helper :cache
|
73
|
-
# cache :action
|
74
|
-
#
|
75
|
-
# def action with, params
|
76
|
-
# 'rendered output'
|
77
|
-
# end
|
78
|
-
# end
|
79
|
-
#
|
80
|
-
# { '/path/to/action/with/params' => {
|
81
|
-
# :time => Time.at(rendering),
|
82
|
-
# :type => 'content/type',
|
83
|
-
# :content => 'rendered output'
|
84
|
-
# }
|
85
|
-
# }
|
86
|
-
#
|
87
|
-
# If an additional key is provided:
|
88
|
-
#
|
89
|
-
# class Controller < Ramaze::Controller
|
90
|
-
# map '/path/to'
|
91
|
-
# helper :cache
|
92
|
-
# cache :action, :key => lambda{ 'value of key proc' }
|
93
|
-
#
|
94
|
-
# def action
|
95
|
-
# 'output'
|
96
|
-
# end
|
97
|
-
# end
|
98
|
-
#
|
99
|
-
# { '/path/to/action' => {
|
100
|
-
# 'value of key proc' => {
|
101
|
-
# :time => Time.at(rendering),
|
102
|
-
# :type => 'content/type',
|
103
|
-
# :content => 'output'
|
104
|
-
# }
|
105
|
-
# }
|
106
|
-
# }
|
107
|
-
#
|
108
|
-
# Caches can be invalidated after a certain amount of time
|
109
|
-
# by supplying a :ttl option (in seconds)
|
110
|
-
#
|
111
|
-
# class Controller < Ramaze::Controller
|
112
|
-
# helper :cache
|
113
|
-
# cache :index, :ttl => 60
|
114
|
-
#
|
115
|
-
# def index
|
116
|
-
# Time.now.to_s
|
117
|
-
# end
|
118
|
-
# end
|
119
|
-
#
|
120
|
-
# or by deleting values from action_cache directly
|
121
|
-
#
|
122
|
-
# action_cache.clear
|
123
|
-
# action_cache.delete '/index'
|
124
|
-
# action_cache.delete '/path/to/action'
|
125
63
|
|
126
|
-
|
127
|
-
|
128
|
-
|
64
|
+
##
|
65
|
+
# This method is used to access Ramaze::Cache.cache_helper_value.
|
66
|
+
# It provides an easy way to cache long-running computations, gathering
|
67
|
+
# external resources like RSS feeds or DB queries that are the same for
|
68
|
+
# every user of an application.
|
69
|
+
# This method changes behaviour if a block is passed, which can be used
|
70
|
+
# to do lazy computation of the cached value conveniently when using a
|
71
|
+
# custom TTL or longer expressions that don't fit on one line with ||=.
|
72
|
+
#
|
73
|
+
# @example to get the cache object directly
|
74
|
+
#
|
75
|
+
# count = cache_value[:count] ||= Article.count
|
76
|
+
#
|
77
|
+
# @example with block
|
78
|
+
#
|
79
|
+
# count = cache_value(:count){ Article.count }
|
80
|
+
# count = cache_value(:count, :ttl => 60){ Article.count }
|
81
|
+
#
|
82
|
+
# @return [Object] The cache wrapper assigned for :cache_helper_value
|
83
|
+
# @see Innate::Cache
|
84
|
+
# @author manveru
|
85
|
+
#
|
86
|
+
def cache_value(key = nil, options = {})
|
87
|
+
cache = Ramaze::Cache.cache_helper_value
|
129
88
|
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
89
|
+
if key and block_given?
|
90
|
+
if found = cache[key]
|
91
|
+
found
|
92
|
+
else
|
93
|
+
cache.store(key, yield, options)
|
94
|
+
end
|
95
|
+
else
|
96
|
+
cache
|
97
|
+
end
|
98
|
+
end
|
138
99
|
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
100
|
+
module SingletonMethods
|
101
|
+
# This method allows you to cache whole actions.
|
102
|
+
#
|
103
|
+
# @example Basic usage
|
104
|
+
# class Foo < Ramaze::Controller
|
105
|
+
# helper :cache
|
106
|
+
# cache_action :method => :bar
|
107
|
+
#
|
108
|
+
# def bar
|
109
|
+
# rand
|
110
|
+
# end
|
111
|
+
# end
|
112
|
+
#
|
113
|
+
def cache_action(hash, &block)
|
114
|
+
hash[:key] = block if block_given?
|
115
|
+
hash[:method] = hash[:method].to_s
|
116
|
+
trait[:cache_action] << hash
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end # Cache
|
120
|
+
end # Helper
|
121
|
+
end # Ramaze
|
@@ -0,0 +1,191 @@
|
|
1
|
+
require 'securerandom'
|
2
|
+
require 'digest'
|
3
|
+
|
4
|
+
module Ramaze
|
5
|
+
module Helper
|
6
|
+
##
|
7
|
+
# A relatively basic yet useful helper that can be used to protect your
|
8
|
+
# application from CSRF attacks/exploits. Note that this helper merely
|
9
|
+
# generates the required data, and provides several methods. You still need
|
10
|
+
# to manually add the token to each form.
|
11
|
+
#
|
12
|
+
# The reason for this is because this is quite simple. Ramaze is meant as a
|
13
|
+
# framework that works with any given helper, ORM, template engine and so
|
14
|
+
# on. If we were to automatically load this helper and include (a perhaps
|
15
|
+
# more advanced) CSRF system that would mean that every form helper,
|
16
|
+
# official or third-party, would have to support that specific system.
|
17
|
+
# However, there's no need to panic as it's very easy to setup a basic anti
|
18
|
+
# CSRF system.
|
19
|
+
#
|
20
|
+
# ## Usage
|
21
|
+
#
|
22
|
+
# In order to enable CSRF protection we need to do two things. Load the
|
23
|
+
# helper and create a before_all block in a controller. Take a look at the
|
24
|
+
# following code:
|
25
|
+
#
|
26
|
+
# class BaseController < Ramaze::Controller
|
27
|
+
# before_all do
|
28
|
+
# puts "Hello, before_all!"
|
29
|
+
# end
|
30
|
+
# end
|
31
|
+
#
|
32
|
+
# This would output "Hello, before_all!" to the console upon each request.
|
33
|
+
# Not very useful but it does show what the before_all block can do. On to
|
34
|
+
# actual CSRF related code!
|
35
|
+
#
|
36
|
+
# class BaseController < Ramaze::Controller
|
37
|
+
# before_all do
|
38
|
+
# csrf_protection :save do
|
39
|
+
# # ....
|
40
|
+
# end
|
41
|
+
# end
|
42
|
+
# end
|
43
|
+
#
|
44
|
+
# This example introduces an extra block that validates the current
|
45
|
+
# request. Whenever a user requests a controller that either extends
|
46
|
+
# BaseController or has it's own before_all block Ramaze will check if the
|
47
|
+
# current request data contains a CSRF token. Of course an if/end isn't
|
48
|
+
# very useful if it doesn't do anything, let's add some code.
|
49
|
+
#
|
50
|
+
# class BaseController < Ramaze::Controller
|
51
|
+
# before_all do
|
52
|
+
# csrf_protection :save do
|
53
|
+
# puts "Hello, unsafe data!"
|
54
|
+
# end
|
55
|
+
# end
|
56
|
+
# end
|
57
|
+
#
|
58
|
+
# The code above checks if the current method is "save" (or any other of
|
59
|
+
# the provided methods) and checks if an CSRF token is supplied if the
|
60
|
+
# method matches. Protected methods require a token in ALL HTTP requests
|
61
|
+
# (GET, POST, etc). While this may seem weird since GET is generally used
|
62
|
+
# for safe actions it actually makes sense. Ramaze stores both the POST and
|
63
|
+
# GET parameters in the request.params hash. While this makes it easy to
|
64
|
+
# work with POST/GET data this also makes it easier to spoof POST requests
|
65
|
+
# using a GET request, thus this helper protects ALL request methods.
|
66
|
+
#
|
67
|
+
# If you're a lazy person you can copy-paste the example below and adapt it
|
68
|
+
# to your needs.
|
69
|
+
#
|
70
|
+
# class BaseController < Ramaze::Controller
|
71
|
+
# before_all do
|
72
|
+
# csrf_protection :save do
|
73
|
+
# respond("The supplied CSRF token is invalid.", 401)
|
74
|
+
# end
|
75
|
+
# end
|
76
|
+
# end
|
77
|
+
#
|
78
|
+
module CSRF
|
79
|
+
include Innate::Optioned
|
80
|
+
|
81
|
+
options.dsl do
|
82
|
+
o 'The name of the token field', :field_name, 'csrf_token'
|
83
|
+
end
|
84
|
+
|
85
|
+
##
|
86
|
+
# Method that can be used to protect the specified methods against CSRF
|
87
|
+
# exploits. Each protected method will require the token to be stored in
|
88
|
+
# a field called "csrf_token". This method will then validate that token
|
89
|
+
# against the current token in the session.
|
90
|
+
#
|
91
|
+
# @param [Array] methods Array of method names that should be checked.
|
92
|
+
# @param [Proc] block Block that will be executed if the token is
|
93
|
+
# invalid.
|
94
|
+
# @example
|
95
|
+
# # Protect "create" and "save" against CSRF exploits
|
96
|
+
# before_all do
|
97
|
+
# csrf_protection :create, :save do
|
98
|
+
# respond("GET TO DA CHOPPA!", 401)
|
99
|
+
# end
|
100
|
+
# end
|
101
|
+
#
|
102
|
+
def csrf_protection(*methods, &block)
|
103
|
+
if methods.include?(action.name) \
|
104
|
+
or methods.include?(action.name.to_sym)
|
105
|
+
unless validate_csrf_token(request.params[CSRF.options.field_name])
|
106
|
+
yield
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
##
|
112
|
+
# Generate a new token and create the session array that will be used to
|
113
|
+
# validate the client.
|
114
|
+
#
|
115
|
+
# Note that this method will be automatically called if no CSRF token
|
116
|
+
# exists.
|
117
|
+
#
|
118
|
+
# @param [Hash] args Additional arguments that can be set such as the
|
119
|
+
# TTL.
|
120
|
+
#
|
121
|
+
def generate_csrf_token(args = {})
|
122
|
+
random = SecureRandom.random_bytes(512)
|
123
|
+
time = Time.now.to_f
|
124
|
+
token = Digest::SHA512.hexdigest(random + time.to_s)
|
125
|
+
|
126
|
+
# Time to store all the data we want to check later.
|
127
|
+
session[:_csrf] = {
|
128
|
+
:token => token,
|
129
|
+
:ip => request.ip,
|
130
|
+
:agent => request.env['HTTP_USER_AGENT'],
|
131
|
+
:host => request.host
|
132
|
+
}
|
133
|
+
|
134
|
+
return
|
135
|
+
end
|
136
|
+
|
137
|
+
##
|
138
|
+
# Retrieves the current value of the CSRF token.
|
139
|
+
#
|
140
|
+
# @return [String] The current CSRF token.
|
141
|
+
# @example
|
142
|
+
# form(@data, :method => :post) do |f|
|
143
|
+
# f.input_hidden :csrf_token, get_csrf_token()
|
144
|
+
# end
|
145
|
+
#
|
146
|
+
def get_csrf_token
|
147
|
+
if !session[:_csrf] || !self.validate_csrf_token(session[:_csrf][:token])
|
148
|
+
self.generate_csrf_token
|
149
|
+
end
|
150
|
+
|
151
|
+
return session[:_csrf][:token]
|
152
|
+
end
|
153
|
+
|
154
|
+
##
|
155
|
+
# Validates the request based on the current session date stored in
|
156
|
+
# _csrf.
|
157
|
+
#
|
158
|
+
# @param [String] input_token The CSRF token to validate.
|
159
|
+
# @return [TrueClass|FalseClass]
|
160
|
+
# @example
|
161
|
+
# before_all do
|
162
|
+
# if validate_csrf_token(request.params['csrf_token']) != true
|
163
|
+
# respond("Invalid CSRF token", 401)
|
164
|
+
# end
|
165
|
+
# end
|
166
|
+
#
|
167
|
+
def validate_csrf_token(input_token)
|
168
|
+
# Check if the CSRF data has been generated and generate it if this
|
169
|
+
# hasn't been done already (usually on the first request).
|
170
|
+
if !session[:_csrf] or session[:_csrf].empty?
|
171
|
+
self.generate_csrf_token
|
172
|
+
end
|
173
|
+
|
174
|
+
_csrf = session[:_csrf]
|
175
|
+
|
176
|
+
valid = session[:_csrf][:token] == input_token &&
|
177
|
+
_csrf[:host] == request.host &&
|
178
|
+
_csrf[:ip] == request.ip &&
|
179
|
+
_csrf[:agent] == request.env['HTTP_USER_AGENT']
|
180
|
+
|
181
|
+
if valid
|
182
|
+
generate_csrf_token
|
183
|
+
|
184
|
+
return true
|
185
|
+
else
|
186
|
+
return false
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end # CSRF
|
190
|
+
end # Helper
|
191
|
+
end # Ramaze
|
@@ -0,0 +1,116 @@
|
|
1
|
+
require 'net/smtp'
|
2
|
+
|
3
|
+
module Ramaze
|
4
|
+
module Helper
|
5
|
+
##
|
6
|
+
# The Email helper can be used as a simple way of sending Emails from your
|
7
|
+
# application. In order to use this helper you first need to load it:
|
8
|
+
#
|
9
|
+
# class Comments < Ramaze::Controller
|
10
|
+
# helper :email
|
11
|
+
# end
|
12
|
+
#
|
13
|
+
# Sending an Email can be done by calling the method send_email():
|
14
|
+
#
|
15
|
+
# send_email(
|
16
|
+
# 'user@domain.tld',
|
17
|
+
# 'Hello, world!',
|
18
|
+
# 'Hello, this is an Email'
|
19
|
+
# )
|
20
|
+
#
|
21
|
+
# Ramaze will log any errors in case the Email could not be sent so you
|
22
|
+
# don't have to worry about this.
|
23
|
+
#
|
24
|
+
# ## Options
|
25
|
+
#
|
26
|
+
# This module can be configured using Innate::Optioned. Say you want to
|
27
|
+
# change the SMTP host you simply need to do the following:
|
28
|
+
#
|
29
|
+
# Ramaze::Helper::Email.options.host = 'mail.google.com'
|
30
|
+
#
|
31
|
+
# Various other options are available, for a full list of these options run
|
32
|
+
# the following in an IRB session:
|
33
|
+
#
|
34
|
+
# puts Ramaze::Helper::Email.options
|
35
|
+
#
|
36
|
+
# By default this helper uses ``\r\n`` for newlines, this can be changed as
|
37
|
+
# following:
|
38
|
+
#
|
39
|
+
# Ramaze::Helper::Email.options.newline = "\n"
|
40
|
+
#
|
41
|
+
# @author Yorick Peterse
|
42
|
+
# @author Michael Fellinger
|
43
|
+
# @since 16-06-2011
|
44
|
+
#
|
45
|
+
module Email
|
46
|
+
include Innate::Optioned
|
47
|
+
|
48
|
+
options.dsl do
|
49
|
+
o 'The SMTP server to use for sending Emails' , :host , ''
|
50
|
+
o 'The SMTP helo domain' , :helo_domain , ''
|
51
|
+
o 'The username for the SMTP server' , :username , ''
|
52
|
+
o 'The password for the SMTP server' , :password , ''
|
53
|
+
o 'The sender\'s Email address' , :sender , ''
|
54
|
+
o 'The port of the SMTP server' , :port , 25
|
55
|
+
o 'The authentication type of the SMTP server' , :auth_type , :login
|
56
|
+
o 'An array of addresses to forward the Emails to', :bcc , []
|
57
|
+
o 'The name (including the Email) of the sender' , :sender_full , nil
|
58
|
+
o 'A prefix to use for the subjects of the Emails', :subject_prefix, ''
|
59
|
+
o 'The type of newlines to use for the Email' , :newline , "\r\n"
|
60
|
+
o 'The generator to use for Email IDs' , :generator , lambda {
|
61
|
+
"<" + Time.now.to_i.to_s + "@" + Ramaze::Helper::Email.options.helo_domain + ">"
|
62
|
+
}
|
63
|
+
end
|
64
|
+
|
65
|
+
##
|
66
|
+
# Sends an Email over SMTP.
|
67
|
+
#
|
68
|
+
# @example
|
69
|
+
# send_email('user@domain.tld', 'Hello, world!', 'Hello, this is an Email')
|
70
|
+
#
|
71
|
+
# @author Yorick Peterse
|
72
|
+
# @author Michael Fellinger
|
73
|
+
# @since 16-06-2011
|
74
|
+
# @param [String] recipient The Email address to send the Email to.
|
75
|
+
# @param [String] subject The subject of the Email.
|
76
|
+
# @param [String] message The body of the Email
|
77
|
+
#
|
78
|
+
def send_email(recipient, subject, message)
|
79
|
+
sender = Email.options.sender_full || "#{Email.options.sender} <#{Email.options.sender}>"
|
80
|
+
subject = [Email.options.subject_prefix, subject].join(' ').strip
|
81
|
+
id = Email.options.generator.call
|
82
|
+
|
83
|
+
# Generate the body of the Email
|
84
|
+
email = [
|
85
|
+
"From: #{sender}", "To: <#{recipient}>", "Date: #{Time.now.rfc2822}",
|
86
|
+
"Subject: #{subject}", "Message-Id: #{id}", '', message
|
87
|
+
].join(Email.options.newline)
|
88
|
+
|
89
|
+
# Send the Email
|
90
|
+
email_options = []
|
91
|
+
|
92
|
+
[:host, :port, :helo_domain, :username, :password, :auth_type].each do |k|
|
93
|
+
email_options.push(Email.options[k])
|
94
|
+
end
|
95
|
+
|
96
|
+
begin
|
97
|
+
Net::SMTP.start(*email_options) do |smtp|
|
98
|
+
smtp.send_message(
|
99
|
+
email,
|
100
|
+
Email.options.sender,
|
101
|
+
[recipient, *Email.options.bcc]
|
102
|
+
)
|
103
|
+
|
104
|
+
Ramaze::Log.info(
|
105
|
+
"Email sent to #{recipient} with subject \"#{subject}\""
|
106
|
+
)
|
107
|
+
end
|
108
|
+
rescue => e
|
109
|
+
Ramaze::Log.error(
|
110
|
+
"Failed to send an Email to #{recipient}: #{e.inspect}"
|
111
|
+
)
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end # Email
|
115
|
+
end # Helper
|
116
|
+
end # Ramaze
|
@@ -0,0 +1,113 @@
|
|
1
|
+
# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
|
2
|
+
# All files in this distribution are subject to the terms of the MIT license.
|
3
|
+
|
4
|
+
require 'erector'
|
5
|
+
|
6
|
+
module Ramaze
|
7
|
+
module Helper
|
8
|
+
##
|
9
|
+
# Allows you to use some shortcuts for Erector in your Controller.
|
10
|
+
#
|
11
|
+
# use this inside your controller to directly build Erector
|
12
|
+
# Refer to the Erector-documentation and testsuite for more examples.
|
13
|
+
#
|
14
|
+
# @example
|
15
|
+
# erector { h1 "Apples & Oranges" } #=> "<h1>Apples & Oranges</h1>"
|
16
|
+
# erector { h1(:class => 'fruits&floots'){ text 'Apples' } }
|
17
|
+
#
|
18
|
+
module Erector
|
19
|
+
include ::Erector::Mixin
|
20
|
+
|
21
|
+
class ::Erector::Widget
|
22
|
+
alias :raw! :rawtext
|
23
|
+
alias :old_css :css
|
24
|
+
|
25
|
+
##
|
26
|
+
# Method that generates a XHTML 1.0 Strict doctype.
|
27
|
+
#
|
28
|
+
# @example
|
29
|
+
# strict_html do
|
30
|
+
# head do
|
31
|
+
# title "Ramaze Rocks!"
|
32
|
+
# end
|
33
|
+
# body
|
34
|
+
# div do
|
35
|
+
#
|
36
|
+
# end
|
37
|
+
# end
|
38
|
+
# end
|
39
|
+
#
|
40
|
+
# @param [Hash] args Hash containing extra options such as the xml:lang
|
41
|
+
# and xmlns attribute.
|
42
|
+
# @param [Block] block Block that contains the inner data of the <html>
|
43
|
+
# element.
|
44
|
+
#
|
45
|
+
def strict_xhtml(*args, &block)
|
46
|
+
raw! '<?xml version="1.0" encoding="UTF-8"?>'
|
47
|
+
raw! '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">'
|
48
|
+
html(:xmlns => "http://www.w3.org/1999/xhtml", :"xml:lang" => "en", :lang => "en", &block)
|
49
|
+
end
|
50
|
+
|
51
|
+
##
|
52
|
+
# Generate a Javascript tag.
|
53
|
+
#
|
54
|
+
# @example
|
55
|
+
# js 'javascript/jquery.js'
|
56
|
+
#
|
57
|
+
# @param [String] src The full or relative path to the Javascript file.
|
58
|
+
#
|
59
|
+
def js(src)
|
60
|
+
script :src => src
|
61
|
+
end
|
62
|
+
|
63
|
+
##
|
64
|
+
# Generate a pair of conditional tags for a specific browser.
|
65
|
+
#
|
66
|
+
# @example
|
67
|
+
# ie_if 'IE' do
|
68
|
+
# ......
|
69
|
+
# end
|
70
|
+
#
|
71
|
+
# @param [String] expr The if expression, such as 'IE' or 'lte IE7'.
|
72
|
+
# @param [block] block Block that contains the data that needs to be
|
73
|
+
# loaded for the specified browser.
|
74
|
+
#
|
75
|
+
def ie_if(expr, &block)
|
76
|
+
raw! "<!--[if #{expr}]>"
|
77
|
+
yield
|
78
|
+
raw! "<![endif]-->"
|
79
|
+
end
|
80
|
+
|
81
|
+
##
|
82
|
+
# Inspect the specified element.
|
83
|
+
#
|
84
|
+
# @param [String] elem The element to inspect.
|
85
|
+
#
|
86
|
+
def inspect(elem)
|
87
|
+
text elem.inspect
|
88
|
+
end
|
89
|
+
|
90
|
+
##
|
91
|
+
# Generate a stylesheet tag.
|
92
|
+
#
|
93
|
+
# @example
|
94
|
+
# css 'css/reset.css', :media => 'print'
|
95
|
+
#
|
96
|
+
# @param [String] href The path (either absolute or relative) to the CSS
|
97
|
+
# file.
|
98
|
+
# @param [Hash] args A hash containing additional arguments to add to
|
99
|
+
# the CSS tag.
|
100
|
+
#
|
101
|
+
def css(href, args = {})
|
102
|
+
attrs = {
|
103
|
+
:rel => "stylesheet",
|
104
|
+
:href => href,
|
105
|
+
:type => "text/css"
|
106
|
+
}.merge(args)
|
107
|
+
|
108
|
+
link attrs
|
109
|
+
end
|
110
|
+
end # Erector::Widget
|
111
|
+
end # Erector
|
112
|
+
end # Helper
|
113
|
+
end # Ramaze
|