phlex-rails 1.1.1 → 1.2.0

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 (225) hide show
  1. checksums.yaml +4 -4
  2. data/Appraisals +4 -6
  3. data/Gemfile +2 -4
  4. data/lib/generators/phlex/component/USAGE +1 -1
  5. data/lib/generators/phlex/component/templates/component.rb.erb +1 -1
  6. data/lib/generators/phlex/install/install_generator.rb +1 -2
  7. data/lib/generators/phlex/install/templates/application_layout.rb +1 -1
  8. data/lib/generators/phlex/view/templates/view.rb.erb +1 -1
  9. data/lib/phlex/rails/csv.rb +16 -0
  10. data/lib/phlex/rails/fragment_finder.rb +28 -0
  11. data/lib/phlex/rails/helper_macros.rb +11 -31
  12. data/lib/phlex/rails/helpers/action_cable_meta_tag.rb +11 -0
  13. data/lib/phlex/rails/helpers/action_name.rb +10 -0
  14. data/lib/phlex/rails/helpers/asset_path.rb +15 -0
  15. data/lib/phlex/rails/helpers/asset_url.rb +8 -0
  16. data/lib/phlex/rails/helpers/audio_path.rb +8 -0
  17. data/lib/phlex/rails/helpers/audio_tag.rb +9 -0
  18. data/lib/phlex/rails/helpers/audio_url.rb +8 -0
  19. data/lib/phlex/rails/helpers/auto_discovery_link_tag.rb +9 -0
  20. data/lib/phlex/rails/helpers/build_tag_values.rb +8 -0
  21. data/lib/phlex/rails/helpers/button_tag.rb +9 -0
  22. data/lib/phlex/rails/helpers/button_to.rb +9 -0
  23. data/lib/phlex/rails/helpers/check_box.rb +9 -0
  24. data/lib/phlex/rails/helpers/check_box_tag.rb +9 -0
  25. data/lib/phlex/rails/helpers/class_names.rb +8 -0
  26. data/lib/phlex/rails/helpers/collection_check_boxes.rb +10 -0
  27. data/lib/phlex/rails/helpers/collection_radio_buttons.rb +10 -0
  28. data/lib/phlex/rails/helpers/collection_select.rb +9 -0
  29. data/lib/phlex/rails/helpers/color_field.rb +9 -0
  30. data/lib/phlex/rails/helpers/color_field_tag.rb +9 -0
  31. data/lib/phlex/rails/helpers/compute_asset_extname.rb +8 -0
  32. data/lib/phlex/rails/helpers/compute_asset_host.rb +8 -0
  33. data/lib/phlex/rails/helpers/compute_asset_path.rb +8 -0
  34. data/lib/phlex/rails/helpers/content_for.rb +11 -0
  35. data/lib/phlex/rails/helpers/content_tag.rb +9 -0
  36. data/lib/phlex/rails/helpers/controller_name.rb +8 -0
  37. data/lib/phlex/rails/helpers/controller_path.rb +8 -0
  38. data/lib/phlex/rails/helpers/csp_meta_tag.rb +9 -0
  39. data/lib/phlex/rails/helpers/csrf_meta_tags.rb +9 -0
  40. data/lib/phlex/rails/helpers/current_cycle.rb +8 -0
  41. data/lib/phlex/rails/helpers/current_page.rb +8 -0
  42. data/lib/phlex/rails/helpers/cycle.rb +8 -0
  43. data/lib/phlex/rails/helpers/date_field.rb +9 -0
  44. data/lib/phlex/rails/helpers/date_field_tag.rb +9 -0
  45. data/lib/phlex/rails/helpers/date_select.rb +9 -0
  46. data/lib/phlex/rails/helpers/datetime_field.rb +9 -0
  47. data/lib/phlex/rails/helpers/datetime_field_tag.rb +9 -0
  48. data/lib/phlex/rails/helpers/datetime_local_field.rb +9 -0
  49. data/lib/phlex/rails/helpers/datetime_local_field_tag.rb +9 -0
  50. data/lib/phlex/rails/helpers/datetime_select.rb +9 -0
  51. data/lib/phlex/rails/helpers/debug.rb +9 -0
  52. data/lib/phlex/rails/helpers/default_url_options.rb +8 -0
  53. data/lib/phlex/rails/helpers/distance_of_time_in_words.rb +8 -0
  54. data/lib/phlex/rails/helpers/distance_of_time_in_words_to_now.rb +8 -0
  55. data/lib/phlex/rails/helpers/dom_class.rb +8 -0
  56. data/lib/phlex/rails/helpers/dom_id.rb +8 -0
  57. data/lib/phlex/rails/helpers/email_field.rb +9 -0
  58. data/lib/phlex/rails/helpers/email_field_tag.rb +9 -0
  59. data/lib/phlex/rails/helpers/error_message.rb +8 -0
  60. data/lib/phlex/rails/helpers/error_wrapping.rb +9 -0
  61. data/lib/phlex/rails/helpers/escape_once.rb +8 -0
  62. data/lib/phlex/rails/helpers/excerpt.rb +8 -0
  63. data/lib/phlex/rails/helpers/favicon_link_tag.rb +9 -0
  64. data/lib/phlex/rails/helpers/field_id.rb +8 -0
  65. data/lib/phlex/rails/helpers/field_name.rb +8 -0
  66. data/lib/phlex/rails/helpers/field_set_tag.rb +9 -0
  67. data/lib/phlex/rails/helpers/fields.rb +10 -0
  68. data/lib/phlex/rails/helpers/fields_for.rb +10 -0
  69. data/lib/phlex/rails/helpers/file_field.rb +9 -0
  70. data/lib/phlex/rails/helpers/file_field_tag.rb +9 -0
  71. data/lib/phlex/rails/helpers/flash.rb +8 -0
  72. data/lib/phlex/rails/helpers/font_path.rb +8 -0
  73. data/lib/phlex/rails/helpers/font_url.rb +8 -0
  74. data/lib/phlex/rails/helpers/form_for.rb +10 -0
  75. data/lib/phlex/rails/helpers/form_tag.rb +9 -0
  76. data/lib/phlex/rails/helpers/form_with.rb +10 -0
  77. data/lib/phlex/rails/helpers/grouped_collection_select.rb +9 -0
  78. data/lib/phlex/rails/helpers/grouped_options_for_select.rb +9 -0
  79. data/lib/phlex/rails/helpers/hidden_field.rb +9 -0
  80. data/lib/phlex/rails/helpers/hidden_field_tag.rb +9 -0
  81. data/lib/phlex/rails/helpers/highlight.rb +9 -0
  82. data/lib/phlex/rails/helpers/image_path.rb +8 -0
  83. data/lib/phlex/rails/helpers/image_submit_tag.rb +9 -0
  84. data/lib/phlex/rails/helpers/image_tag.rb +9 -0
  85. data/lib/phlex/rails/helpers/image_url.rb +8 -0
  86. data/lib/phlex/rails/helpers/javascript_import_module_tag.rb +9 -0
  87. data/lib/phlex/rails/helpers/javascript_importmap_tags.rb +9 -0
  88. data/lib/phlex/rails/helpers/javascript_include_tag.rb +9 -0
  89. data/lib/phlex/rails/helpers/javascript_path.rb +8 -0
  90. data/lib/phlex/rails/helpers/javascript_tag.rb +9 -0
  91. data/lib/phlex/rails/helpers/javascript_url.rb +8 -0
  92. data/lib/phlex/rails/helpers/l.rb +8 -0
  93. data/lib/phlex/rails/helpers/label.rb +8 -0
  94. data/lib/phlex/rails/helpers/label_tag.rb +9 -0
  95. data/lib/phlex/rails/helpers/link_to.rb +9 -0
  96. data/lib/phlex/rails/helpers/link_to_if.rb +9 -0
  97. data/lib/phlex/rails/helpers/link_to_unless.rb +9 -0
  98. data/lib/phlex/rails/helpers/link_to_unless_current.rb +9 -0
  99. data/lib/phlex/rails/helpers/localize.rb +8 -0
  100. data/lib/phlex/rails/helpers/mail_to.rb +9 -0
  101. data/lib/phlex/rails/helpers/month_field.rb +9 -0
  102. data/lib/phlex/rails/helpers/month_field_tag.rb +9 -0
  103. data/lib/phlex/rails/helpers/number_field.rb +9 -0
  104. data/lib/phlex/rails/helpers/number_field_tag.rb +9 -0
  105. data/lib/phlex/rails/helpers/number_to_currency.rb +8 -0
  106. data/lib/phlex/rails/helpers/number_to_human.rb +8 -0
  107. data/lib/phlex/rails/helpers/number_to_human_size.rb +8 -0
  108. data/lib/phlex/rails/helpers/number_to_percentage.rb +8 -0
  109. data/lib/phlex/rails/helpers/number_to_phone.rb +8 -0
  110. data/lib/phlex/rails/helpers/number_with_delimiter.rb +8 -0
  111. data/lib/phlex/rails/helpers/number_with_precision.rb +8 -0
  112. data/lib/phlex/rails/helpers/object.rb +8 -0
  113. data/lib/phlex/rails/helpers/option_groups_from_collection_for_select.rb +9 -0
  114. data/lib/phlex/rails/helpers/options_for_select.rb +9 -0
  115. data/lib/phlex/rails/helpers/options_from_collection_for_select.rb +9 -0
  116. data/lib/phlex/rails/helpers/password_field.rb +9 -0
  117. data/lib/phlex/rails/helpers/password_field_tag.rb +9 -0
  118. data/lib/phlex/rails/helpers/path_to_asset.rb +8 -0
  119. data/lib/phlex/rails/helpers/path_to_audio.rb +8 -0
  120. data/lib/phlex/rails/helpers/path_to_font.rb +8 -0
  121. data/lib/phlex/rails/helpers/path_to_image.rb +8 -0
  122. data/lib/phlex/rails/helpers/path_to_javascript.rb +8 -0
  123. data/lib/phlex/rails/helpers/path_to_stylesheet.rb +8 -0
  124. data/lib/phlex/rails/helpers/path_to_video.rb +8 -0
  125. data/lib/phlex/rails/helpers/phone_field.rb +9 -0
  126. data/lib/phlex/rails/helpers/phone_field_tag.rb +9 -0
  127. data/lib/phlex/rails/helpers/phone_to.rb +9 -0
  128. data/lib/phlex/rails/helpers/pluralize.rb +9 -0
  129. data/lib/phlex/rails/helpers/preload_link_tag.rb +9 -0
  130. data/lib/phlex/rails/helpers/provide.rb +8 -0
  131. data/lib/phlex/rails/helpers/public_compute_asset_path.rb +8 -0
  132. data/lib/phlex/rails/helpers/radio_button.rb +9 -0
  133. data/lib/phlex/rails/helpers/radio_button_tag.rb +9 -0
  134. data/lib/phlex/rails/helpers/range_field.rb +9 -0
  135. data/lib/phlex/rails/helpers/range_field_tag.rb +9 -0
  136. data/lib/phlex/rails/helpers/request.rb +8 -0
  137. data/lib/phlex/rails/helpers/reset_cycle.rb +8 -0
  138. data/lib/phlex/rails/helpers/rich_text_area.rb +9 -0
  139. data/lib/phlex/rails/helpers/sanitize.rb +8 -0
  140. data/lib/phlex/rails/helpers/sanitize_css.rb +8 -0
  141. data/lib/phlex/rails/helpers/search_field.rb +9 -0
  142. data/lib/phlex/rails/helpers/search_field_tag.rb +9 -0
  143. data/lib/phlex/rails/helpers/select.rb +9 -0
  144. data/lib/phlex/rails/helpers/select_date.rb +9 -0
  145. data/lib/phlex/rails/helpers/select_datetime.rb +9 -0
  146. data/lib/phlex/rails/helpers/select_day.rb +9 -0
  147. data/lib/phlex/rails/helpers/select_hour.rb +9 -0
  148. data/lib/phlex/rails/helpers/select_minute.rb +9 -0
  149. data/lib/phlex/rails/helpers/select_month.rb +9 -0
  150. data/lib/phlex/rails/helpers/select_second.rb +9 -0
  151. data/lib/phlex/rails/helpers/select_tag.rb +9 -0
  152. data/lib/phlex/rails/helpers/select_time.rb +9 -0
  153. data/lib/phlex/rails/helpers/select_year.rb +9 -0
  154. data/lib/phlex/rails/helpers/simple_format.rb +9 -0
  155. data/lib/phlex/rails/helpers/sms_to.rb +9 -0
  156. data/lib/phlex/rails/helpers/strip_links.rb +8 -0
  157. data/lib/phlex/rails/helpers/strip_tags.rb +8 -0
  158. data/lib/phlex/rails/helpers/stylesheet_link_tag.rb +9 -0
  159. data/lib/phlex/rails/helpers/stylesheet_path.rb +8 -0
  160. data/lib/phlex/rails/helpers/stylesheet_url.rb +8 -0
  161. data/lib/phlex/rails/helpers/submit_tag.rb +9 -0
  162. data/lib/phlex/rails/helpers/t.rb +3 -0
  163. data/lib/phlex/rails/helpers/telephone_field.rb +9 -0
  164. data/lib/phlex/rails/helpers/telephone_field_tag.rb +9 -0
  165. data/lib/phlex/rails/helpers/text_area.rb +9 -0
  166. data/lib/phlex/rails/helpers/text_area_tag.rb +9 -0
  167. data/lib/phlex/rails/helpers/text_field.rb +9 -0
  168. data/lib/phlex/rails/helpers/text_field_tag.rb +9 -0
  169. data/lib/phlex/rails/helpers/time_ago_in_words.rb +8 -0
  170. data/lib/phlex/rails/helpers/time_field.rb +9 -0
  171. data/lib/phlex/rails/helpers/time_field_tag.rb +9 -0
  172. data/lib/phlex/rails/helpers/time_select.rb +9 -0
  173. data/lib/phlex/rails/helpers/time_tag.rb +9 -0
  174. data/lib/phlex/rails/helpers/time_zone_options_for_select.rb +9 -0
  175. data/lib/phlex/rails/helpers/time_zone_select.rb +9 -0
  176. data/lib/phlex/rails/helpers/token_list.rb +8 -0
  177. data/lib/phlex/rails/helpers/translate.rb +25 -0
  178. data/lib/phlex/rails/helpers/truncate.rb +8 -0
  179. data/lib/phlex/rails/helpers/turbo_frame_tag.rb +8 -0
  180. data/lib/phlex/rails/helpers/turbo_include_tags.rb +8 -0
  181. data/lib/phlex/rails/helpers/turbo_refresh_method_tag.rb +8 -0
  182. data/lib/phlex/rails/helpers/turbo_refresh_scroll_tag.rb +8 -0
  183. data/lib/phlex/rails/helpers/turbo_refreshes_with.rb +9 -0
  184. data/lib/phlex/rails/helpers/turbo_stream_from.rb +8 -0
  185. data/lib/phlex/rails/helpers/url_field.rb +9 -0
  186. data/lib/phlex/rails/helpers/url_field_tag.rb +9 -0
  187. data/lib/phlex/rails/helpers/url_for.rb +8 -0
  188. data/lib/phlex/rails/helpers/url_options.rb +8 -0
  189. data/lib/phlex/rails/helpers/url_to_asset.rb +8 -0
  190. data/lib/phlex/rails/helpers/url_to_audio.rb +8 -0
  191. data/lib/phlex/rails/helpers/url_to_font.rb +8 -0
  192. data/lib/phlex/rails/helpers/url_to_image.rb +8 -0
  193. data/lib/phlex/rails/helpers/url_to_javascript.rb +8 -0
  194. data/lib/phlex/rails/helpers/url_to_stylesheet.rb +8 -0
  195. data/lib/phlex/rails/helpers/url_to_video.rb +8 -0
  196. data/lib/phlex/rails/helpers/utf8_enforcer_tag.rb +9 -0
  197. data/lib/phlex/rails/helpers/video_path.rb +8 -0
  198. data/lib/phlex/rails/helpers/video_tag.rb +9 -0
  199. data/lib/phlex/rails/helpers/video_url.rb +8 -0
  200. data/lib/phlex/rails/helpers/week_field.rb +9 -0
  201. data/lib/phlex/rails/helpers/week_field_tag.rb +9 -0
  202. data/lib/phlex/rails/helpers/weekday_options_for_select.rb +9 -0
  203. data/lib/phlex/rails/helpers/weekday_select.rb +9 -0
  204. data/lib/phlex/rails/helpers/with_output_buffer.rb +9 -0
  205. data/lib/phlex/rails/helpers/word_wrap.rb +8 -0
  206. data/lib/phlex/rails/helpers.rb +243 -1458
  207. data/lib/phlex/rails/html/method_missing.rb +13 -0
  208. data/lib/phlex/rails/html.rb +11 -0
  209. data/lib/phlex/rails/layout.rb +33 -22
  210. data/lib/phlex/rails/{sgml/overrides.rb → sgml.rb} +26 -15
  211. data/lib/phlex/rails/streaming.rb +95 -7
  212. data/lib/phlex/rails/version.rb +1 -1
  213. data/lib/phlex/rails.rb +25 -22
  214. metadata +204 -31
  215. data/CONTRIBUTING.md +0 -23
  216. data/lib/generators/phlex/controller/USAGE +0 -10
  217. data/lib/generators/phlex/controller/controller_generator.rb +0 -74
  218. data/lib/generators/phlex/controller/templates/controller.rb.erb +0 -14
  219. data/lib/generators/phlex/controller/templates/view.rb.erb +0 -9
  220. data/lib/generators/rspec/view/templates/view_spec.rb.erb +0 -10
  221. data/lib/generators/rspec/view/view_generator.rb +0 -14
  222. data/lib/generators/test_unit/templates/view_test.rb.erb +0 -15
  223. data/lib/generators/test_unit/view_generator.rb +0 -12
  224. data/lib/phlex/rails/html/format.rb +0 -8
  225. data/lib/phlex/rails/sgml/class_methods.rb +0 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c4a2327429781bd723b011ea5fe05007feca4a608214ddd3c461cc2685cf8742
