middleman-core 3.2.0 → 3.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (241) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +10 -0
  3. data/features/helpers_auto_javascript_include_tag.feature +21 -0
  4. data/features/helpers_auto_stylesheet_link_tag.feature +21 -0
  5. data/features/i18n_builder.feature +23 -13
  6. data/features/i18n_preview.feature +9 -9
  7. data/features/markdown_kramdown.feature +1 -1
  8. data/fixtures/i18n-test-app/source/{layout.erb → layouts/layout.erb} +0 -0
  9. data/fixtures/i18n-test-app/source/{morning.en.html.erb → localizable/morning.en.html.erb} +0 -0
  10. data/fixtures/i18n-test-app/source/{morning.es.html.erb → localizable/morning.es.html.erb} +0 -0
  11. data/fixtures/i18n-test-app/source/{one.en.md → localizable/one.en.md} +0 -0
  12. data/fixtures/i18n-test-app/source/{one.es.md → localizable/one.es.md} +0 -0
  13. data/lib/middleman-core/application.rb +4 -0
  14. data/lib/middleman-core/cli/build.rb +14 -2
  15. data/lib/middleman-core/cli/init.rb +1 -0
  16. data/lib/middleman-core/core_extensions.rb +6 -1
  17. data/lib/middleman-core/core_extensions/file_watcher.rb +1 -0
  18. data/lib/middleman-core/core_extensions/request.rb +2 -4
  19. data/lib/middleman-core/extensions.rb +13 -5
  20. data/lib/middleman-core/meta_pages.rb +25 -11
  21. data/lib/middleman-core/meta_pages/sitemap_resource.rb +2 -2
  22. data/lib/middleman-core/meta_pages/templates/config.html.erb +7 -9
  23. data/lib/middleman-core/meta_pages/templates/index.html.erb +3 -3
  24. data/lib/middleman-core/meta_pages/templates/sitemap.html.erb +6 -6
  25. data/lib/middleman-core/sitemap/extensions/redirects.rb +1 -2
  26. data/lib/middleman-core/sitemap/extensions/request_endpoints.rb +2 -3
  27. data/lib/middleman-core/sitemap/resource.rb +7 -13
  28. data/lib/middleman-core/util.rb +2 -3
  29. data/lib/middleman-core/version.rb +1 -1
  30. data/lib/middleman-more/core_extensions/default_helpers.rb +9 -5
  31. data/lib/middleman-more/core_extensions/i18n.rb +17 -10
  32. data/lib/middleman-more/extensions/{automatic-alt-tags.rb → automatic_alt_tags.rb} +0 -0
  33. data/lib/middleman-more/extensions/gzip.rb +29 -6
  34. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/.document +0 -0
  35. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/.gitignore +0 -0
  36. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/.yardopts +0 -0
  37. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/LICENSE.txt +0 -0
  38. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/README.rdoc +5 -5
  39. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/Rakefile +0 -0
  40. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/bin/padrino +0 -0
  41. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core.rb +4 -10
  42. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/application.rb +39 -35
  43. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/application/flash.rb +7 -7
  44. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/rendering.rb +317 -0
  45. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/application/rendering/extensions/erubis.rb +15 -6
  46. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/application/rendering/extensions/haml.rb +2 -0
  47. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/application/rendering/extensions/slim.rb +0 -0
  48. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/application/routing.rb +406 -368
  49. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/showexceptions.rb +21 -0
  50. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/caller.rb +53 -0
  51. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/cli/adapter.rb +4 -4
  52. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/cli/base.rb +40 -39
  53. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/cli/console.rb +0 -0
  54. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/cli/rake.rb +2 -2
  55. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/cli/rake_tasks.rb +2 -4
  56. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/command.rb +2 -2
  57. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/images/404.png +0 -0
  58. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/images/500.png +0 -0
  59. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/loader.rb +14 -15
  60. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/cs.yml +0 -1
  61. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/da.yml +0 -1
  62. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/de.yml +0 -1
  63. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/en.yml +0 -1
  64. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/es.yml +1 -2
  65. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/fr.yml +2 -3
  66. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/hu.yml +1 -2
  67. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/it.yml +0 -1
  68. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/ja.yml +1 -2
  69. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/lv.yml +0 -1
  70. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/nl.yml +0 -1
  71. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/no.yml +0 -2
  72. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/pl.yml +0 -1
  73. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/pt_br.yml +0 -1
  74. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/ro.yml +0 -1
  75. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/ru.yml +0 -1
  76. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/sv.yml +0 -1
  77. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/tr.yml +0 -1
  78. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/uk.yml +0 -1
  79. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/zh_cn.yml +0 -1
  80. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/zh_tw.yml +0 -1
  81. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/logger.rb +30 -36
  82. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/module.rb +3 -3
  83. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/mounter.rb +59 -59
  84. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/reloader.rb +23 -23
  85. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/router.rb +10 -13
  86. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/server.rb +17 -19
  87. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/support_lite.rb +0 -0
  88. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/tasks.rb +3 -3
  89. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/version.rb +1 -1
  90. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/padrino-core.gemspec +2 -2
  91. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/app_gem/Gemfile +0 -0
  92. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/app_gem/app/app.rb +0 -0
  93. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/app_gem/app_gem.gemspec +0 -0
  94. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/app_gem/lib/app_gem.rb +0 -0
  95. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/app_gem/lib/app_gem/version.rb +0 -0
  96. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/apps/.components +0 -0
  97. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/apps/.gitignore +0 -0
  98. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/apps/complex.rb +0 -0
  99. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/apps/simple.rb +0 -0
  100. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/dependencies/a.rb +0 -0
  101. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/dependencies/b.rb +0 -0
  102. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/dependencies/c.rb +0 -0
  103. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/dependencies/circular/e.rb +0 -0
  104. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/dependencies/circular/f.rb +0 -0
  105. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/dependencies/circular/g.rb +0 -0
  106. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/dependencies/d.rb +0 -0
  107. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/helper.rb +0 -0
  108. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/mini_shoulda.rb +0 -0
  109. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_application.rb +7 -7
  110. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_core.rb +0 -0
  111. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_csrf_protection.rb +0 -0
  112. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_dependencies.rb +0 -0
  113. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_filters.rb +0 -0
  114. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_flash.rb +0 -0
  115. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_locale.rb +0 -0
  116. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_logger.rb +29 -0
  117. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_mounter.rb +0 -0
  118. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_reloader_complex.rb +0 -0
  119. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_reloader_simple.rb +0 -0
  120. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_rendering.rb +15 -2
  121. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_rendering_extensions.rb +14 -0
  122. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_restful_routing.rb +0 -0
  123. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_router.rb +0 -0
  124. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_routing.rb +69 -11
  125. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_support_lite.rb +0 -0
  126. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/.document +0 -0
  127. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/.gitignore +0 -0
  128. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/.yardopts +0 -0
  129. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/LICENSE.txt +0 -0
  130. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/README.rdoc +1 -1
  131. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/Rakefile +0 -0
  132. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers.rb +3 -6
  133. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/asset_tag_helpers.rb +34 -42
  134. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/breadcrumb_helpers.rb +183 -0
  135. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/form_builder/abstract_form_builder.rb +126 -118
  136. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/form_builder/standard_form_builder.rb +6 -9
  137. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/form_helpers.rb +252 -195
  138. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/format_helpers.rb +29 -42
  139. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/cs.yml +14 -14
  140. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/da.yml +1 -1
  141. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/de.yml +1 -1
  142. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/en.yml +16 -16
  143. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/es.yml +16 -16
  144. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/fr.yml +1 -2
  145. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/hu.yml +16 -16
  146. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/it.yml +2 -2
  147. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/ja.yml +16 -16
  148. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/lv.yml +16 -16
  149. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/nl.yml +1 -1
  150. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/no.yml +1 -1
  151. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/pl.yml +7 -7
  152. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/pt_br.yml +16 -16
  153. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/ro.yml +16 -16
  154. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/ru.yml +16 -16
  155. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/sv.yml +16 -16
  156. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/tr.yml +16 -16
  157. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/uk.yml +16 -16
  158. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/zh_cn.yml +16 -16
  159. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/zh_tw.yml +16 -16
  160. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/number_helpers.rb +10 -15
  161. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/output_helpers.rb +50 -58
  162. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/output_helpers/abstract_handler.rb +16 -18
  163. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/output_helpers/erb_handler.rb +11 -12
  164. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/output_helpers/haml_handler.rb +9 -9
  165. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/output_helpers/slim_handler.rb +11 -13
  166. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/render_helpers.rb +5 -6
  167. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/tag_helpers.rb +26 -22
  168. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/translation_helpers.rb +4 -6
  169. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/padrino-helpers.gemspec +0 -0
  170. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/app.rb +7 -3
  171. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/button_to.erb +8 -0
  172. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/button_to.haml +5 -0
  173. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/button_to.slim +6 -0
  174. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/capture_concat.erb +0 -0
  175. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/capture_concat.haml +0 -0
  176. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/capture_concat.slim +0 -0
  177. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/content_for.erb +0 -0
  178. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/content_for.haml +0 -0
  179. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/content_for.slim +0 -0
  180. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/content_tag.erb +0 -0
  181. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/content_tag.haml +0 -0
  182. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/content_tag.slim +0 -0
  183. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/current_engine.erb +0 -0
  184. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/current_engine.haml +0 -0
  185. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/current_engine.slim +0 -0
  186. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/fields_for.erb +0 -0
  187. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/fields_for.haml +0 -0
  188. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/fields_for.slim +0 -0
  189. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/form_for.erb +0 -0
  190. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/form_for.haml +0 -0
  191. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/form_for.slim +0 -0
  192. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/form_tag.erb +9 -0
  193. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/form_tag.haml +8 -0
  194. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/form_tag.slim +9 -0
  195. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/link_to.erb +0 -0
  196. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/link_to.haml +0 -0
  197. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/link_to.slim +0 -0
  198. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/mail_to.erb +0 -0
  199. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/mail_to.haml +0 -0
  200. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/mail_to.slim +0 -0
  201. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/meta_tag.erb +0 -0
  202. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/meta_tag.haml +0 -0
  203. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/meta_tag.slim +0 -0
  204. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/partials/_erb.erb +0 -0
  205. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/partials/_haml.haml +0 -0
  206. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/partials/_slim.slim +0 -0
  207. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/simple_partial.erb +0 -0
  208. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/simple_partial.haml +0 -0
  209. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/simple_partial.slim +0 -0
  210. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/app.rb +1 -0
  211. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/views/current_engine.haml +0 -0
  212. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/views/current_engines/_erb.erb +0 -0
  213. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/views/current_engines/_haml.haml +0 -0
  214. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/views/current_engines/_slim.slim +0 -0
  215. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/views/double_capture_erb.erb +0 -0
  216. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/views/double_capture_haml.haml +0 -0
  217. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/views/double_capture_slim.slim +0 -0
  218. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/views/erb/test.erb +0 -0
  219. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/views/explicit_engine.haml +0 -0
  220. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/views/haml/test.haml +0 -0
  221. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/views/template/_user.haml +0 -0
  222. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/views/template/haml_template.haml +0 -0
  223. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/views/template/some_template.haml +0 -0
  224. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/helper.rb +0 -0
  225. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/test_asset_tag_helpers.rb +9 -3
  226. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_breadcrumb_helpers.rb +134 -0
  227. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/test_form_builder.rb +38 -6
  228. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/test_form_helpers.rb +230 -12
  229. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/test_format_helpers.rb +3 -3
  230. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/test_locale.rb +0 -0
  231. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/test_number_helpers.rb +4 -0
  232. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/test_output_helpers.rb +1 -1
  233. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/test_render_helpers.rb +1 -1
  234. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/test_tag_helpers.rb +3 -3
  235. data/middleman-core.gemspec +7 -8
  236. data/spec/spec_helper.rb +1 -1
  237. metadata +220 -215
  238. data/lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/application/rendering.rb +0 -320
  239. data/lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/application/showexceptions.rb +0 -20
  240. data/lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/caller.rb +0 -53
  241. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/lib/padrino-helpers/breadcrumb_helpers.rb +0 -171
