rjspotter-ramaze 2009.06.29
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/.gitignore +3 -0
- data/.mailmap +25 -0
- data/MANIFEST +502 -0
- data/README.md +457 -0
- data/Rakefile +88 -0
- data/benchmark/bench_templates/bench.rb +67 -0
- data/benchmark/bench_templates/view/large.erb +79 -0
- data/benchmark/bench_templates/view/large.haml +41 -0
- data/benchmark/bench_templates/view/large.xhtml +79 -0
- data/benchmark/bench_templates/view/small.erb +21 -0
- data/benchmark/bench_templates/view/small.haml +12 -0
- data/benchmark/bench_templates/view/small.xhtml +21 -0
- data/benchmark/results.txt +131 -0
- data/benchmark/run.rb +355 -0
- data/benchmark/suite/minimal.rb +11 -0
- data/benchmark/suite/no_informer.rb +7 -0
- data/benchmark/suite/no_sessions.rb +9 -0
- data/benchmark/suite/no_template.rb +7 -0
- data/benchmark/suite/simple.rb +5 -0
- data/benchmark/suite/template_erubis.rb +8 -0
- data/benchmark/suite/template_etanni.rb +8 -0
- data/benchmark/suite/template_ezamar.rb +8 -0
- data/benchmark/suite/template_haml.rb +13 -0
- data/benchmark/suite/template_liquid.rb +11 -0
- data/benchmark/suite/template_markaby.rb +9 -0
- data/benchmark/suite/template_nagoro.rb +8 -0
- data/benchmark/suite/template_redcloth.rb +13 -0
- data/benchmark/suite/template_tenjin.rb +8 -0
- data/benchmark/test.rb +35 -0
- data/bin/ramaze +15 -0
- data/doc/AUTHORS +44 -0
- data/doc/CHANGELOG +17362 -0
- data/doc/COPYING +56 -0
- data/doc/FAQ +92 -0
- data/doc/GPL +339 -0
- data/doc/INSTALL +92 -0
- data/doc/LEGAL +26 -0
- data/doc/TODO +29 -0
- data/doc/meta/announcement.txt +146 -0
- data/doc/meta/configuration.txt +163 -0
- data/doc/meta/internals.txt +278 -0
- data/doc/meta/users.kml +64 -0
- data/doc/tutorial/todolist.html +1379 -0
- data/doc/tutorial/todolist.txt +920 -0
- data/examples/app/auth/layout/auth.xhtml +25 -0
- data/examples/app/auth/start.rb +23 -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/README +3 -0
- data/examples/app/blog/app.rb +69 -0
- data/examples/app/blog/config.ru +17 -0
- data/examples/app/blog/controller/comment.rb +45 -0
- data/examples/app/blog/controller/entry.rb +85 -0
- data/examples/app/blog/controller/init.rb +86 -0
- data/examples/app/blog/controller/main.rb +20 -0
- data/examples/app/blog/controller/tag.rb +9 -0
- data/examples/app/blog/layout/default.nag +31 -0
- data/examples/app/blog/model/comment.rb +58 -0
- data/examples/app/blog/model/entry.rb +89 -0
- data/examples/app/blog/model/init.rb +15 -0
- data/examples/app/blog/model/tag.rb +36 -0
- data/examples/app/blog/public/css/screen.css +273 -0
- data/examples/app/blog/spec/blog.rb +87 -0
- data/examples/app/blog/start.rb +5 -0
- data/examples/app/blog/view/comment/form.nag +10 -0
- data/examples/app/blog/view/comment/show.nag +16 -0
- data/examples/app/blog/view/entry/edit.nag +14 -0
- data/examples/app/blog/view/entry/feed.atom.nag +8 -0
- data/examples/app/blog/view/entry/feed.rss.nag +7 -0
- data/examples/app/blog/view/entry/index.nag +7 -0
- data/examples/app/blog/view/entry/new.nag +13 -0
- data/examples/app/blog/view/entry/show.nag +36 -0
- data/examples/app/blog/view/feed.atom.nag +18 -0
- data/examples/app/blog/view/feed.rss.nag +25 -0
- data/examples/app/blog/view/index.nag +6 -0
- data/examples/app/blog/view/tag/index.nag +5 -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/examples/app/chat/public/js/jquery.js +3436 -0
- 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/sourceview/public/coderay.css +104 -0
- data/examples/app/sourceview/public/images/file.gif +0 -0
- data/examples/app/sourceview/public/images/folder.gif +0 -0
- data/examples/app/sourceview/public/images/tv-collapsable-last.gif +0 -0
- data/examples/app/sourceview/public/images/tv-collapsable.gif +0 -0
- data/examples/app/sourceview/public/images/tv-expandable-last.gif +0 -0
- data/examples/app/sourceview/public/images/tv-expandable.gif +0 -0
- data/examples/app/sourceview/public/images/tv-item-last.gif +0 -0
- data/examples/app/sourceview/public/images/tv-item.gif +0 -0
- data/examples/app/sourceview/public/jquery.js +11 -0
- data/examples/app/sourceview/public/jquery.treeview.css +48 -0
- data/examples/app/sourceview/public/jquery.treeview.js +223 -0
- data/examples/app/sourceview/public/sourceview.js +52 -0
- data/examples/app/sourceview/start.rb +79 -0
- data/examples/app/sourceview/view/index.haml +59 -0
- data/examples/app/todolist/controller/init.rb +10 -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/public/favicon.ico +0 -0
- data/examples/app/todolist/start.rb +11 -0
- data/examples/app/todolist/view/index.xhtml +29 -0
- data/examples/app/upload/start.rb +19 -0
- data/examples/app/upload/view/index.xhtml +25 -0
- data/examples/app/whywiki/spec/whywiki.rb +58 -0
- data/examples/app/whywiki/start.rb +46 -0
- data/examples/app/whywiki/template/edit.xhtml +14 -0
- data/examples/app/whywiki/template/show.xhtml +18 -0
- data/examples/app/wikore/spec/wikore.rb +109 -0
- data/examples/app/wikore/src/controller.rb +78 -0
- data/examples/app/wikore/src/model.rb +56 -0
- data/examples/app/wikore/start.rb +9 -0
- data/examples/app/wikore/view/index.xhtml +8 -0
- data/examples/app/wiktacular/README +2 -0
- data/examples/app/wiktacular/mkd/link/2007-07-20_19-45-51.mkd +1 -0
- data/examples/app/wiktacular/mkd/link/current.mkd +1 -0
- data/examples/app/wiktacular/mkd/main/2007-07-20_16-31-33.mkd +1 -0
- data/examples/app/wiktacular/mkd/main/2007-07-20_19-21-12.mkd +1 -0
- 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/app/wiktacular/mkd/markdown/current.mkd +3 -0
- data/examples/app/wiktacular/mkd/testing/2007-07-20_16-43-46.mkd +2 -0
- data/examples/app/wiktacular/mkd/testing/2007-07-20_19-43-50.mkd +3 -0
- data/examples/app/wiktacular/mkd/testing/2007-07-21_18-46-01.mkd +11 -0
- data/examples/app/wiktacular/mkd/testing/2007-07-21_18-46-32.mkd +13 -0
- data/examples/app/wiktacular/mkd/testing/2007-07-21_18-47-08.mkd +17 -0
- data/examples/app/wiktacular/mkd/testing/2007-07-21_18-47-54.mkd +17 -0
- data/examples/app/wiktacular/mkd/testing/current.mkd +17 -0
- data/examples/app/wiktacular/public/favicon.ico +0 -0
- data/examples/app/wiktacular/public/screen.css +72 -0
- data/examples/app/wiktacular/spec/wiktacular.rb +157 -0
- data/examples/app/wiktacular/src/controller.rb +55 -0
- data/examples/app/wiktacular/src/model.rb +102 -0
- data/examples/app/wiktacular/start.rb +8 -0
- data/examples/app/wiktacular/template/edit.xhtml +6 -0
- data/examples/app/wiktacular/template/html_layout.xhtml +27 -0
- data/examples/app/wiktacular/template/index.xhtml +9 -0
- data/examples/app/wiktacular/template/new.xhtml +6 -0
- data/examples/basic/element.rb +47 -0
- data/examples/basic/gestalt.rb +26 -0
- data/examples/basic/hello.rb +14 -0
- data/examples/basic/layout.rb +28 -0
- data/examples/basic/linking.rb +29 -0
- data/examples/basic/partial.rb +26 -0
- data/examples/basic/simple.rb +52 -0
- data/examples/helpers/cache.rb +33 -0
- data/examples/helpers/form_with_sequel.rb +24 -0
- data/examples/helpers/httpdigest.rb +107 -0
- data/examples/helpers/identity.rb +18 -0
- data/examples/helpers/nitro_form.rb +23 -0
- data/examples/helpers/paginate.rb +71 -0
- data/examples/helpers/rest.rb +28 -0
- data/examples/helpers/simple_captcha.rb +29 -0
- data/examples/misc/css.rb +37 -0
- data/examples/misc/facebook.rb +159 -0
- data/examples/misc/memleak_detector.rb +37 -0
- data/examples/misc/nagoro_element.rb +43 -0
- data/examples/misc/ramaise.rb +132 -0
- data/examples/misc/rapp.rb +56 -0
- data/examples/misc/sequel_scaffolding.rb +34 -0
- data/examples/misc/serve_directory.rb +6 -0
- data/examples/templates/template_erubis.rb +52 -0
- data/examples/templates/template_ezamar.rb +51 -0
- data/examples/templates/template_haml.rb +49 -0
- data/examples/templates/template_liquid.rb +66 -0
- data/examples/templates/template_markaby.rb +57 -0
- data/examples/templates/template_nagoro.rb +50 -0
- data/examples/templates/template_redcloth.rb +58 -0
- data/examples/templates/template_remarkably.rb +54 -0
- data/examples/templates/template_tenjin.rb +52 -0
- data/examples/templates/view/external.haml +22 -0
- data/examples/templates/view/external.liquid +28 -0
- data/examples/templates/view/external.mab +30 -0
- data/examples/templates/view/external.nag +28 -0
- data/examples/templates/view/external.redcloth +19 -0
- data/examples/templates/view/external.rem +30 -0
- data/examples/templates/view/external.rhtml +28 -0
- data/examples/templates/view/external.tenjin +28 -0
- data/examples/templates/view/external.zmr +28 -0
- data/lib/proto/app.rb +14 -0
- data/lib/proto/config.ru +20 -0
- data/lib/proto/controller/init.rb +11 -0
- data/lib/proto/controller/main.rb +20 -0
- data/lib/proto/layout/default.xhtml +24 -0
- data/lib/proto/model/init.rb +4 -0
- data/lib/proto/public/.htaccess +24 -0
- data/lib/proto/public/css/screen.css +30 -0
- data/lib/proto/public/dispatch.fcgi +11 -0
- data/lib/proto/public/favicon.ico +0 -0
- data/lib/proto/public/js/jquery.js +4376 -0
- data/lib/proto/public/ramaze.png +0 -0
- data/lib/proto/spec/main.rb +20 -0
- data/lib/proto/start.rb +8 -0
- data/lib/proto/view/index.xhtml +41 -0
- data/lib/ramaze.rb +87 -0
- data/lib/ramaze/app.rb +124 -0
- data/lib/ramaze/cache.rb +19 -0
- data/lib/ramaze/cache/localmemcache.rb +56 -0
- data/lib/ramaze/cache/memcache.rb +124 -0
- data/lib/ramaze/cache/sequel.rb +82 -0
- data/lib/ramaze/contrib/addressable_route.rb +55 -0
- data/lib/ramaze/contrib/app_graph.rb +64 -0
- data/lib/ramaze/contrib/email.rb +88 -0
- data/lib/ramaze/contrib/facebook.rb +23 -0
- data/lib/ramaze/contrib/facebook/facebook.rb +171 -0
- data/lib/ramaze/contrib/gettext.rb +113 -0
- data/lib/ramaze/contrib/gettext/mo.rb +155 -0
- data/lib/ramaze/contrib/gettext/parser.rb +46 -0
- data/lib/ramaze/contrib/gettext/po.rb +109 -0
- data/lib/ramaze/contrib/gzip_filter.rb +1 -0
- data/lib/ramaze/contrib/maruku_uv.rb +59 -0
- data/lib/ramaze/contrib/profiling.rb +36 -0
- data/lib/ramaze/contrib/rest.rb +22 -0
- data/lib/ramaze/contrib/sequel/create_join.rb +26 -0
- data/lib/ramaze/contrib/sequel/form_field.rb +129 -0
- data/lib/ramaze/contrib/sequel/image.rb +196 -0
- data/lib/ramaze/contrib/sequel/relation.rb +98 -0
- data/lib/ramaze/controller.rb +104 -0
- data/lib/ramaze/controller/default.rb +12 -0
- data/lib/ramaze/current.rb +7 -0
- data/lib/ramaze/files.rb +24 -0
- data/lib/ramaze/gestalt.rb +132 -0
- data/lib/ramaze/helper.rb +13 -0
- data/lib/ramaze/helper/auth.rb +84 -0
- data/lib/ramaze/helper/bench.rb +41 -0
- data/lib/ramaze/helper/cache.rb +117 -0
- data/lib/ramaze/helper/disqus.rb +26 -0
- data/lib/ramaze/helper/flash.rb +62 -0
- data/lib/ramaze/helper/form.rb +127 -0
- data/lib/ramaze/helper/formatting.rb +189 -0
- data/lib/ramaze/helper/gestalt.rb +47 -0
- data/lib/ramaze/helper/gravatar.rb +79 -0
- data/lib/ramaze/helper/httpdigest.rb +97 -0
- data/lib/ramaze/helper/identity.rb +119 -0
- data/lib/ramaze/helper/layout.rb +97 -0
- data/lib/ramaze/helper/link.rb +56 -0
- data/lib/ramaze/helper/localize.rb +138 -0
- data/lib/ramaze/helper/markaby.rb +31 -0
- data/lib/ramaze/helper/maruku.rb +16 -0
- data/lib/ramaze/helper/nitroform.rb +14 -0
- data/lib/ramaze/helper/pager.rb +367 -0
- data/lib/ramaze/helper/paginate.rb +242 -0
- data/lib/ramaze/helper/partial.rb +100 -0
- data/lib/ramaze/helper/remarkably.rb +14 -0
- data/lib/ramaze/helper/request_accessor.rb +16 -0
- data/lib/ramaze/helper/sequel.rb +55 -0
- data/lib/ramaze/helper/sequel_form.rb +284 -0
- data/lib/ramaze/helper/simple_captcha.rb +61 -0
- data/lib/ramaze/helper/stack.rb +75 -0
- data/lib/ramaze/helper/tagz.rb +19 -0
- data/lib/ramaze/helper/thread.rb +17 -0
- data/lib/ramaze/helper/ultraviolet.rb +46 -0
- data/lib/ramaze/helper/user.rb +229 -0
- data/lib/ramaze/helper/xhtml.rb +34 -0
- data/lib/ramaze/log.rb +39 -0
- data/lib/ramaze/log/analogger.rb +39 -0
- data/lib/ramaze/log/growl.rb +38 -0
- data/lib/ramaze/log/hub.rb +41 -0
- data/lib/ramaze/log/informer.rb +129 -0
- data/lib/ramaze/log/knotify.rb +28 -0
- data/lib/ramaze/log/logger.rb +26 -0
- data/lib/ramaze/log/logging.rb +83 -0
- data/lib/ramaze/log/rotatinginformer.rb +168 -0
- data/lib/ramaze/log/syslog.rb +51 -0
- data/lib/ramaze/log/xosd.rb +92 -0
- data/lib/ramaze/middleware_compiler.rb +13 -0
- data/lib/ramaze/plugin.rb +69 -0
- data/lib/ramaze/reloader.rb +172 -0
- data/lib/ramaze/reloader/watch_inotify.rb +85 -0
- data/lib/ramaze/reloader/watch_stat.rb +58 -0
- data/lib/ramaze/request.rb +115 -0
- data/lib/ramaze/response.rb +36 -0
- data/lib/ramaze/setup.rb +123 -0
- data/lib/ramaze/snippets.rb +22 -0
- data/lib/ramaze/snippets/array/put_within.rb +44 -0
- data/lib/ramaze/snippets/binding/locals.rb +25 -0
- data/lib/ramaze/snippets/blankslate.rb +7 -0
- data/lib/ramaze/snippets/fiber.rb +63 -0
- data/lib/ramaze/snippets/kernel/pretty_inspect.rb +21 -0
- data/lib/ramaze/snippets/metaid.rb +17 -0
- data/lib/ramaze/snippets/numeric/filesize_format.rb +32 -0
- data/lib/ramaze/snippets/numeric/time.rb +63 -0
- data/lib/ramaze/snippets/object/__dir__.rb +29 -0
- data/lib/ramaze/snippets/object/instance_variable_defined.rb +19 -0
- data/lib/ramaze/snippets/object/pretty.rb +16 -0
- data/lib/ramaze/snippets/object/scope.rb +18 -0
- data/lib/ramaze/snippets/ordered_set.rb +51 -0
- data/lib/ramaze/snippets/proc/locals.rb +19 -0
- data/lib/ramaze/snippets/ramaze/acquire.rb +31 -0
- data/lib/ramaze/snippets/ramaze/deprecated.rb +23 -0
- data/lib/ramaze/snippets/ramaze/dictionary.rb +400 -0
- data/lib/ramaze/snippets/ramaze/fiber.rb +24 -0
- data/lib/ramaze/snippets/ramaze/struct.rb +45 -0
- data/lib/ramaze/snippets/string/camel_case.rb +21 -0
- data/lib/ramaze/snippets/string/color.rb +31 -0
- data/lib/ramaze/snippets/string/end_with.rb +20 -0
- data/lib/ramaze/snippets/string/esc.rb +34 -0
- data/lib/ramaze/snippets/string/ord.rb +21 -0
- data/lib/ramaze/snippets/string/snake_case.rb +21 -0
- data/lib/ramaze/snippets/string/start_with.rb +19 -0
- data/lib/ramaze/snippets/string/unindent.rb +28 -0
- data/lib/ramaze/snippets/thread/into.rb +18 -0
- data/lib/ramaze/spec.rb +33 -0
- data/lib/ramaze/spec/bacon.rb +34 -0
- data/lib/ramaze/spec/helper/bacon.rb +8 -0
- data/lib/ramaze/spec/helper/pretty_output.rb +82 -0
- data/lib/ramaze/spec/helper/snippets.rb +16 -0
- data/lib/ramaze/spec/helper/template_examples.rb +19 -0
- data/lib/ramaze/tool/bin.rb +340 -0
- data/lib/ramaze/tool/create.rb +48 -0
- data/lib/ramaze/tool/project_creator.rb +111 -0
- data/lib/ramaze/version.rb +3 -0
- data/lib/ramaze/view.rb +39 -0
- data/lib/ramaze/view/erubis.rb +23 -0
- data/lib/ramaze/view/ezamar.rb +23 -0
- data/lib/ramaze/view/gestalt.rb +14 -0
- data/lib/ramaze/view/haml.rb +16 -0
- data/lib/ramaze/view/liquid.rb +100 -0
- data/lib/ramaze/view/maruku.rb +15 -0
- data/lib/ramaze/view/nagoro.rb +44 -0
- data/lib/ramaze/view/nagoro/render_partial.rb +32 -0
- data/lib/ramaze/view/redcloth.rb +21 -0
- data/lib/ramaze/view/remarkably.rb +21 -0
- data/lib/ramaze/view/sass.rb +21 -0
- data/lib/ramaze/view/tagz.rb +63 -0
- data/lib/ramaze/view/tenjin.rb +32 -0
- data/lib/vendor/etag.rb +22 -0
- data/lib/vendor/route_exceptions.rb +42 -0
- data/ramaze.gemspec +85 -0
- data/spec/contrib/addressable_route.rb +32 -0
- data/spec/contrib/rest.rb +28 -0
- data/spec/examples/caching.rb +16 -0
- data/spec/examples/css.rb +14 -0
- data/spec/examples/element.rb +15 -0
- data/spec/examples/hello.rb +10 -0
- data/spec/examples/helpers/httpdigest.rb +64 -0
- data/spec/examples/linking.rb +17 -0
- data/spec/examples/simple.rb +40 -0
- data/spec/examples/templates/template_erubis.rb +10 -0
- data/spec/examples/templates/template_ezamar.rb +10 -0
- data/spec/examples/templates/template_haml.rb +10 -0
- data/spec/examples/templates/template_liquid.rb +10 -0
- data/spec/examples/templates/template_markaby.rb +11 -0
- data/spec/examples/templates/template_nagoro.rb +10 -0
- data/spec/examples/templates/template_redcloth.rb +10 -0
- data/spec/examples/templates/template_remarkably.rb +10 -0
- data/spec/examples/templates/template_tenjin.rb +10 -0
- data/spec/helper.rb +9 -0
- data/spec/ramaze/action/render.rb +21 -0
- data/spec/ramaze/action/view/bar.xhtml +1 -0
- data/spec/ramaze/action/view/instancevars/layout.xhtml +1 -0
- data/spec/ramaze/action/view/other_wrapper.erb +1 -0
- data/spec/ramaze/action/view/other_wrapper.xhtml +1 -0
- data/spec/ramaze/action/view/single_wrapper.xhtml +1 -0
- data/spec/ramaze/action/view/sub/sub_wrapper.erb +1 -0
- data/spec/ramaze/action/view/sub/sub_wrapper.xhtml +1 -0
- data/spec/ramaze/app.rb +47 -0
- data/spec/ramaze/bin/ramaze.rb +91 -0
- data/spec/ramaze/cache/localmemcache.rb +49 -0
- data/spec/ramaze/cache/memcache.rb +60 -0
- data/spec/ramaze/cache/sequel.rb +51 -0
- data/spec/ramaze/controller/actionless_templates.rb +36 -0
- data/spec/ramaze/controller/lonely_mapping.rb +16 -0
- data/spec/ramaze/controller/mapping.rb +43 -0
- data/spec/ramaze/controller/provide_inheritance.rb +47 -0
- data/spec/ramaze/controller/resolve.rb +30 -0
- data/spec/ramaze/controller/subclass.rb +36 -0
- data/spec/ramaze/controller/template_resolving.rb +77 -0
- data/spec/ramaze/controller/view/bar.xhtml +1 -0
- data/spec/ramaze/controller/view/base/another.xhtml +1 -0
- data/spec/ramaze/controller/view/greet.xhtml +1 -0
- data/spec/ramaze/controller/view/list.xhtml +1 -0
- data/spec/ramaze/controller/view/other/greet/other.xhtml +1 -0
- data/spec/ramaze/controller/view/other_wrapper.xhtml +1 -0
- data/spec/ramaze/dispatcher/directory.rb +69 -0
- data/spec/ramaze/dispatcher/file.rb +71 -0
- data/spec/ramaze/dispatcher/public/favicon.ico +0 -0
- data/spec/ramaze/dispatcher/public/file name.txt +1 -0
- data/spec/ramaze/dispatcher/public/test_download.css +141 -0
- data/spec/ramaze/error.rb +88 -0
- data/spec/ramaze/files.rb +29 -0
- data/spec/ramaze/files/public_1/plain.txt +1 -0
- data/spec/ramaze/files/public_2/rich.txt +1 -0
- data/spec/ramaze/gestalt.rb +135 -0
- data/spec/ramaze/helper/auth.rb +83 -0
- data/spec/ramaze/helper/bench.rb +18 -0
- data/spec/ramaze/helper/cache.rb +124 -0
- data/spec/ramaze/helper/flash.rb +41 -0
- data/spec/ramaze/helper/form.rb +356 -0
- data/spec/ramaze/helper/formatting.rb +111 -0
- data/spec/ramaze/helper/gestalt.rb +15 -0
- data/spec/ramaze/helper/gravatar.rb +40 -0
- data/spec/ramaze/helper/httpdigest.rb +144 -0
- data/spec/ramaze/helper/layout.rb +79 -0
- data/spec/ramaze/helper/layout/default.xhtml +5 -0
- data/spec/ramaze/helper/link.rb +70 -0
- data/spec/ramaze/helper/localize.rb +62 -0
- data/spec/ramaze/helper/maruku.rb +19 -0
- data/spec/ramaze/helper/pager.rb +96 -0
- data/spec/ramaze/helper/paginate.rb +68 -0
- data/spec/ramaze/helper/request_accessor.rb +19 -0
- data/spec/ramaze/helper/sequel_form.rb +91 -0
- data/spec/ramaze/helper/simple_captcha.rb +45 -0
- data/spec/ramaze/helper/stack.rb +86 -0
- data/spec/ramaze/helper/user.rb +72 -0
- data/spec/ramaze/helper/view/locals.xhtml +1 -0
- data/spec/ramaze/helper/view/loop.xhtml +4 -0
- data/spec/ramaze/helper/view/num.xhtml +1 -0
- data/spec/ramaze/helper/view/partial.xhtml +1 -0
- data/spec/ramaze/helper/view/recursive.xhtml +8 -0
- data/spec/ramaze/helper/view/recursive_local_ivars.xhtml +7 -0
- data/spec/ramaze/helper/view/recursive_locals.xhtml +7 -0
- data/spec/ramaze/helper/view/test_template.xhtml +1 -0
- data/spec/ramaze/helper/xhtml.rb +32 -0
- data/spec/ramaze/log/informer.rb +73 -0
- data/spec/ramaze/log/logging.rb +63 -0
- data/spec/ramaze/log/syslog.rb +73 -0
- data/spec/ramaze/params.rb +153 -0
- data/spec/ramaze/public/favicon.ico +0 -0
- data/spec/ramaze/public/ramaze.png +0 -0
- data/spec/ramaze/public/test_download.css +141 -0
- data/spec/ramaze/request.rb +61 -0
- data/spec/ramaze/rewrite/file.css +1 -0
- data/spec/ramaze/session/memcache.rb +66 -0
- data/spec/ramaze/struct.rb +47 -0
- data/spec/ramaze/template/ramaze/external.test +1 -0
- data/spec/ramaze/view.rb +36 -0
- data/spec/ramaze/view/erubis.rb +73 -0
- data/spec/ramaze/view/erubis/external.rhtml +8 -0
- data/spec/ramaze/view/erubis/sum.rhtml +1 -0
- data/spec/ramaze/view/ezamar.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/gestalt.rb +94 -0
- data/spec/ramaze/view/gestalt/external.ges +8 -0
- data/spec/ramaze/view/haml.rb +86 -0
- data/spec/ramaze/view/haml/external.haml +5 -0
- data/spec/ramaze/view/haml/sum.haml +2 -0
- data/spec/ramaze/view/liquid.rb +73 -0
- data/spec/ramaze/view/liquid/external.liquid +8 -0
- data/spec/ramaze/view/liquid/sum.liquid +1 -0
- data/spec/ramaze/view/nagoro.rb +73 -0
- data/spec/ramaze/view/nagoro/external.nag +8 -0
- data/spec/ramaze/view/nagoro/sum.nag +1 -0
- data/spec/ramaze/view/redcloth.rb +66 -0
- data/spec/ramaze/view/redcloth/external.redcloth +8 -0
- data/spec/ramaze/view/remarkably.rb +49 -0
- data/spec/ramaze/view/remarkably/external.rem +8 -0
- data/spec/ramaze/view/remarkably/sum.rem +1 -0
- data/spec/ramaze/view/sass.rb +73 -0
- data/spec/ramaze/view/sass/file.css.sass +5 -0
- data/spec/ramaze/view/tagz.rb +51 -0
- data/spec/ramaze/view/tagz/external.tagz +8 -0
- data/spec/ramaze/view/tagz/sum.tagz +1 -0
- data/spec/ramaze/view/tenjin.rb +57 -0
- data/spec/ramaze/view/tenjin/external.rbhtml +8 -0
- data/spec/ramaze/view/tenjin/sum.rbhtml +1 -0
- data/spec/snippets/array/put_within.rb +33 -0
- data/spec/snippets/binding/locals.rb +9 -0
- data/spec/snippets/numeric/filesize_format.rb +12 -0
- data/spec/snippets/numeric/time.rb +12 -0
- data/spec/snippets/object/__dir__.rb +14 -0
- data/spec/snippets/ordered_set.rb +63 -0
- data/spec/snippets/ramaze/acquire.rb +77 -0
- data/spec/snippets/ramaze/dictionary.rb +110 -0
- data/spec/snippets/ramaze/struct.rb +12 -0
- data/spec/snippets/string/camel_case.rb +25 -0
- data/spec/snippets/string/color.rb +11 -0
- data/spec/snippets/string/snake_case.rb +24 -0
- data/spec/snippets/string/unindent.rb +43 -0
- data/spec/snippets/thread/into.rb +9 -0
- data/tasks/authors.rake +30 -0
- data/tasks/bacon.rake +66 -0
- data/tasks/changelog.rake +20 -0
- data/tasks/copyright.rake +21 -0
- data/tasks/gem.rake +22 -0
- data/tasks/gem_setup.rake +99 -0
- data/tasks/git.rake +46 -0
- data/tasks/grancher.rake +12 -0
- data/tasks/jquery.rake +15 -0
- data/tasks/manifest.rake +4 -0
- data/tasks/metric_changes.rake +24 -0
- data/tasks/rcov.rake +23 -0
- data/tasks/release.rake +54 -0
- data/tasks/reversion.rake +8 -0
- data/tasks/setup.rake +6 -0
- data/tasks/todo.rake +27 -0
- data/tasks/traits.rake +21 -0
- data/tasks/yard.rake +4 -0
- metadata +720 -0
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'disqus'
|
2
|
+
require 'disqus/view_helpers'
|
3
|
+
|
4
|
+
module Ramaze
|
5
|
+
module Helper
|
6
|
+
|
7
|
+
# Provides shortcuts via Disqus::ViewHelpers.
|
8
|
+
#
|
9
|
+
# Make sure that you set your disqus credentials when using this helper:
|
10
|
+
# Disqus::defaults[:account] = "my_disqus_account"
|
11
|
+
# And optionally, only if you're using the API
|
12
|
+
# Disqus::defaults[:api_key] = "my_disqus_api_key"
|
13
|
+
#
|
14
|
+
# Available methods are:
|
15
|
+
#
|
16
|
+
# disqus_combo
|
17
|
+
# disqus_comment_counts
|
18
|
+
# disqus_popular_threads
|
19
|
+
# disqus_recent_comments
|
20
|
+
# disqus_thread
|
21
|
+
# disqus_top_commenters
|
22
|
+
module Disqus
|
23
|
+
include ::Disqus::ViewHelpers
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
|
2
|
+
# All files in this distribution are subject to the terms of the Ruby license.
|
3
|
+
|
4
|
+
module Ramaze
|
5
|
+
|
6
|
+
# The purpose of this class is to provide an easy way of setting/retrieving
|
7
|
+
# from the current flash.
|
8
|
+
#
|
9
|
+
# Flash is a way to keep a temporary pairs of keys and values for the duration
|
10
|
+
# of two requests, the current and following.
|
11
|
+
#
|
12
|
+
# Very vague Example:
|
13
|
+
#
|
14
|
+
# On the first request, for example on registering:
|
15
|
+
#
|
16
|
+
# flash[:error] = "You should reconsider your username, it's taken already"
|
17
|
+
# redirect R(self, :register)
|
18
|
+
#
|
19
|
+
# This is the request from the redirect:
|
20
|
+
#
|
21
|
+
# do_stuff if flash[:error]
|
22
|
+
#
|
23
|
+
# On the request after this, flash[:error] is gone.
|
24
|
+
|
25
|
+
module Helper
|
26
|
+
module Flash
|
27
|
+
include Innate::Traited
|
28
|
+
|
29
|
+
trait :flashbox => "<div class='flash' id='flash_%key'>%value</div>"
|
30
|
+
|
31
|
+
# answers with Current.session.flash
|
32
|
+
def flash
|
33
|
+
Current.session.flash
|
34
|
+
end
|
35
|
+
|
36
|
+
# Use in your template to display all flash messages that may be stored.
|
37
|
+
# For example, given you stored:
|
38
|
+
#
|
39
|
+
# flash # => { :error => 'Pleae enter your name'
|
40
|
+
# :info => 'Do you see the fnords?' }
|
41
|
+
#
|
42
|
+
# Then a flashbox would display:
|
43
|
+
#
|
44
|
+
# <div class='flash' id='flash_error'>Please enter your name</div>
|
45
|
+
# <div class='flash' id='flash_info'>Do you see the fnords?</div>
|
46
|
+
#
|
47
|
+
# This is designed to be customized permanently or per usage:
|
48
|
+
#
|
49
|
+
# flashbox("<div class='flash_%key'>%value</div>")
|
50
|
+
#
|
51
|
+
# Where any occurrence of %key and %value will be replaced by the actual
|
52
|
+
# contents of each element of flash
|
53
|
+
def flashbox(tag = ancestral_trait[:flashbox])
|
54
|
+
flash.map{|key, *values|
|
55
|
+
values.flatten.map do |value|
|
56
|
+
tag.gsub(/%key/, key.to_s).gsub(/%value/, value.to_s)
|
57
|
+
end
|
58
|
+
}.flatten.join("\n")
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,127 @@
|
|
1
|
+
require 'ramaze/gestalt'
|
2
|
+
|
3
|
+
module Ramaze
|
4
|
+
module Helper
|
5
|
+
module Form
|
6
|
+
def form_text(label, name, value = nil)
|
7
|
+
form_input(label, :type => :text, :name => name, :value => value)
|
8
|
+
end
|
9
|
+
|
10
|
+
def form_checkbox(label, name, checked = false)
|
11
|
+
hash = {:type => :checkbox, :name => name}
|
12
|
+
hash[:checked] = 'checked' if checked
|
13
|
+
form_input(label, hash)
|
14
|
+
end
|
15
|
+
|
16
|
+
def form_password(label, name)
|
17
|
+
form_input(label, :type => :password, :name => name)
|
18
|
+
end
|
19
|
+
|
20
|
+
def form_textarea(label, name, value = nil)
|
21
|
+
form_build(:textarea, label, :name => name){ value }
|
22
|
+
end
|
23
|
+
|
24
|
+
def form_file(label, name)
|
25
|
+
form_input(label, :type => :file, :name => name)
|
26
|
+
end
|
27
|
+
|
28
|
+
def form_hidden(name, value = nil)
|
29
|
+
Ramaze::Gestalt.build{ input(:type => :hidden, :name => name, :value => value) }
|
30
|
+
end
|
31
|
+
|
32
|
+
def form_submit(value = nil)
|
33
|
+
hash = {:type => :submit}.merge(form_tabindex)
|
34
|
+
hash[:value] = value if value
|
35
|
+
Ramaze::Gestalt.build{ tr{ td(:colspan => 2){ input(hash) }}}
|
36
|
+
end
|
37
|
+
|
38
|
+
# @example usage, normal select drop-down
|
39
|
+
#
|
40
|
+
# form_select('Favourite colors', :colors, @colors, :selected => @color)
|
41
|
+
#
|
42
|
+
# @example usage for pre-selected value
|
43
|
+
#
|
44
|
+
# form_select('Favourite colors', :colors, @colors, :selected => @color)
|
45
|
+
#
|
46
|
+
# @example usage, allow selecting multiple
|
47
|
+
#
|
48
|
+
# form_select('Cups', :cups, @cups, :selected => @cup, :multiple => 5)
|
49
|
+
def form_select(label, name, values, hash = {})
|
50
|
+
name = name.to_sym
|
51
|
+
id = "form-#{name}"
|
52
|
+
multiple, size = hash.values_at(:multiple, :size)
|
53
|
+
|
54
|
+
s_args = {:name => name, :id => id}.merge(form_tabindex)
|
55
|
+
s_args[:multiple] = :multiple if multiple
|
56
|
+
s_args[:size] = (size || multiple || 1).to_i
|
57
|
+
|
58
|
+
has_selected, selected = hash.key?(:selected), hash[:selected]
|
59
|
+
error = form_errors[name.to_s]
|
60
|
+
|
61
|
+
g = Ramaze::Gestalt.new
|
62
|
+
g.tr do
|
63
|
+
g.td do
|
64
|
+
g.label(:for => id){ "#{label}:" }
|
65
|
+
g.span(:class => 'error'){ error } if error
|
66
|
+
end
|
67
|
+
g.td do
|
68
|
+
g.select(s_args) do
|
69
|
+
values.each do |key, value|
|
70
|
+
value ||= key
|
71
|
+
o_args = {:value => value}
|
72
|
+
o_args[:selected] = :selected if has_selected and value == selected
|
73
|
+
g.option(o_args){ key }
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
g.to_s
|
80
|
+
end
|
81
|
+
|
82
|
+
def form_input(label, hash)
|
83
|
+
form_build(:input, label, hash)
|
84
|
+
end
|
85
|
+
|
86
|
+
def form_build(tag_name, label, hash, &block)
|
87
|
+
name = hash[:name].to_sym
|
88
|
+
form_id = "form-#{name}"
|
89
|
+
opts = hash.merge(form_tabindex.merge(:id => form_id))
|
90
|
+
error = form_errors[name.to_s]
|
91
|
+
|
92
|
+
Ramaze::Gestalt.build do
|
93
|
+
tr do
|
94
|
+
td do
|
95
|
+
label(:for => form_id){ "#{label}:" }
|
96
|
+
span(:class => "error"){ error } if error
|
97
|
+
end
|
98
|
+
td do
|
99
|
+
tag(tag_name, opts, &block)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def form_tabindex
|
106
|
+
@tabindex ||= 0
|
107
|
+
@tabindex += 1
|
108
|
+
|
109
|
+
{:tabindex => @tabindex}
|
110
|
+
end
|
111
|
+
|
112
|
+
def form_error(name, message)
|
113
|
+
form_errors[name.to_s] = message.to_s
|
114
|
+
end
|
115
|
+
|
116
|
+
def form_errors
|
117
|
+
@form_errors ||= {}
|
118
|
+
end
|
119
|
+
|
120
|
+
def form_errors_from_model(obj)
|
121
|
+
obj.errors.each do |key, value|
|
122
|
+
form_error(key, value.first % key)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
@@ -0,0 +1,189 @@
|
|
1
|
+
# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
|
2
|
+
# All files in this distribution are subject to the terms of the Ruby license.
|
3
|
+
|
4
|
+
module Ramaze
|
5
|
+
module Helper::Formatting
|
6
|
+
module_function
|
7
|
+
|
8
|
+
FORMATTING_NUMBER_COUNTER = { 0 => 'no', 2 => 'two', 3 => 'three',
|
9
|
+
4 => 'four', 5 => 'five', 6 => 'six', 7 => 'seven', 8 => 'eight',
|
10
|
+
9 => 'nine', 10 => 'ten' }
|
11
|
+
|
12
|
+
# Answers with a representation of given +count+ with correct grammar.
|
13
|
+
# If no +items+ argument is given, and the +count+ argument is not 1, then
|
14
|
+
# we first check whether the +item+ argument responds to #pluralize (for
|
15
|
+
# example if you are using Sequel). If this doesn't work we append 's' to
|
16
|
+
# the +item+ argument.
|
17
|
+
#
|
18
|
+
# @example usage
|
19
|
+
# numeric_counter(0, 'comment') # => 'no comments'
|
20
|
+
# numeric_counter(1, 'comment') # => 'one comment'
|
21
|
+
# numeric_counter(2, 'comment') # => '2 comments'
|
22
|
+
|
23
|
+
def number_counter(count, item, items = nil)
|
24
|
+
count, item = count.to_i, item.to_s
|
25
|
+
|
26
|
+
if count == 1
|
27
|
+
"one #{item}"
|
28
|
+
else
|
29
|
+
items ||= item.respond_to?(:pluralize) ? item.pluralize : "#{item}s"
|
30
|
+
prefix = FORMATTING_NUMBER_COUNTER[count] || count
|
31
|
+
"#{prefix} #{items}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# Format a floating number nicely for display.
|
36
|
+
#
|
37
|
+
# Usage:
|
38
|
+
# number_format(123.123) # => '123.123'
|
39
|
+
# number_format(123456.12345) # => '123,456.12345'
|
40
|
+
# number_format(123456.12345, '.') # => '123.456,12345'
|
41
|
+
|
42
|
+
def number_format(n, delimiter = ',')
|
43
|
+
delim_l, delim_r = delimiter == ',' ? %w[, .] : %w[. ,]
|
44
|
+
h, r = n.to_s.split('.')
|
45
|
+
[h.reverse.scan(/\d{1,3}/).join(delim_l).reverse, r].compact.join(delim_r)
|
46
|
+
end
|
47
|
+
|
48
|
+
# Answer with the ordinal version of a number.
|
49
|
+
#
|
50
|
+
# Usage:
|
51
|
+
# ordinal(1) # => "1st"
|
52
|
+
# ordinal(2) # => "2nd"
|
53
|
+
# ordinal(3) # => "3rd"
|
54
|
+
# ordinal(13) # => "13th"
|
55
|
+
# ordinal(33) # => "33rd"
|
56
|
+
# ordinal(100) # => "100th"
|
57
|
+
# ordinal(133) # => "133rd"
|
58
|
+
|
59
|
+
def ordinal(number)
|
60
|
+
number = number.to_i
|
61
|
+
|
62
|
+
case number % 100
|
63
|
+
when 11..13; "#{number}th"
|
64
|
+
else
|
65
|
+
case number % 10
|
66
|
+
when 1; "#{number}st"
|
67
|
+
when 2; "#{number}nd"
|
68
|
+
when 3; "#{number}rd"
|
69
|
+
else "#{number}th"
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
# stolen and adapted from rails
|
75
|
+
def time_diff(from_time, to_time = Time.now, include_seconds = false)
|
76
|
+
distance_in_minutes = (((to_time - from_time).abs)/60).round
|
77
|
+
distance_in_seconds = ((to_time - from_time).abs).round if include_seconds
|
78
|
+
|
79
|
+
case distance_in_minutes
|
80
|
+
when 0..1
|
81
|
+
return (distance_in_minutes == 0) ? 'less than a minute' : '1 minute' unless include_seconds
|
82
|
+
case distance_in_seconds
|
83
|
+
when 0..4 then 'less than 5 seconds'
|
84
|
+
when 5..9 then 'less than 10 seconds'
|
85
|
+
when 10..19 then 'less than 20 seconds'
|
86
|
+
when 20..39 then 'half a minute'
|
87
|
+
when 40..59 then 'less than a minute'
|
88
|
+
else '1 minute'
|
89
|
+
end
|
90
|
+
|
91
|
+
when 2..44 then "#{distance_in_minutes} minutes"
|
92
|
+
when 45..89 then 'about 1 hour'
|
93
|
+
when 90..1439 then "about #{(distance_in_minutes.to_f / 60.0).round} hours"
|
94
|
+
when 1440..2879 then '1 day'
|
95
|
+
when 2880..43199 then "#{(distance_in_minutes / 1440).round} days"
|
96
|
+
when 43200..86399 then 'about 1 month'
|
97
|
+
when 86400..525959 then "#{(distance_in_minutes / 43200).round} months"
|
98
|
+
when 525960..1051919 then 'about 1 year'
|
99
|
+
else "over #{(distance_in_minutes / 525960).round} years"
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
# copied from actionpack
|
104
|
+
AUTO_LINK_RE = %r{
|
105
|
+
( # leading text
|
106
|
+
<\w+.*?>| # leading HTML tag, or
|
107
|
+
[^=!:'"/]| # leading punctuation, or
|
108
|
+
^ # beginning of line
|
109
|
+
)
|
110
|
+
(
|
111
|
+
(?:https?://)| # protocol spec, or
|
112
|
+
(?:www\.) # www.*
|
113
|
+
)
|
114
|
+
(
|
115
|
+
[-\w]+ # subdomain or domain
|
116
|
+
(?:\.[-\w]+)* # remaining subdomains or domain
|
117
|
+
(?::\d+)? # port
|
118
|
+
(?:/(?:(?:[~\w\+@%-]|(?:[,.;:][^\s$])))?)* # path
|
119
|
+
(?:\?[\w\+@%&=.;-]+)? # query string
|
120
|
+
(?:\#[\w\-]*)? # trailing anchor
|
121
|
+
)
|
122
|
+
([[:punct:]]|\s|<|$) # trailing text
|
123
|
+
}x unless defined? AUTO_LINK_RE
|
124
|
+
|
125
|
+
# Turns all urls into clickable links. If a block is given, each url
|
126
|
+
# is yielded and the result is used as the link text.
|
127
|
+
def auto_link(text, opts = {})
|
128
|
+
html_options = ' ' + opts.map{|k,v| "#{k}='#{v}'"}.join(' ') if opts.any?
|
129
|
+
text.gsub(AUTO_LINK_RE) do
|
130
|
+
all, a, b, c, d = $&, $1, $2, $3, $4
|
131
|
+
if a =~ /<a\s/i # don't replace URL's that are already linked
|
132
|
+
all
|
133
|
+
else
|
134
|
+
text = b + c
|
135
|
+
text = yield(text) if block_given?
|
136
|
+
%(#{a}<a href="#{b=="www."?"http://www.":b}#{c}"#{html_options}>#{text}</a>#{d})
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
alias autolink auto_link
|
141
|
+
|
142
|
+
# takes a string and optional argument for outputting compliance HTML
|
143
|
+
# instead of XHTML.
|
144
|
+
# e.g nl2br "a\nb\n\c" #=> 'a<br />b<br />c'
|
145
|
+
|
146
|
+
def nl2br(string, xhtml = true)
|
147
|
+
br = xhtml ? '<br />' : '<br>'
|
148
|
+
string.gsub(/\n/, br)
|
149
|
+
end
|
150
|
+
|
151
|
+
# Maybe port to ruby < 1.8.7 ?
|
152
|
+
def obfuscate_email(email, text = nil)
|
153
|
+
obfuscated = email.to_s.each_byte.map{|c| "&#%03d" % c}.join
|
154
|
+
%(<a href="mailto:#{obfuscated}">#{text || obfuscated}</a>)
|
155
|
+
end
|
156
|
+
|
157
|
+
# Returns Hash with tags as keys and their weight as value.
|
158
|
+
#
|
159
|
+
# Example:
|
160
|
+
# tags = %w[ruby ruby code ramaze]
|
161
|
+
# tagcloud(tags)
|
162
|
+
# # => {"code"=>0.75, "ramaze"=>0.75, "ruby"=>1.0}
|
163
|
+
#
|
164
|
+
# The weight can be influenced by adjusting the +min+ and +max+ parameters,
|
165
|
+
# please make sure that +max+ is larger than +min+ to get meaningful output.
|
166
|
+
#
|
167
|
+
# This is not thought as immediate output to your template but rather to
|
168
|
+
# help either implementing your own algorithm or using the result as input
|
169
|
+
# for your tagcloud.
|
170
|
+
#
|
171
|
+
# Example:
|
172
|
+
# - tagcloud(tags).each do |tag, weight|
|
173
|
+
# - style = "font-size: %0.2fem" % weight
|
174
|
+
# %a{:style => style, :href => Rs(tag)}= h(tag)
|
175
|
+
|
176
|
+
def tagcloud(tags, min = 0.5, max = 1.5)
|
177
|
+
result = {}
|
178
|
+
total = tags.size.to_f
|
179
|
+
diff = max - min
|
180
|
+
|
181
|
+
tags.uniq.each do |tag|
|
182
|
+
count = tags.respond_to?(:count) ? tags.count(tag) : tags.select{|t| t==tag }.size
|
183
|
+
result[tag] = ((count / total) * diff) + min
|
184
|
+
end
|
185
|
+
|
186
|
+
result
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'ramaze/gestalt'
|
2
|
+
|
3
|
+
module Ramaze
|
4
|
+
module Helper
|
5
|
+
module Gestalt
|
6
|
+
CACHE_G = {}
|
7
|
+
|
8
|
+
def gestalt(&block)
|
9
|
+
Ramaze::Gestalt.new(&block)
|
10
|
+
end
|
11
|
+
|
12
|
+
def build(&block)
|
13
|
+
Ramaze::Gestalt.build(&block)
|
14
|
+
end
|
15
|
+
|
16
|
+
def g(meth = nil, view = nil)
|
17
|
+
meth ||= caller[0].slice(/`(.*)'?/).gsub(/[\`\']/, '')
|
18
|
+
view_name = (self.class.to_s.sub('Controller', '') + 'View').split('::')
|
19
|
+
view ||= view_name.inject(Object){ |ns, name| ns.const_get(name) }
|
20
|
+
|
21
|
+
gestalt_class = CACHE_G[view] ||= g_class
|
22
|
+
gestalt = gestalt_class.new
|
23
|
+
gestalt.extend(view)
|
24
|
+
instance_variables.each do |iv|
|
25
|
+
gestalt.instance_variable_set(iv, instance_variable_get(iv))
|
26
|
+
end
|
27
|
+
gestalt.__send__(meth)
|
28
|
+
gestalt.to_s
|
29
|
+
end
|
30
|
+
|
31
|
+
def g_class
|
32
|
+
ancs = self.class.ancestors
|
33
|
+
helpers = Ramaze::Helper.constants.map{ |c| Ramaze::Helper.const_get(c)}
|
34
|
+
our_helpers = ancs & helpers
|
35
|
+
our_helpers.delete(Ramaze::Helper::Gestalt)
|
36
|
+
gestalt_class = Class.new(Ramaze::Gestalt){ include(*our_helpers) }
|
37
|
+
end
|
38
|
+
|
39
|
+
def method_missing(sym, *args, &block)
|
40
|
+
@gestalt ||= gestalt
|
41
|
+
@gestalt.send(sym, *args, &block)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
module Ramaze::Helper::Link; undef :a end
|