4
- data.tar.gz: 856d741f12167f40769a271f2a61259f46773c95ab874bce7d169364f34e8d8a
3
+ metadata.gz: 901899deff58fafb2f6d66acc24fd5e52ae8261fabbc5e927f241d72439656ef
4
+ data.tar.gz: 00042a1aac9ecadab8ed5ecd188bb1e90dcb9194bc9da28571f559cc05087efb
5
5
  SHA512:
6
- metadata.gz: c38fba4634834613a6a72e9811361749f63d2d056c8b8b7cd6b8a08c04f2a04dda95146dc5ec013bcfac9453287402da583435a018fd3becf7e14deba29ccf5c
7
- data.tar.gz: aeb62a44768d06817370f9a169807a7bf7e718f516a866fb017d90b10b9ad3942e51cdcbda3ae3f22b2397b7a925fb1b3507e1603737edf53ade9fbc75e16c1e
6
+ metadata.gz: 839ee6ec4a6b77c256dcc3992068afda599044328b634dd323ed6e0b9e54d07199516a3695729d95b35bce21a43a6af4dd39957ea5e22fa7d9190108aab6fd38
7
+ data.tar.gz: 95703f5ae22a39eab0d14deb4562ca741563e7edbd72187203885ca921cd49ade0257a92b987a7fc1ffb1353372dee47089b4ab15cd6486f8ca72b86d479f760
data/Appraisals CHANGED
@@ -1,13 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- appraise "rails-6" do
4
- gem "rails", "~> 6"
5
- end
6
-
7
3
  appraise "rails-7" do
