middleman 2.0.7 → 2.0.8

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.
Files changed (190) hide show
  1. data/.gitignore +1 -0
  2. data/.travis.yml +0 -1
  3. data/CHANGELOG +8 -0
  4. data/Gemfile +1 -1
  5. data/features/data.feature +6 -1
  6. data/features/markdown.feature +7 -0
  7. data/features/sprockets.feature +11 -1
  8. data/features/sprockets_gems.feature +3 -3
  9. data/fixtures/sprockets-app/source/jquery_include.js +1 -0
  10. data/fixtures/test-app/config.rb +2 -0
  11. data/fixtures/test-app/source/data2.html.liquid +1 -0
  12. data/fixtures/test-app/source/javascripts/multiple_engines.js.coffee.erb +1 -0
  13. data/fixtures/test-app/source/markdown.html.markdown +1 -0
  14. data/lib/middleman.rb +0 -6
  15. data/lib/middleman/base.rb +6 -1
  16. data/lib/middleman/builder.rb +6 -4
  17. data/lib/middleman/core_extensions/data.rb +35 -5
  18. data/lib/middleman/core_extensions/front_matter.rb +9 -2
  19. data/lib/middleman/core_extensions/sprockets.rb +25 -1
  20. data/lib/middleman/renderers/markdown.rb +25 -2
  21. data/lib/middleman/version.rb +1 -1
  22. data/middleman.gemspec +7 -6
  23. metadata +112 -251
  24. data/lib/middleman/vendor/padrino-core-0.10.0/.document +0 -5
  25. data/lib/middleman/vendor/padrino-core-0.10.0/.gitignore +0 -22
  26. data/lib/middleman/vendor/padrino-core-0.10.0/LICENSE +0 -20
  27. data/lib/middleman/vendor/padrino-core-0.10.0/README.rdoc +0 -294
  28. data/lib/middleman/vendor/padrino-core-0.10.0/Rakefile +0 -5
  29. data/lib/middleman/vendor/padrino-core-0.10.0/bin/padrino +0 -9
  30. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core.rb +0 -119
  31. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/application.rb +0 -259
  32. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/application/rendering.rb +0 -228
  33. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/application/routing.rb +0 -821
  34. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/application/showexceptions.rb +0 -18
  35. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/caller.rb +0 -45
  36. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/cli/adapter.rb +0 -24
  37. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/cli/base.rb +0 -152
  38. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/cli/console.rb +0 -20
  39. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/cli/rake.rb +0 -24
  40. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/cli/rake_tasks.rb +0 -59
  41. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/command.rb +0 -27
  42. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/images/404.png +0 -0
  43. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/images/500.png +0 -0
  44. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/loader.rb +0 -182
  45. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/cz.yml +0 -30
  46. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/da.yml +0 -30
  47. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/de.yml +0 -30
  48. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/en.yml +0 -30
  49. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/es.yml +0 -30
  50. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/fr.yml +0 -30
  51. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/hu.yml +0 -30
  52. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/it.yml +0 -37
  53. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/ja.yml +0 -30
  54. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/nl.yml +0 -30
  55. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/no.yml +0 -31
  56. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/pl.yml +0 -30
  57. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/pt_br.yml +0 -37
  58. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/ru.yml +0 -30
  59. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/tr.yml +0 -30
  60. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/uk.yml +0 -30
  61. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/zh_cn.yml +0 -30
  62. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/zh_tw.yml +0 -30
  63. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/logger.rb +0 -344
  64. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/mounter.rb +0 -192
  65. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/reloader.rb +0 -247
  66. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/router.rb +0 -79
  67. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/server.rb +0 -70
  68. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/support_lite.rb +0 -135
  69. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/tasks.rb +0 -23
  70. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/version.rb +0 -15
  71. data/lib/middleman/vendor/padrino-core-0.10.0/padrino-core.gemspec +0 -38
  72. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/apps/.components +0 -6
  73. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/apps/.gitignore +0 -7
  74. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/apps/complex.rb +0 -27
  75. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/apps/simple.rb +0 -33
  76. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/a.rb +0 -9
  77. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/b.rb +0 -4
  78. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/c.rb +0 -1
  79. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/circular/e.rb +0 -13
  80. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/circular/f.rb +0 -2
  81. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/circular/g.rb +0 -2
  82. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/d.rb +0 -4
  83. data/lib/middleman/vendor/padrino-core-0.10.0/test/helper.rb +0 -101
  84. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_application.rb +0 -83
  85. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_core.rb +0 -79
  86. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_dependencies.rb +0 -44
  87. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_filters.rb +0 -266
  88. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_logger.rb +0 -91
  89. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_mounter.rb +0 -176
  90. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_reloader_complex.rb +0 -66
  91. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_reloader_simple.rb +0 -97
  92. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_rendering.rb +0 -437
  93. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_router.rb +0 -146
  94. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_routing.rb +0 -1491
  95. data/lib/middleman/vendor/padrino-helpers-0.10.0/.document +0 -5
  96. data/lib/middleman/vendor/padrino-helpers-0.10.0/.gitignore +0 -21
  97. data/lib/middleman/vendor/padrino-helpers-0.10.0/LICENSE +0 -20
  98. data/lib/middleman/vendor/padrino-helpers-0.10.0/README.rdoc +0 -239
  99. data/lib/middleman/vendor/padrino-helpers-0.10.0/Rakefile +0 -5
  100. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers.rb +0 -51
  101. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/asset_tag_helpers.rb +0 -288
  102. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/form_builder/abstract_form_builder.rb +0 -220
  103. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/form_builder/standard_form_builder.rb +0 -43
  104. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/form_helpers.rb +0 -446
  105. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/format_helpers.rb +0 -260
  106. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/cz.yml +0 -103
  107. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/da.yml +0 -91
  108. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/de.yml +0 -78
  109. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/en.yml +0 -103
  110. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/es.yml +0 -103
  111. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/fr.yml +0 -79
  112. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/hu.yml +0 -103
  113. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/it.yml +0 -85
  114. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/ja.yml +0 -103
  115. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/nl.yml +0 -78
  116. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/no.yml +0 -91
  117. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/pl.yml +0 -95
  118. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/pt_br.yml +0 -103
  119. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/ru.yml +0 -103
  120. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/tr.yml +0 -103
  121. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/uk.yml +0 -103
  122. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/zh_cn.yml +0 -103
  123. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/zh_tw.yml +0 -103
  124. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/number_helpers.rb +0 -273
  125. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/output_helpers.rb +0 -128
  126. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/output_helpers/abstract_handler.rb +0 -103
  127. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/output_helpers/erb_handler.rb +0 -79
  128. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/output_helpers/haml_handler.rb +0 -64
  129. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/output_helpers/slim_handler.rb +0 -82
  130. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/render_helpers.rb +0 -40
  131. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/tag_helpers.rb +0 -59
  132. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/translation_helpers.rb +0 -21
  133. data/lib/middleman/vendor/padrino-helpers-0.10.0/padrino-helpers.gemspec +0 -27
  134. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/app.rb +0 -73
  135. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/capture_concat.erb +0 -14
  136. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/capture_concat.haml +0 -12
  137. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/capture_concat.slim +0 -13
  138. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/content_for.erb +0 -11
  139. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/content_for.haml +0 -9
  140. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/content_for.slim +0 -9
  141. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/content_tag.erb +0 -11
  142. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/content_tag.haml +0 -9
  143. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/content_tag.slim +0 -9
  144. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/current_engine.erb +0 -5
  145. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/current_engine.haml +0 -5
  146. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/current_engine.slim +0 -5
  147. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/fields_for.erb +0 -20
  148. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/fields_for.haml +0 -15
  149. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/fields_for.slim +0 -15
  150. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/form_for.erb +0 -56
  151. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/form_for.haml +0 -47
  152. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/form_for.slim +0 -47
  153. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/form_tag.erb +0 -56
  154. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/form_tag.haml +0 -45
  155. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/form_tag.slim +0 -45
  156. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/link_to.erb +0 -5
  157. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/link_to.haml +0 -4
  158. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/link_to.slim +0 -4
  159. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/mail_to.erb +0 -3
  160. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/mail_to.haml +0 -3
  161. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/mail_to.slim +0 -3
  162. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/meta_tag.erb +0 -3
  163. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/meta_tag.haml +0 -3
  164. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/meta_tag.slim +0 -3
  165. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/partials/_erb.erb +0 -1
  166. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/partials/_haml.haml +0 -1
  167. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/partials/_slim.slim +0 -1
  168. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/simple_partial.erb +0 -1
  169. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/simple_partial.haml +0 -1
  170. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/simple_partial.slim +0 -1
  171. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/app.rb +0 -45
  172. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/current_engine.haml +0 -5
  173. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/current_engines/_erb.erb +0 -1
  174. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/current_engines/_haml.haml +0 -1
  175. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/current_engines/_slim.slim +0 -1
  176. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/erb/test.erb +0 -1
  177. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/explicit_engine.haml +0 -5
  178. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/haml/test.haml +0 -1
  179. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/template/_user.haml +0 -7
  180. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/template/haml_template.haml +0 -1
  181. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/template/some_template.haml +0 -2
  182. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/helper.rb +0 -78
  183. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_asset_tag_helpers.rb +0 -320
  184. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_form_builder.rb +0 -998
  185. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_form_helpers.rb +0 -645
  186. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_format_helpers.rb +0 -227
  187. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_number_helpers.rb +0 -136
  188. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_output_helpers.rb +0 -133
  189. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_render_helpers.rb +0 -69
  190. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_tag_helpers.rb +0 -100