@@ -0,0 +1,183 @@
1
+ module Padrino
2
+ module Helpers
3
+ class Breadcrumb
4
+ attr_accessor :home, :items
5
+
6
+ DEFAULT_URL = "/"
7
+ DEFAULT_CAPTION ="Home Page"
8
+
9
+ ##
10
+ # Initialize breadcrumbs with default value.
11
+ #
12
+ # @example
13
+ # before do
14
+ # @breadcrumbs = breadcrumbs.new
15
+ # end
16
+ #
17
+ def initialize
18
+ reset!
19
+ end
20
+
21
+ ##
22
+ # Set the custom home (Parent) link.
23
+ #
24
+ # @param [String] url
25
+ # The url href.
26
+ #
27
+ # @param [String] caption
28
+ # The text caption.
29
+ #
30
+ # @param [Hash] options
31
+ # The HTML options to include in li.
32
+ #
33
+ # @example
34
+ # breadcrumbs.set_home "/HomeFoo", "Foo Home", :id => "home-breadcrumb"
35
+ #
36
+ def set_home(url, caption, options = {})
37
+ self.home = {
38
+ :url => url.to_s,
39
+ :caption => caption.to_s.humanize.html_safe,
40
+ :name => :home,
41
+ :options => options
42
+ }
43
+ reset
44
+ end
45
+
46
+ ##
47
+ # Reset breadcrumbs to default or personal home.
48
+ #
49
+ # @example
50
+ # breadcrumbs.reset
51
+ #
52
+ def reset
53
+ self.items = []
54
+ self.items << home
55
+ end
56
+
57
+ ##
58
+ # Reset breadcrumbs to default home.
59
+ #
60
+ # @example
61
+ # breadcrumbs.reset!
62
+ #
63
+ def reset!
64
+ self.home = {
65
+ :name => :home,
66
+ :url => DEFAULT_URL,
67
+ :caption => DEFAULT_CAPTION,
68
+ :options => {}
69
+ }
70
+ reset
71
+ end
72
+
73
+ ##
74
+ # Add a new breadcrumbs.
75
+ #
76
+ # @param [String] name
77
+ # The name of resource.
78
+ # @param [Symbol] name
79
+ # The name of resource.
80
+ #
81
+ # @param [String] url
82
+ # The url href.
83
+ #
84
+ # @param [String] caption
85
+ # The text caption.
86
+ #
87
+ # @param [Hash] options
88
+ # The HTML options to include in li.
89
+ #
90
+ # @example
91
+ # breadcrumbs.add "foo", "/foo", "Foo Link", :id => "foo-id"
92
+ # breadcrumbs.add :foo, "/foo", "Foo Link", :class => "foo-class"
93
+ #
94
+ def add(name, url, caption, options = {})
95
+ items << {
96
+ :name => name.to_sym,
97
+ :url => url.to_s,
98
+ :caption => caption.to_s.humanize.html_safe,
99
+ :options => options
100
+ }
101
+ end
102
+ alias :<< :add
103
+
104
+ ##
105
+ # Remove a breadcrumb.
106
+ #
107
+ # @param [String] name
108
+ # The name of resource to delete from breadcrumbs list.
109
+ #
110
+ # @example
111
+ # breadcrumbs.del "foo"
112
+ # breadcrumbs.del :foo
113
+ #
114
+ def del(name)
115
+ items.delete_if { |item| item[:name] == name.to_sym }
116
+ end
117
+ end
118
+
119
+ module Breadcrumbs
120
+ ##
121
+ # Render breadcrumbs to view.
122
+ #
123
+ # @param [Breadcrumbs] breadcrumbs
124
+ # The breadcrumbs to render into view.
125
+ #
126
+ # @param [Boolean] bootstrap
127
+ # If true, render separation (useful with Twitter Bootstrap).
128
+ #
129
+ # @param [String] active
130
+ # CSS class style set to active breadcrumb.
131
+ #
132
+ # @param [Hash] options
133
+ # The HTML options to include in ul.
134
+ #
135
+ # @return [String] Unordered list with breadcrumbs
136
+ #
137
+ # @example
138
+ # = breadcrumbs @breacrumbs
139
+ # # Generates:
140
+ # # <ul>
141
+ # # <li><a href="/foo">Foo Link</a></li>
142
+ # # <li class="active"><a href="/bar">Bar Link</a></li>
143
+ # # </ul>
144
+ #
145
+ def breadcrumbs(breadcrumbs, bootstrap = false, active = "active", options = {})
146
+ content = ""
147
+ breadcrumbs.items[0..-2].each do |item|
148
+ content << render_item(item, bootstrap)
149
+ end
150
+ last = breadcrumbs.items.last
151
+ last_options = last[:options]
152
+ last = link_to(last[:caption], last[:url])
153
+
154
+ classes = [options[:class], last_options[:class]].map { |class_name| class_name.to_s.split(/\s/) }
155
+ classes[0] << "breadcrumb"
156
+ classes[1] << active if active
157
+ options[:class], last_options[:class] = classes.map { |class_name| class_name * " " }
158
+
159
+ content << safe_content_tag(:li, last, last_options)
160
+ safe_content_tag(:ul, content, options)
161
+ end
162
+
163
+ private
164
+ ##
165
+ # Private method to return list item.
166
+ #
167
+ # @param [Hash] item
168
+ # The breadcrumb item.
169
+ #
170
+ # @param [Boolean] bootstrap
171
+ # If true, render separation (useful with Twitter Bootstrap).
172
+ #
173
+ # @return [String] List item with breadcrumb
174
+ #
175
+ def render_item(item, bootstrap)
176
+ content = ""
177
+ content << link_to(item[:caption], item[:url])
178
+ content << safe_content_tag(:span, "/", :class => "divider") if bootstrap
179
+ safe_content_tag(:li, content, item[:options])
180
+ end
181
+ end
182
+ end
183
+ end
@@ -1,8 +1,8 @@
1
1
  module Padrino