8
4
  gem "rails", "~> 7"
9
5
  end
10
6
 
11
- appraise "rails-edge" do
12
- gem "rails", github: "rails/rails"
7
+ if RUBY_VERSION >= "3.1.0"
8
+ appraise "rails-edge" do
9
+ gem "rails", github: "rails/rails"
10
+ end
13
11
  end
data/Gemfile CHANGED
@@ -6,14 +6,12 @@ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
6
6
  gemspec
7
7
 
8
8
  gem "phlex", github: "phlex-ruby/phlex"
9
- gem "phlex-testing-capybara", github: "phlex-ruby/phlex-testing-capybara"
10
- gem "combustion"
11
9
  gem "rubocop"
12
10
  gem "solargraph"
13
11
  gem "view_component"
14
12
  gem "appraisal", github: "excid3/appraisal", branch: "fix-bundle-env"
15
13
  gem "yard"
16
14
 
17
- # Ensure rails is loaded before rspec-rails.
18
15
  gem "rails"
19
- gem "rspec-rails"
16
+ gem "puma"
17
+ gem "sqlite3"
@@ -5,4 +5,4 @@ Example:
5
5
  rails generate phlex:component Sidebar
6
6
 
7
7
  This will create:
8
- app/components/sidebar_component.rb
8
+ app/views/components/sidebar_component.rb
@@ -2,7 +2,7 @@
2
2
 