@@ -1,5 +0,0 @@
1
- README.rdoc
2
- lib/**/*.rb
3
- bin/*
4
- features/**/*.feature
5
- LICENSE
@@ -1,21 +0,0 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
- *.swp
15
-
16
- ## PROJECT::GENERAL
17
- coverage
18
- rdoc
19
- pkg
20
-
21
- ## PROJECT::SPECIFIC
@@ -1,20 +0,0 @@
1
- Copyright (c) 2011 Padrino
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,239 +0,0 @@
1
- = Application Extensions and Helpers (padrino-helpers)
2
-
3
- === Overview
4
-
5
- This component provides a great deal of view helpers related to html markup generation.
6
- There are helpers for generating tags, forms, links, images, and more. Most of the basic
7
- methods should be very familiar to anyone who has used rails view helpers.
8
-
9
- === Output Helpers
10
-
11
- Output helpers are a collection of important methods for managing, capturing and displaying output
12
- in various ways and is used frequently to support higher-level helper functions. There are
13
- three output helpers worth mentioning: <tt>content_for</tt>, <tt>capture_html</tt>, and <tt>concat_content</tt>
14
-
15
- The content_for functionality supports capturing content and then rendering this into a different place
16
- such as within a layout. One such popular example is including assets onto the layout from a template:
17
-
18
- # app/views/site/index.erb
19
- ...
20
- <% content_for :assets do %>
21
- <%= stylesheet_link_tag 'index', 'custom' %>
22
- <% end %>
23
- ...
24
-
25
- Added to a template, this will capture the includes from the block and allow them to be yielded into the layout:
26
-
27
- # app/views/layout.erb
28
- ...
29
- <head>
30
- <title>Example</title>
31
- <%= stylesheet_link_tag 'style' %>
32
- <%= yield_content :assets %>
33
- </head>
34
- ...
35
-
36
- This will automatically insert the contents of the block (in this case a stylesheet include) into the
37
- location the content is yielded within the layout.
38
-
39
- The capture_html and the concat_content methods allow content to be manipulated and stored for use in building
40
- additional helpers accepting blocks or displaying information in a template. One example is the use of
41
- these in constructing a simplified 'form_tag' helper which accepts a block.
42
-
43
- # form_tag '/register' do ... end
44
- def form_tag(url, options={}, &block)
45
- # ... truncated ...
46
- inner_form_html = capture_html(&block)
47
- concat_content '<form>' + inner_form_html + '</form>'
48
- end
49
-
50
- This will capture the template body passed into the form_tag block and then append the content
51
- to the template through the use of <tt>concat_content</tt>. Note have been built to work for both haml and erb
52
- templates using the same syntax.
53
-
54
- For more information on using output helpers, check out the guide for
55
- {Padrino Helpers}[http://www.padrinorb.com/guides/application-helpers].
56
-
57
- === Tag Helpers
58
-
59
- Tag helpers are the basic building blocks used to construct html 'tags' within a view template. There
60
- are three major functions for this category: <tt>tag</tt>, <tt>content_tag</tt> and <tt>input_tag</tt>.
61
-
62
- The tag and content_tag are for building arbitrary html tags with a name and specified options. If
63
- the tag contains 'content' within then <tt>content_tag</tt> is used. For example:
64
-
65
- tag(:br, :style => ‘clear:both’) => <br style="clear:both" />
66
- content_tag(:p, "demo", :class => ‘light’) => <p class="light">demo</p>
67
-
68
- The input_tag is used to build tags that are related to accepting input from the user:
69
-
70
- input_tag :text, :class => "demo" => <input type='text' class='demo' />
71
- input_tag :password, :value => "secret", :class => "demo"
72
-
73
- Note that all of these accept html options and result in returning a string containing html tags.
74
-
75
- For more information on using tag helpers, check out the guide for
76
- {Padrino Helpers}[http://www.padrinorb.com/guides/application-helpers].
77
-
78
- === Asset Helpers
79
-
80
- Asset helpers are intended to help insert useful html onto a view template such as 'flash' notices,
81
- hyperlinks, mail_to links, images, stylesheets and javascript. An example of their uses would be on a
82
- simple view template:
83
-
84
- # app/views/example.haml
85
- ...
86
- %head
87
- = stylesheet_link_tag 'layout'
88
- = javascript_include_tag 'application'
89
- %body
90
- ...
91
- = flash_tag :notice
92
- %p= link_to 'Blog', '/blog', :class => 'example'
93
- %p Mail me at #{mail_to 'fake@faker.com', "Fake Email Link", :cc => "test@demo.com"}
94
- %p= image_tag 'padrino.png', :width => '35', :class => 'logo'
95
-
96
- For more information on using asset helpers, check out the guide for
97
- {Padrino Helpers}[http://www.padrinorb.com/guides/application-helpers].
98
-
99
- === Form Helpers
100
-
101
- Form helpers are the 'standard' form tag helpers you would come to expect when building forms. A simple
102
- example of constructing a non-object form would be:
103
-
104
- - form_tag '/destroy', :class => 'destroy-form', :method => 'delete' do
105
- = flash_tag(:notice)
106
- - field_set_tag do
107
- %p
108
- = label_tag :username, :class => 'first'
109
- = text_field_tag :username, :value => params[:username]
110
- %p
111
- = label_tag :password, :class => 'first'
112
- = password_field_tag :password, :value => params[:password]
113
- %p
114
- = label_tag :strategy
115
- = select_tag :strategy, :options => ['delete', 'destroy'], :selected => 'delete'
116
- %p
117
- = check_box_tag :confirm_delete
118
- - field_set_tag(:class => 'buttons') do
119
- = submit_tag "Remove"
120
-
121
- For more information on using form helpers, check out the guide for
122
- {Padrino Helpers}[http://www.padrinorb.com/guides/application-helpers].
123
-
124
- === FormBuilders
125
-
126
- Form builders are full-featured objects allowing the construction of complex object-based forms
127
- using a simple, intuitive syntax.
128
-
129
- A form_for using these basic fields might look like:
130
-
131
- - form_for @user, '/register', :id => 'register' do |f|
132
- = f.error_messages
133
- %p
134
- = f.label :username, :caption => "Nickname"
135
- = f.text_field :username
136
- %p
137
- = f.label :email
138
- = f.text_field :email
139
- %p
140
- = f.label :password
141
- = f.password_field :password
142
- %p
143
- = f.label :is_admin, :caption => "Admin User?"
144
- = f.check_box :is_admin
145
- %p
146
- = f.label :color, :caption => "Favorite Color?"
147
- = f.select :color, :options => ['red', 'black']
148
- %p
149
- - fields_for @user.location do |location|
150
- = location.text_field :street
151
- = location.text_field :city
152
- %p
153
- = f.submit "Create", :class => 'button'
154
-
155
- Forms can also accept nested attributes using `fields_for` within the form builder in recent releases. Check out the guide for {Padrino Helpers}[http://www.padrinorb.com/guides/application-helpers] to learn more about nested forms.
156
-
157
- There is also an additional StandardFormBuilder which builds on the abstract fields that can be used within a form_for.
158
-
159
- A form_for using these standard fields might be:
160
-
161
- - form_for @user, '/register', :id => 'register' do |f|
162
- = f.error_messages
163
- = f.text_field_block :name, :caption => "Full name"
164
- = f.text_field_block :email
165
- = f.check_box_block :remember_me
166
- = f.select_block :fav_color, :options => ['red', 'blue']
167
- = f.password_field_block :password
168
- = f.submit_block "Create", :class => 'button'
169
-
170
- and would generate this html (with each input contained in a paragraph and containing a label):
171
-
172
- <form id="register" action="/register" method="post">
173
- <p><label for="user_name">Full name: </label><input type="text" id="user_name" name="user[name]"></p>
174
- ...omitted...
175
- <p><input type="submit" value="Create" class="button"></p>
176
- </form>
177
-
178
- You can also easily build your own FormBuilder which allows for customized fields and behavior.
179
-
180
- For more information on using the Padrino form builders, check out the guide for
181
- {Padrino Helpers}[http://www.padrinorb.com/guides/application-helpers].
182
-
183
- === Format Helpers
184
-
185
- Format helpers are several useful utilities for manipulating the format of text to achieve a goal.
186
- The four format helpers are <tt>escape_html</tt>, <tt>relative_time_ago</tt>, <tt>time_in_words</tt>,
187
- and <tt>js_escape_html</tt>.
188
-
189
- The escape_html and js_escape_html function are for taking an html string and escaping certain characters.
190
- <tt>escape_html</tt> will escape ampersands, brackets and quotes to their HTML/XML entities. This is useful
191
- to sanitize user content before displaying this on a template. <tt>js_escape_html</tt> is used for
192
- passing javascript information from a js template to a javascript function.
193
-
194
- escape_html('<hello>&<goodbye>') # => &lt;hello&gt;&amp;&lt;goodbye&gt;
195
-
196
- There is also an alias for escape_html called <tt>h</tt> for even easier usage within templates.
197
-
198
- Format helpers also includes a number of useful text manipulation functions such as <tt>simple_format</tt>,
199
- <tt>pluralize</tt>, <tt>word_wrap</tt>, <tt>truncate</tt> and <tt>truncate_words</tt>.
200
-
201
- simple_format("hello\nworld") # => "<p>hello<br/>world</p>"
202
- pluralize(2, 'person') => '2 people'
203
- word_wrap('Once upon a time', :line_width => 8) => "Once upon\na time"
204
- truncate("Once upon a time in a world far far away", :length => 8) => "Once upon..."
205
- truncate_words("Once upon a time in a world far far away", :length => 4) => "Once upon a time..."
206
-
207
- These helpers can be invoked from any route or view within your application.
208
-
209
- For more information on using the format helpers, check out the guide for
210
- {Padrino Helpers}[http://www.padrinorb.com/guides/application-helpers].
211
-
212
- === Render Helpers
213
-
214
- This component provides a number of rendering helpers making the process of displaying templates a bit easier.
215
- This plugin also has support for useful additions such as partials (with support for :collection) for the templating system.
216
-
217
- Using render plugin helpers is extremely simple. If you want to render an erb template in your view path:
218
-
219
- render :erb, 'path/to/erb/template'
220
-
221
- or using haml templates works just as well:
222
-
223
- render :haml, 'path/to/haml/template'
224
-
225
- There is also a method which renders the first view matching the path and removes the need to define an engine:
226
-
227
- render 'path/to/any/template'
228
-
229
- Finally, we have the all-important partials support for rendering mini-templates onto a page:
230
-
231
- partial 'photo/_item', :object => @photo, :locals => { :foo => 'bar' }
232
- partial 'photo/_item', :collection => @photos
233
-
234
- For more information on using the render and partial helpers, check out the guide for
235
- {Padrino Helpers}[http://www.padrinorb.com/guides/application-helpers].
236
-
237
- == Copyright
238
-
239
- Copyright (c) 2011 Padrino. See LICENSE for details.
@@ -1,5 +0,0 @@
1
- # coding:utf-8
2
- RAKE_ROOT = __FILE__
3
-
4
- require 'rubygems'
5
- require File.expand_path(File.dirname(__FILE__) + '/../gem_rake_helper')
@@ -1,51 +0,0 @@
1
- require 'padrino-core/support_lite' unless defined?(SupportLite)
2
- require 'cgi'
3
- require 'i18n'
4
- require 'enumerator'
5
- require 'active_support/core_ext/string/conversions' # to_date
6
- require 'active_support/core_ext/float/rounding' # round
7
- require 'active_support/option_merger' # with_options
8
- require 'active_support/core_ext/object/with_options' # with_options
9
- require 'active_support/inflector' # humanize
10
-
11
- FileSet.glob_require('padrino-helpers/**/*.rb', __FILE__)
12
-
13
- # Load our locales
14
- I18n.load_path += Dir["#{File.dirname(__FILE__)}/padrino-helpers/locale/*.yml"]
15
-
16
- module Padrino
17
- ##
18
- # This component provides a great deal of view helpers related to html markup generation.
19
- # There are helpers for generating tags, forms, links, images, and more.
20
- # Most of the basic methods should be very familiar to anyone who has used rails view helpers.
21
- #
22
- module Helpers
23
- ##
24
- # Register these helpers:
25
- #
26
- # Padrino::Helpers::OutputHelpers
27
- # Padrino::Helpers::TagHelpers
28
- # Padrino::Helpers::AssetTagHelpers
29
- # Padrino::Helpers::FormHelpers
30
- # Padrino::Helpers::FormatHelpers
31
- # Padrino::Helpers::RenderHelpers
32
- # Padrino::Helpers::NumberHelpers
33
- #
34
- # for Padrino::Application
35
- #
36
- class << self
37
- def registered(app)
38
- app.set :default_builder, 'StandardFormBuilder'
39
- app.helpers Padrino::Helpers::OutputHelpers
40
- app.helpers Padrino::Helpers::TagHelpers
41
- app.helpers Padrino::Helpers::AssetTagHelpers
42
- app.helpers Padrino::Helpers::FormHelpers
43
- app.helpers Padrino::Helpers::FormatHelpers
44
- app.helpers Padrino::Helpers::RenderHelpers
45
- app.helpers Padrino::Helpers::NumberHelpers
46
- app.helpers Padrino::Helpers::TranslationHelpers
47
- end
48
- alias :included :registered
49
- end
50
- end # Helpers
51
- end # Padrino
@@ -1,288 +0,0 @@
1
- module Padrino
2
- module Helpers
3
- module AssetTagHelpers
4
- ##
5
- # Creates a div to display the flash of given type if it exists
6
- #
7
- # ==== Examples
8
- # # Generates: <div class="notice">flash-notice</div>
9
- # flash_tag(:notice, :id => 'flash-notice')
10
- #
11
- def flash_tag(kind, options={})
12
- flash_text = flash[kind]
13
- return '' if flash_text.blank?
14
- options.reverse_merge!(:class => kind)
15
- content_tag(:div, flash_text, options)
16
- end
17
-
18
- ##
19
- # Creates a link element with given name, url and options
20
- #
21
- # ==== Examples
22
- #
23
- # link_to('click me', '/dashboard', :class => 'linky')
24
- # link_to('click me', '/dashboard', :remote => true)
25
- # link_to('click me', '/dashboard', :method => :delete)
26
- # link_to('click me', :class => 'blocky') do ... end
27
- #
28
- # Note that you can pass :+if+ or :+unless+ conditions, but if you provide :current as
29
- # condition padrino return true/false if the request.path_info match the given url
30
- #
31
- def link_to(*args, &block)
32
- options = args.extract_options!
33
- options = parse_js_attributes(options) # parses remote, method and confirm options
34
- anchor = "##{CGI.escape options.delete(:anchor).to_s}" if options[:anchor]
35
-
36
- if block_given?
37
- url = args[0] ? args[0] + anchor.to_s : anchor || 'javascript:void(0);'
38
- options.reverse_merge!(:href => url)
39
- link_content = capture_html(&block)
40
- return '' unless parse_conditions(url, options)
41
- result_link = content_tag(:a, link_content, options)
42
- block_is_template?(block) ? concat_content(result_link) : result_link
43
- else
44
- name, url = args[0], (args[1] ? args[1] + anchor.to_s : anchor || 'javascript:void(0);')
45
- return name unless parse_conditions(url, options)
46
- options.reverse_merge!(:href => url)
47
- content_tag(:a, name, options)
48
- end
49
- end
50
-
51
- ##
52
- # Creates a form containing a single button that submits to the url.
53
- #
54
- # ==== Examples
55
- #
56
- # # Generates:
57
- # # <form class="form" action="/admin/accounts/destroy/2" method="post">
58
- # # <input type="hidden" value="delete" name="_method" />
59
- # # <input type="submit" value="Delete" />
60
- # # </form>
61
- # button_to 'Delete', url(:accounts_destroy, :id => account), :method => :delete, :class => :form
62
- #
63
- def button_to(*args, &block)
64
- name, url = args[0], args[1]
65
- options = args.extract_options!
66
- desired_method = options[:method]
67
- options.delete(:method) if options[:method].to_s !~ /get|post/i
68
- options.reverse_merge!(:method => 'post', :action => url)
69
- options[:enctype] = "multipart/form-data" if options.delete(:multipart)
70
- options["data-remote"] = "true" if options.delete(:remote)
71
- inner_form_html = hidden_form_method_field(desired_method)
72
- inner_form_html += block_given? ? capture_html(&block) : submit_tag(name)
73
- content_tag('form', inner_form_html, options)
74
- end
75
-
76
- ##
77
- # Creates a link tag that browsers and news readers can use to auto-detect an RSS or ATOM feed.
78
- #
79
- # === Options
80
- #
81
- # :rel:: Specify the relation of this link, defaults to "alternate"
82
- # :type:: Override the auto-generated mime type
83
- # :title:: Specify the title of the link, defaults to the type
84
- #
85
- # === Examples
86
- #
87
- # # Generates: <link type="application/atom+xml" rel="alternate" href="/blog/posts.atom" title="ATOM" />
88
- # feed_tag :atom, url(:blog, :posts, :format => :atom), :title => "ATOM"
89
- # # Generates: <link type="application/rss+xml" rel="alternate" href="/blog/posts.rss" title="rss" />
90
- # feed_tag :rss, url(:blog, :posts, :format => :rss)
91
- #
92
- def feed_tag(mime, url, options={})
93
- full_mime = (mime == :atom) ? 'application/atom+xml' : 'application/rss+xml'
94
- content_tag(:link, options.reverse_merge(:rel => 'alternate', :type => full_mime, :title => mime, :href => url))
95
- end
96
-
97
- ##
98
- # Creates a mail link element with given name and caption
99
- #
100
- # ==== Examples
101
- #
102
- # # Generates: <a href="mailto:me@demo.com">me@demo.com</a>
103
- # mail_to "me@demo.com"
104
- # # Generates: <a href="mailto:me@demo.com">My Email</a>
105
- # mail_to "me@demo.com", "My Email"
106
- #
107
- def mail_to(email, caption=nil, mail_options={})
108
- html_options = mail_options.slice!(:cc, :bcc, :subject, :body)
109
- mail_query = Rack::Utils.build_query(mail_options).gsub(/\+/, '%20').gsub('%40', '@')
110
- mail_href = "mailto:#{email}"; mail_href << "?#{mail_query}" if mail_query.present?
111
- link_to((caption || email), mail_href, html_options)
112
- end
113
-
114
- ##
115
- # Creates a meta element with the content and given options
116
- #
117
- # ==== Examples
118
- #
119
- # # Generates: <meta name="keywords" content="weblog,news">
120
- # meta_tag "weblog,news", :name => "keywords"
121
- #
122
- # # Generates: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
123
- # meta_tag "text/html; charset=UTF-8", 'http-equiv' => "Content-Type"
124
- #
125
- def meta_tag(content, options={})
126
- options.reverse_merge!("content" => content)
127
- tag(:meta, options)
128
- end
129
-
130
- ##
131
- # Generates a favicon link. looks inside images folder
132
- #
133
- # ==== Examples
134
- #
135
- # favicon_tag 'favicon.png'
136
- # favicon_tag 'icons/favicon.png'
137
- # # or override some options
138
- # favicon_tag 'favicon.png', :type => 'image/ico'
139
- #
140
- def favicon_tag(source,options={})
141
- type = File.extname(source).gsub('.','')
142
- options = options.dup.reverse_merge!(:href => image_path(source), :rel => 'icon', :type => "image/#{type}")
143
- tag(:link, options)
144
- end
145
-
146
- ##
147
- # Creates an image element with given url and options
148
- #
149
- # ==== Examples
150
- #
151
- # image_tag('icons/avatar.png')
152
- #
153
- def image_tag(url, options={})
154
- options.reverse_merge!(:src => image_path(url))
155
- tag(:img, options)
156
- end
157
-
158
- ##
159
- # Returns an html script tag for each of the sources provided.
160
- # You can pass in the filename without extension or a symbol and we search it in your +appname.public+
161
- # like app/public/stylesheets for inclusion. You can provide also a full path.
162
- #
163
- # ==== Examples
164
- #
165
- # stylesheet_link_tag 'style', 'application', 'layout'
166
- #
167
- def stylesheet_link_tag(*sources)
168
- options = sources.extract_options!.symbolize_keys
169
- options.reverse_merge!(:media => 'screen', :rel => 'stylesheet', :type => 'text/css')
170
- sources.flatten.map { |source|
171
- tag(:link, options.reverse_merge(:href => asset_path(:css, source)))
172
- }.join("\n")
173
- end
174
-
175
- ##
176
- # Returns an html script tag for each of the sources provided.
177
- # You can pass in the filename without extension or a symbol and we search it in your +appname.public+
178
- # like app/public/javascript for inclusion. You can provide also a full path.
179
- #
180
- # ==== Examples
181
- #
182
- # javascript_include_tag 'application', :extjs
183
- #
184
- def javascript_include_tag(*sources)
185
- options = sources.extract_options!.symbolize_keys
186
- options.reverse_merge!(:type => 'text/javascript', :content => "")
187
- sources.flatten.map { |source|
188
- tag(:script, options.reverse_merge(:src => asset_path(:js, source)))
189
- }.join("\n")
190
- end
191
-
192
- ##
193
- # Returns the path to the image, either relative or absolute. We search it in your +appname.public+
194
- # like app/public/images for inclusion. You can provide also a full path.
195
- #
196
- # ==== Examples
197
- #
198
- # # Generates: /images/foo.jpg?1269008689
199
- # image_path("foo.jpg")
200
- #
201
- def image_path(src)
202
- asset_path(:images, src)
203
- end
204
-
205
- ##
206
- # Returns the path to the specified asset (css or javascript)
207
- #
208
- # ==== Examples
209
- #
210
- # # Generates: /javascripts/application.js?1269008689
211
- # asset_path :js, :application
212
- #
213
- # # Generates: /stylesheets/application.css?1269008689
214
- # asset_path :css, :application
215
- #
216
- # # Generates: /images/example.jpg?1269008689
217
- # asset_path :images, 'example.jpg'
218
- #
219
- def asset_path(kind, source)
220
- return source if source =~ /^http/
221
- asset_folder = case kind
222
- when :css then 'stylesheets'
223
- when :js then 'javascripts'
224
- else kind.to_s
225
- end
226
- source = source.to_s.gsub(/\s/, '%20')
227
- ignore_extension = (asset_folder.to_s == kind.to_s) # don't append extension
228
- source << ".#{kind}" unless ignore_extension or source =~ /\.#{kind}/
229
- result_path = source if source =~ %r{^/} # absolute path
230
- result_path ||= uri_root_path(asset_folder, source)
231
- timestamp = asset_timestamp(result_path)
232
- "#{result_path}#{timestamp}"
233
- end
234
-
235
- private
236
-
237
- ##
238
- # Returns the uri root of the application.
239
- #
240
- def uri_root_path(*paths)
241
- root_uri = self.class.uri_root if self.class.respond_to?(:uri_root)
242
- File.join(ENV['RACK_BASE_URI'].to_s, root_uri || '/', *paths)
243
- end
244
-
245
- ##
246
- # Returns the timestamp mtime for an asset
247
- #
248
- def asset_timestamp(file_path)
249
- return nil if file_path =~ /\?/ || (self.class.respond_to?(:asset_stamp) && !self.class.asset_stamp)
250
- public_path = Padrino.root("public", file_path) if Padrino.respond_to?(:root)
251
- stamp = Time.now.to_i unless public_path && File.exist?(public_path)
252
- stamp ||= File.mtime(public_path).to_i
253
- "?#{stamp}"
254
- end
255
-
256
- ##
257
- # Parses link_to options for given correct conditions
258
- #
259
- def parse_conditions(url, options)
260
- if options.has_key?(:if)
261
- condition = options.delete(:if)
262
- condition == :current ? url == request.path_info : condition
263
- elsif condition = options.delete(:unless)
264
- condition == :current ? url != request.path_info : !condition
265
- else
266
- true
267
- end
268
- end
269
-
270
- ##
271
- # Parses link_to options for given js declarations (remote, method, confirm)
272
- # Not destructive on options; returns updated options
273
- #
274
- def parse_js_attributes(options)
275
- options = options.dup
276
- options["data-remote"] = "true" if options.delete(:remote)
277
- if link_confirm = options.delete(:confirm)
278
- options["data-confirm"] = link_confirm
279
- end
280
- if link_method = options.delete(:method)
281
- options["data-method"] = link_method
282
- options["rel"] = "nofollow"
283
- end
284
- options
285
- end
286
- end # AssetTagHelpers
287
- end # Helpers
288
- end # Padrino