2
2
  module Helpers
3
- module FormBuilder # @private
4
- class AbstractFormBuilder # @private
5
- attr_accessor :template, :object
3
+ module FormBuilder
4
+ class AbstractFormBuilder
5
+ attr_accessor :template, :object, :multipart
6
6
 
7
7
  def initialize(template, object, options={})
8
8
  @template = template
@@ -12,37 +12,32 @@ module Padrino
12
12
  raise "FormBuilder object must not be a nil value. If there's no object, use a symbol instead! (i.e :user)" unless object
13
13
  end
14
14
 
15
- # f.error_messages
16
15
  def error_messages(*params)
17
16
  params.unshift object
18
17
  @template.error_messages_for(*params)
19
18
  end
20
19
 
21
- # f.error_message_on(field)
22
20
  def error_message_on(field, options={})
23
21
  @template.error_message_on(object, field, options)
24
22
  end
25
23
 
26
- # f.label :username, :caption => "Nickname"
27
24
  def label(field, options={}, &block)
28
25
  options.reverse_merge!(:caption => "#{field_human_name(field)}: ")
29
26
  @template.label_tag(field_id(field), options, &block)
30
27
  end
31
28
 
32
- # f.hidden_field :session_id, :value => "45"
33
29
  def hidden_field(field, options={})