3
3
  <% module_namespacing do -%>
4
4
  class <%= class_name %>Component < ApplicationComponent
5
- def template
5
+ def view_template
6
6
  h1 { "<%= class_name %>" }
7
7
  p { "Find me in <%= @path %>" }
8
8
  end
@@ -5,7 +5,7 @@ module Phlex::Generators
5
5
  source_root File.expand_path("templates", __dir__)
6
6
 
7
7
  APPLICATION_CONFIGURATION_PATH = Rails.root.join("config/application.rb")
8
- TAILWIND_CONFIGURATION_PATH = Rails.root.join("config/tailwind.config.js")
8
+ TAILWIND_CONFIGURATION_PATH = Rails.root.join("tailwind.config.js")
9
9
 
10
10
  def autoload_components
11
11
  return unless APPLICATION_CONFIGURATION_PATH.exist?
@@ -42,7 +42,6 @@ module Phlex::Generators
42
42
 
43
43
  insert_into_file TAILWIND_CONFIGURATION_PATH, after: "content: [" do
44
44
  "\n './app/views/**/*.rb'," \
45
- "\n './app/components/**/*rb',"
46
45
  end
47
46
  end
48
47
 
@@ -3,7 +3,7 @@
3
3
  class ApplicationLayout < ApplicationView
