phlex-rails 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
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