34
30
  options.reverse_merge!(:value => field_value(field), :id => field_id(field))
35
31
  @template.hidden_field_tag field_name(field), options
36
32
  end
37
33
 
38
- # f.text_field :username, :value => "(blank)", :id => 'username'
39
34
  def text_field(field, options={})
40
35
  options.reverse_merge!(:value => field_value(field), :id => field_id(field))
41
36
  options.merge!(:class => field_error(field, options))
42
37
  @template.text_field_tag field_name(field), options
43
38
  end
44
39
 
45
- def number_field(field, options={})
40
+ def number_field(field, options={})
46
41
  options.reverse_merge!(:value => field_value(field), :id => field_id(field))
47
42
  options.merge!(:class => field_error(field, options))
48
43
  @template.number_field_tag field_name(field), options
@@ -73,35 +68,28 @@ module Padrino
73
68
  @template.url_field_tag field_name(field), options
74
69
  end
75
70
 
76
- # f.text_area :summary, :value => "(enter summary)", :id => 'summary'
77
71
  def text_area(field, options={})
78
72
  options.reverse_merge!(:value => field_value(field), :id => field_id(field))
79
73
  options.merge!(:class => field_error(field, options))
80
74
  @template.text_area_tag field_name(field), options
81
75
  end
82
76
 