4
4
  include Phlex::Rails::Layout
5
5
 
6
- def template(&block)
6
+ def view_template(&block)
7
7
  doctype
8
8
 
9
9
  html do
@@ -2,7 +2,7 @@
2
2
 
3
3
  <% module_namespacing do -%>
4
4
  class <%= class_name %>View < ApplicationView
5
- def template
5
+ def view_template
6
6
  h1 { "<%= class_name %>" }
7
7
  p { "Find me in <%= @path %>" }
8
8
  end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex
4
+ module Rails
5
+ module CSV
6
+ module Overrides
7
+ def each_item(&block)
8
+ return super unless collection.is_a?(ActiveRecord::Relation)
9
+ return super unless collection.arel.orders.empty?
10
+
11
+ collection.find_each(&block)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::FragmentFinder
4
+ extend self
5
+
6
+ Parser = if defined?(Nokolexbor)
7
+ Nokolexbor
8
+ else
9
+ require "nokogiri"
10
+ Nokogiri::HTML
11
+ end
12
+
13
+ def extract(html, ids)
14
+ parsed = Parser.parse(html)
15
+ selector = ids.map { |id| "##{id}" }.join(", ")
16
+
17
+ result = +""
18
+
19
+ ids.count.times do
20
+ if (fragment = parsed.at_css(selector))
21
+ result << fragment.to_s
22
+ fragment.remove
23
+ end
24
+ end
25
+
26
+ result
27
+ end
28
+ end
@@ -1,29 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # @api private
4
3
  module Phlex::Rails::HelperMacros