83
- # f.password_field :password, :id => 'password'
84
77
  def password_field(field, options={})
85
78
  options.reverse_merge!(:value => field_value(field), :id => field_id(field))
86
79
  options.merge!(:class => field_error(field, options))
87
80
  @template.password_field_tag field_name(field), options
88
81
  end
89
82
 
90
- # f.select :color, :options => ['red', 'green'], :include_blank => true
91
- # f.select :color, :collection => @colors, :fields => [:name, :id]
92
83
  def select(field, options={})
93
84
  options.reverse_merge!(:id => field_id(field), :selected => field_value(field))
94
85
  options.merge!(:class => field_error(field, options))
95
86
  @template.select_tag field_name(field), options
96
87
  end
97
88
 
98
- # f.check_box_group :color, :options => ['red', 'green', 'blue'], :selected => ['red', 'blue']
99
- # f.check_box_group :color, :collection => @colors, :fields => [:name, :id]
100
89
  def check_box_group(field, options={})
101
90
  selected_values = Array(options[:selected] || field_value(field))
102
91
  if options[:collection]
103
92
  fields = options[:fields] || [:name, :id]
104
- # don't use map!, it will break some orms
105
93
  selected_values = selected_values.map{ |v| (v.respond_to?(fields[0]) ? v.send(fields[1]) : v).to_s }
106
94
  end
107
95
  labeled_group( field, options ) do |variant|
@@ -109,8 +97,6 @@ module Padrino
109
97
  end
110
98
  end
111
99
 
112
- # f.radio_button_group :color, :options => ['red', 'green']
113
- # f.radio_button_group :color, :collection => @colors, :fields => [:name, :id], :selected => @colors.first
114
100
  def radio_button_group(field, options={})
115
101
  fields = options[:fields] || [:name, :id]
116
102
  selected_value = options[:selected] || field_value(field)
@@ -120,7 +106,6 @@ module Padrino
120
106
  end
121
107
  end
122
108
 
123
- # f.check_box :remember_me, :value => 'true', :uncheck_value => '0'
124
109
  def check_box(field, options={})
125
110
  html = ActiveSupport::SafeBuffer.new
126
111
  unchecked_value = options.delete(:uncheck_value) || '0'
@@ -130,31 +115,31 @@ module Padrino
130
115
  html << @template.check_box_tag(field_name(field), options)
131
116
  end
132
117
 
133
- # f.radio_button :gender, :value => 'male'
134
118
  def radio_button(field, options={})
135
119
  options.reverse_merge!(:id => field_id(field, options[:value]))
136
120
  options.reverse_merge!(:checked => true) if values_matches_field?(field, options[:value])
137
121
  @template.radio_button_tag field_name(field), options
138
122
  end
139
123
 
140
- # f.file_field :photo, :class => 'avatar'
141
124
  def file_field(field, options={})
125
+ self.multipart = true
142
126
  options.reverse_merge!(:id => field_id(field))
143
127
  options.merge!(:class => field_error(field, options))
144
128
  @template.file_field_tag field_name(field), options
145
129
  end
146
130
 
147
- # f.submit "Update", :class => 'large'
148
- def submit(caption="Submit", options={})
131
+ def submit(*args)
132
+ options = args[-1].is_a?(Hash) ? args.pop : {}
133
+ caption = args.length >= 1 ? args.shift : "Submit"
149
134
  @template.submit_tag caption, options
150
135
  end
151
136
 
152
- # f.image_submit "buttons/submit.png", :class => 'large'
153
137
  def image_submit(source, options={})
154
138
  @template.image_submit_tag source, options
155
139
  end
156
140
 
157
- # Supports nested fields for a child model within a form
141
+ ##
142
+ # Supports nested fields for a child model within a form.
158
143
  # f.fields_for :addresses
159
144
  # f.fields_for :addresses, address
160
145
  # f.fields_for :addresses, @addresses
@@ -163,7 +148,7 @@ module Padrino
163
148
  include_index = default_collection.respond_to?(:each)
164
149
  nested_options = { :parent => self, :association => child_association }
165
150
  nested_objects = instance_or_collection ? Array(instance_or_collection) : Array(default_collection)
166
- result = nested_objects.each_with_index.map do |child_instance, index|
151
+ nested_objects.each_with_index.map do |child_instance, index|
167
152
  nested_options[:index] = include_index ? index : nil
168
153
  @template.fields_for(child_instance, { :nested => nested_options }, &block)
169
154
  end.join("\n").html_safe
@@ -174,110 +159,133 @@ module Padrino
174
159
  end
175
160
 
176
161
  protected
177
- # Returns the known field types for a formbuilder
178
- def self.field_types
179
- [:hidden_field, :text_field, :text_area, :password_field, :file_field, :radio_button, :check_box, :select]
180
- end
162
+ # Returns the known field types for a Formbuilder.
163
+ def self.field_types
164
+ [:hidden_field, :text_field, :text_area, :password_field, :file_field, :radio_button, :check_box, :select]
165
+ end
181
166
 
182
- # Returns true if the value matches the value in the field
183
- # field_has_value?(:gender, 'male')
184
- def values_matches_field?(field, value)
185
- value.present? && (field_value(field).to_s == value.to_s || field_value(field).to_s == 'true')
186
- end
167
+ ##
168
+ # Returns true if the value matches the value in the field.
169
+ # field_has_value?(:gender, 'male')
170
+ def values_matches_field?(field, value)
171
+ value.present? && (field_value(field).to_s == value.to_s || field_value(field).to_s == 'true')
172
+ end
187
173
 