5
- def define_output_helper(method_name)
6
- class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
7
- # frozen_string_literal: true
8
-
9
- def #{method_name}(...)
10
- output = helpers.#{method_name}(...)
11
-
12
- case output
13
- when ActiveSupport::SafeBuffer
14
- @_context.target << output
15
- end
16
-
17
- nil
18
- end
19
- RUBY
20
- end
21
-
22
- def define_output_helper_with_capture_block(method_name)
4
+ # Register a Rails helper that returns safe HTML to be pushed to the output buffer.
5
+ def register_output_helper(method_name)
23
6
  class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
24
7
  # frozen_string_literal: true
25
8
 
26
9
  def #{method_name}(*args, **kwargs, &block)
10
+ context = @_context
11
+ return if context.fragments && !context.in_target_fragment
12
+
27
13
  output = if block
28
14
  helpers.#{method_name}(*args, **kwargs) { capture(&block) }
29
15
  else
@@ -40,17 +26,8 @@ module Phlex::Rails::HelperMacros
40
26
  RUBY
41
27
  end
42
28
 
43
- def define_value_helper(method_name)
44
- class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
45
- # frozen_string_literal: true
46
-
47
- def #{method_name}(...)
48
- helpers.#{method_name}(...)
49
- end
50
- RUBY
51
- end
52
-
53
- def define_value_helper_with_capture_block(method_name)
29
+ # Register a Rails helper that returns a value that shouldn’t be pushed to the output buffer.
30
+ def register_value_helper(method_name)
54
31
  class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
55
32
  # frozen_string_literal: true
56
33
 
@@ -64,11 +41,14 @@ module Phlex::Rails::HelperMacros
64
41
  RUBY
65
42
  end
66
43
 
67
- def define_builder_yielding_helper(method_name, builder)
44
+ # @api private
45
+ def register_builder_yielding_helper(method_name, builder)
68
46
  class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
69
47
  # frozen_string_literal: true
70
48
 
71
49
  def #{method_name}(*args, **kwargs)
50
+ context = @_context
51
+ return if context.fragments && !context.in_target_fragment
72
52
  output = if block_given?
73
53
  helpers.#{method_name}(*args, **kwargs) { |form|
74
54
  capture do
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::ActionCableMetaTag
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method action_cable_meta_tag
7
+ # Outputs an "action-cable-url" meta tag with the value of the URL specified in your configuration. Ensure this is above your JavaScript tag:
8
+ # @see https://api.rubyonrails.org/classes/ActionCable/Helpers/ActionCableHelper.html#method-i-action_cable_meta_tag
9
+ # @return [nil]
10
+ register_output_helper :action_cable_meta_tag
11
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::ActionName
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method action_name
7
+ # @return [String] the name of the controller action, e.g. <code>"index"</code>
8
+ # @see https://api.rubyonrails.org/classes/AbstractController/Base.html#method-i-action_name
9
+ register_value_helper :action_name
10
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::AssetPath
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method asset_path(source, host: nil, protocol: nil, type: nil, skip_pipeline: nil, extname: nil)
7
+ # @param source [String]
8
+ # @param host [String]
9
+ # @param protocol [String] e.g. <code>"https"</code>
10
+ # @param type [Symbol] e.g. <code>:javascript</code>
11
+ # @param skip_pipeline [bool]
12
+ # @param extname [String] e.g. <code>".js"</code>
13
+ # @see https://api.rubyonrails.org/classes/ActionView/Helpers/AssetUrlHelper.html#method-i-asset_path
14
+ register_value_helper :asset_path
15
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::AssetURL
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method asset_url(...)
7
+ register_value_helper :asset_url
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::AudioPath
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method audio_path(...)
7
+ register_value_helper :audio_path
8
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::AudioTag
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method audio_tag(...)
7
+ # @return [nil]
8
+ register_output_helper :audio_tag
9
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::AudioURL
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method audio_url(...)
7
+ register_value_helper :audio_url
8
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::AutoDiscoveryLinkTag
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method auto_discovery_link_tag(...)
7
+ # @return [nil]
8
+ register_output_helper :auto_discovery_link_tag
9
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::BuildTagValues
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method build_tag_values(...)
7
+ register_value_helper :build_tag_values
8
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::ButtonTag
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method button_tag(...)
7
+ # @return [nil]
8
+ register_output_helper :button_tag
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::ButtonTo
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method button_to(...)
7
+ # @return [nil]
8
+ register_output_helper :button_to
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::CheckBox
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method check_box(...)
7
+ # @return [nil]
8
+ register_output_helper :check_box
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::CheckBoxTag
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method check_box_tag(...)
7
+ # @return [nil]
8
+ register_output_helper :check_box_tag
9
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::ClassNames
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method class_names(...)
7
+ register_value_helper :class_names
8
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::CollectionCheckBoxes
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method collection_check_boxes(...)
7
+ # @yield [builder]
8
+ # @yieldparam builder [Phlex::Rails::BufferedCheckboxBuilder]
9
+ register_builder_yielding_helper :collection_check_boxes, Phlex::Rails::BufferedCheckboxBuilder
10
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::CollectionRadioButtons
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method collection_radio_buttons(...)
7
+ # @yield [builder]
8
+ # @yieldparam builder [Phlex::Rails::BufferedRadioButtonBuilder]
9
+ register_builder_yielding_helper :collection_radio_buttons, Phlex::Rails::BufferedRadioButtonBuilder
10
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::CollectionSelect
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method collection_select(...)
7
+ # @return [nil]
8
+ register_output_helper :collection_select
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::ColorField
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method color_field(...)
7
+ # @return [nil]
8
+ register_output_helper :color_field
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::ColorFieldTag
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method color_field_tag(...)
7
+ # @return [nil]
8
+ register_output_helper :color_field_tag
9
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::ComputeAssetExtname
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method compute_asset_extname(...)
7
+ register_value_helper :compute_asset_extname
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::ComputeAssetHost
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method compute_asset_host(...)
7
+ register_value_helper :compute_asset_host
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::ComputeAssetPath
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method compute_asset_path(...)
7
+ register_value_helper :compute_asset_path
8
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::ContentFor
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method content_for?(...)
7
+ register_value_helper :content_for?
8
+
9
+ # @!method content_for(...)
10
+ register_value_helper :content_for
11
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::ContentTag
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method content_tag(...)
7
+ # @return [nil]
8
+ register_output_helper :content_tag
9
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::ControllerName
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method controller_name(...)
7
+ register_value_helper :controller_name
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::ControllerPath
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method controller_path(...)
7
+ register_value_helper :controller_path
8
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::CSPMetaTag
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method csp_meta_tag(...)
7
+ # @return [nil]
8
+ register_output_helper :csp_meta_tag
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::CSRFMetaTags
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method csrf_meta_tags(...)
7
+ # @return [nil]
8
+ register_output_helper :csrf_meta_tags
9
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::CurrentCycle
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method current_cycle(...)
7
+ register_value_helper :current_cycle
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::CurrentPage
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method current_page?(...)
7
+ register_value_helper :current_page?
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::Cycle
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method cycle(...)
7
+ register_value_helper :cycle
8
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::DateField
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method date_field(...)
7
+ # @return [nil]
8
+ register_output_helper :date_field
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::DateFieldTag
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method date_field_tag(...)
7
+ # @return [nil]
8
+ register_output_helper :date_field_tag
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::DateSelect
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method date_select(...)
7
+ # @return [nil]
8
+ register_output_helper :date_select
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::DatetimeField
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method datetime_field(...)
7
+ # @return [nil]
8
+ register_output_helper :datetime_field
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::DatetimeFieldTag
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method datetime_field_tag(...)
7
+ # @return [nil]
8
+ register_output_helper :datetime_field_tag
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::DatetimeLocalField
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method datetime_local_field(...)
7
+ # @return [nil]
8
+ register_output_helper :datetime_local_field
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::DatetimeLocalFieldTag
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method datetime_local_field_tag(...)
7
+ # @return [nil]
8
+ register_output_helper :datetime_local_field_tag
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::DatetimeSelect
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method datetime_select(...)
7
+ # @return [nil]
8
+ register_output_helper :datetime_select
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::Helpers::Debug
4
+ extend Phlex::Rails::HelperMacros
5
+
6
+ # @!method debug(...)
7
+ # @return [nil]
8
+ register_output_helper :debug
9
+ end