188
- # Add a :invalid css class to the field if it contain an error
189
- def field_error(field, options)
190
- error = @object.errors[field] rescue nil
191
- error.blank? ? options[:class] : [options[:class], :invalid].flatten.compact.join(" ")
192
- end
174
+ ##
175
+ # Add a :invalid css class to the field if it contain an error.
176
+ #
177
+ def field_error(field, options)
178
+ error = @object.errors[field] rescue nil
179
+ error.blank? ? options[:class] : [options[:class], :invalid].flatten.compact.join(" ")
180
+ end
193
181
 
194
- # Returns the human name of the field. Look that use builtin I18n.
195
- def field_human_name(field)
196
- I18n.translate("#{object_model_name}.attributes.#{field}", :count => 1, :default => field.to_s.humanize, :scope => :models)
197
- end
182
+ ##
183
+ # Returns the human name of the field. Look that use builtin I18n.
184
+ #
185
+ def field_human_name(field)
186
+ I18n.translate("#{object_model_name}.attributes.#{field}", :count => 1, :default => field.to_s.humanize, :scope => :models)
187
+ end
198
188
 
199
- # Returns the name for the given field
200
- # field_name(:username) => "user[username]"
201
- # field_name(:number) => "user[telephone_attributes][number]"
202
- # field_name(:street) => "user[addresses_attributes][0][street]"
203
- def field_name(field=nil)
204
- result = field_result
205
- result << field_name_fragment if nested_form?
206
- result << "[#{field}]" unless field.blank?
207
- result.flatten.join
208
- end
189
+ ##
190
+ # Returns the name for the given field.
191
+ # field_name(:username) => "user[username]"
192
+ # field_name(:number) => "user[telephone_attributes][number]"
193
+ # field_name(:street) => "user[addresses_attributes][0][street]"
194
+ def field_name(field=nil)
195
+ result = field_result
196
+ result << field_name_fragment if nested_form?
197
+ result << "[#{field}]" unless field.blank?
198
+ result.flatten.join
199
+ end
209
200
 
210
- # Returns the id for the given field
211
- # field_id(:username) => "user_username"
212
- # field_id(:gender, :male) => "user_gender_male"
213
- # field_name(:number) => "user_telephone_attributes_number"
214
- # field_name(:street) => "user_addresses_attributes_0_street"
215
- def field_id(field=nil, value=nil)
216
- result = field_result
217
- result << field_id_fragment if nested_form?
218
- result << "_#{field}" unless field.blank?
219
- result << "_#{value}" unless value.blank?
220
- result.flatten.join
221
- end
201
+ ##
202
+ # Returns the id for the given field.
203
+ # field_id(:username) => "user_username"
204
+ # field_id(:gender, :male) => "user_gender_male"
205
+ # field_name(:number) => "user_telephone_attributes_number"
206
+ # field_name(:street) => "user_addresses_attributes_0_street"
207
+ def field_id(field=nil, value=nil)
208
+ result = []
209
+ result << "#{@options[:namespace]}_" if @options[:namespace] && root_form?
210
+ result << field_result
211
+ result << field_id_fragment if nested_form?
212
+ result << "_#{field}" unless field.blank?
213
+ result << "_#{value}" unless value.blank?
214
+ result.flatten.join
215
+ end
222
216
 
223
- # Returns the child object if it exists
224
- def nested_object_id
225
- nested_form? && object.respond_to?(:new_record?) && !object.new_record? && object.id
226
- end
217
+ ##
218
+ # Returns the child object if it exists.
219
+ #
220
+ def nested_object_id
221
+ nested_form? && object.respond_to?(:new_record?) && !object.new_record? && object.id
222
+ end
227
223
 
228
- # Returns true if this form object is nested in a parent form
229
- def nested_form?
230
- @options[:nested] && @options[:nested][:parent] && @options[:nested][:parent].respond_to?(:object)
231
- end
224
+ ##
225
+ # Returns true if this form object is nested in a parent form.
226
+ #
227
+ def nested_form?
228
+ @options[:nested] && @options[:nested][:parent] && @options[:nested][:parent].respond_to?(:object)
229
+ end
232
230
 
233
- # Returns the value for the object's field
234
- # field_value(:username) => "Joey"
235
- def field_value(field)
236
- @object && @object.respond_to?(field) ? @object.send(field) : ""
237
- end
231
+ ##
232
+ # Returns the value for the object's field.
233
+ #
234
+ def field_value(field)
235
+ @object && @object.respond_to?(field) ? @object.send(field) : ""
236
+ end
238
237
 
239
- # explicit_object is either a symbol or a record
240
- # Returns a new record of the type specified in the object
241
- def build_object(object_or_symbol)
242
- object_or_symbol.is_a?(Symbol) ? @template.instance_variable_get("@#{object_or_symbol}") || object_class(object_or_symbol).new : object_or_symbol
243
- end
238
+ ##
239
+ # Returns a new record of the type specified in the object
240
+ #
241
+ def build_object(object_or_symbol)
242
+ object_or_symbol.is_a?(Symbol) ? @template.instance_variable_get("@#{object_or_symbol}") || object_class(object_or_symbol).new : object_or_symbol
243
+ end
244
244
 
245
- # Returns the object's models name
246
- # => user_assignment
247
- def object_model_name(explicit_object=object)
248
- explicit_object.is_a?(Symbol) ? explicit_object : explicit_object.class.to_s.underscore.gsub(/\//, '_')
249
- end
245
+ ##
246
+ # Returns the object's models name.
247
+ #
248
+ def object_model_name(explicit_object=object)
249
+ explicit_object.is_a?(Symbol) ? explicit_object : explicit_object.class.to_s.underscore.gsub(/\//, '_')
250
+ end
250
251
 
251
- # Returns the class type for the given object
252
- def object_class(explicit_object)
253
- explicit_object.is_a?(Symbol) ? explicit_object.to_s.camelize.constantize : explicit_object.class
254
- end
252
+ ##
253
+ # Returns the class type for the given object.
254
+ #
255
+ def object_class(explicit_object)
256
+ explicit_object.is_a?(Symbol) ? explicit_object.to_s.camelize.constantize : explicit_object.class
257
+ end
255
258
 
256
- # Returns true if this form is the top-level (not nested)
257
- def root_form?
258
- !nested_form?
259
- end
259
+ ##
260
+ # Returns true if this form is the top-level (not nested).
261
+ #
262
+ def root_form?
263
+ !nested_form?
264
+ end
260
265
 
261
- # Builds a group of labels for radios or checkboxes
262
- def labeled_group(field, options={})
263
- options.reverse_merge!(:id => field_id(field), :selected => field_value(field))
264
- options.merge!(:class => field_error(field, options))
265
- variants = case
266
- when options[:options]
267
- options[:options].map{ |caption, value| [caption.to_s, (value||caption).to_s] }
268
- when options[:collection]
269
- fields = options[:fields] || [:name, :id]
270
- options[:collection].map{ |variant| [variant.send(fields.first).to_s, variant.send(fields.last).to_s] }
271
- else
272
- []
273
- end
274
- variants.inject(''.html_safe) do |html, variant|
275
- variant[2] = "#{field_id(field)}_#{variant[1]}"
276
- html << @template.label_tag("#{field_name(field)}[]", :for => variant[2], :caption => "#{yield(variant)} #{variant[0]}")
277
- end
266
+ ##
267
+ # Builds a group of labels for radios or checkboxes.
268
+ #
269
+ def labeled_group(field, options={})
270
+ options.reverse_merge!(:id => field_id(field), :selected => field_value(field))
271
+ options.merge!(:class => field_error(field, options))
272
+ variants = case
273
+ when options[:options]
274
+ options[:options].map{ |caption, value| [caption.to_s, (value||caption).to_s] }
275
+ when options[:collection]
276
+ fields = options[:fields] || [:name, :id]
277
+ options[:collection].map{ |variant| [variant.send(fields.first).to_s, variant.send(fields.last).to_s] }
278
+ else
279
+ []
280
+ end
281
+ variants.inject(''.html_safe) do |html, variant|
282
+ variant[2] = "#{field_id(field)}_#{variant[1]}"
283
+ html << @template.label_tag("#{field_name(field)}[]", :for => variant[2], :caption => "#{yield(variant)} #{variant[0]}")
278
284
  end
285
+ end
279
286
 
280
287
  private
288
+
281
289
  def field_result
282
290
  result = []
283
291
  result << object_model_name if root_form?
@@ -303,7 +311,7 @@ module Padrino
303
311
  :attributes_name => "#{@options[:nested][:association]}_attributes"
304
312
  }
305
313
  end
306
- end # AbstractFormBuilder
307
- end # FormBuilder
308
- end # Helpers
309
- end # Padrino
314
+ end
315
+ end
316
+ end
317
+ end