phlex-rails 2.0.0.rc1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (223) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -6
  3. data/lib/generators/phlex/component/component_generator.rb +7 -3
  4. data/lib/generators/phlex/install/install_generator.rb +5 -36
  5. data/lib/generators/phlex/view/view_generator.rb +6 -2
  6. data/lib/phlex/rails/buffered.rb +9 -12
  7. data/lib/phlex/rails/buffered_checkbox_builder.rb +0 -4
  8. data/lib/phlex/rails/buffered_form_builder.rb +0 -64
  9. data/lib/phlex/rails/buffered_label_builder.rb +0 -3
  10. data/lib/phlex/rails/buffered_radio_button_builder.rb +0 -4
  11. data/lib/phlex/rails/csv.rb +4 -6
  12. data/lib/phlex/rails/helper_macros.rb +7 -13
  13. data/lib/phlex/rails/helpers/action_cable_meta_tag.rb +4 -5
  14. data/lib/phlex/rails/helpers/action_name.rb +4 -4
  15. data/lib/phlex/rails/helpers/asset_path.rb +4 -9
  16. data/lib/phlex/rails/helpers/asset_url.rb +4 -2
  17. data/lib/phlex/rails/helpers/audio_path.rb +4 -2
  18. data/lib/phlex/rails/helpers/audio_tag.rb +2 -3
  19. data/lib/phlex/rails/helpers/audio_url.rb +2 -2
  20. data/lib/phlex/rails/helpers/auto_discovery_link_tag.rb +2 -3
  21. data/lib/phlex/rails/helpers/build_tag_values.rb +2 -2
  22. data/lib/phlex/rails/helpers/button_tag.rb +2 -3
  23. data/lib/phlex/rails/helpers/button_to.rb +2 -3
  24. data/lib/phlex/rails/helpers/check_box.rb +2 -3
  25. data/lib/phlex/rails/helpers/check_box_tag.rb +2 -3
  26. data/lib/phlex/rails/helpers/class_names.rb +2 -2
  27. data/lib/phlex/rails/helpers/collection_check_boxes.rb +2 -4
  28. data/lib/phlex/rails/helpers/collection_radio_buttons.rb +2 -4
  29. data/lib/phlex/rails/helpers/collection_select.rb +2 -3
  30. data/lib/phlex/rails/helpers/color_field.rb +2 -3
  31. data/lib/phlex/rails/helpers/color_field_tag.rb +2 -3
  32. data/lib/phlex/rails/helpers/compute_asset_extname.rb +2 -2
  33. data/lib/phlex/rails/helpers/compute_asset_host.rb +2 -2
  34. data/lib/phlex/rails/helpers/compute_asset_path.rb +2 -2
  35. data/lib/phlex/rails/helpers/content_for.rb +4 -4
  36. data/lib/phlex/rails/helpers/content_tag.rb +2 -3
  37. data/lib/phlex/rails/helpers/controller_name.rb +2 -2
  38. data/lib/phlex/rails/helpers/controller_path.rb +2 -2
  39. data/lib/phlex/rails/helpers/csp_meta_tag.rb +2 -3
  40. data/lib/phlex/rails/helpers/csrf_meta_tags.rb +2 -3
  41. data/lib/phlex/rails/helpers/current_cycle.rb +2 -2
  42. data/lib/phlex/rails/helpers/current_page.rb +2 -2
  43. data/lib/phlex/rails/helpers/cycle.rb +2 -2
  44. data/lib/phlex/rails/helpers/date_field.rb +2 -3
  45. data/lib/phlex/rails/helpers/date_field_tag.rb +2 -3
  46. data/lib/phlex/rails/helpers/date_select.rb +2 -3
  47. data/lib/phlex/rails/helpers/datetime_field.rb +2 -3
  48. data/lib/phlex/rails/helpers/datetime_field_tag.rb +2 -3
  49. data/lib/phlex/rails/helpers/datetime_local_field.rb +2 -3
  50. data/lib/phlex/rails/helpers/datetime_local_field_tag.rb +2 -3
  51. data/lib/phlex/rails/helpers/datetime_select.rb +2 -3
  52. data/lib/phlex/rails/helpers/debug.rb +2 -3
  53. data/lib/phlex/rails/helpers/default_url_options.rb +2 -2
  54. data/lib/phlex/rails/helpers/distance_of_time_in_words.rb +2 -2
  55. data/lib/phlex/rails/helpers/distance_of_time_in_words_to_now.rb +2 -2
  56. data/lib/phlex/rails/helpers/dom_class.rb +2 -2
  57. data/lib/phlex/rails/helpers/dom_id.rb +2 -2
  58. data/lib/phlex/rails/helpers/email_field.rb +2 -3
  59. data/lib/phlex/rails/helpers/email_field_tag.rb +2 -3
  60. data/lib/phlex/rails/helpers/error_message.rb +2 -2
  61. data/lib/phlex/rails/helpers/error_wrapping.rb +2 -3
  62. data/lib/phlex/rails/helpers/escape_once.rb +2 -2
  63. data/lib/phlex/rails/helpers/excerpt.rb +2 -2
  64. data/lib/phlex/rails/helpers/favicon_link_tag.rb +2 -3
  65. data/lib/phlex/rails/helpers/field_id.rb +2 -2
  66. data/lib/phlex/rails/helpers/field_name.rb +2 -2
  67. data/lib/phlex/rails/helpers/field_set_tag.rb +2 -3
  68. data/lib/phlex/rails/helpers/fields.rb +2 -4
  69. data/lib/phlex/rails/helpers/fields_for.rb +2 -4
  70. data/lib/phlex/rails/helpers/file_field.rb +2 -3
  71. data/lib/phlex/rails/helpers/file_field_tag.rb +2 -3
  72. data/lib/phlex/rails/helpers/flash.rb +2 -2
  73. data/lib/phlex/rails/helpers/font_path.rb +2 -2
  74. data/lib/phlex/rails/helpers/font_url.rb +2 -2
  75. data/lib/phlex/rails/helpers/form_authenticity_token.rb +8 -0
  76. data/lib/phlex/rails/helpers/form_for.rb +2 -4
  77. data/lib/phlex/rails/helpers/form_tag.rb +2 -3
  78. data/lib/phlex/rails/helpers/form_with.rb +2 -4
  79. data/lib/phlex/rails/helpers/grouped_collection_select.rb +2 -3
  80. data/lib/phlex/rails/helpers/grouped_options_for_select.rb +2 -3
  81. data/lib/phlex/rails/helpers/hidden_field.rb +2 -3
  82. data/lib/phlex/rails/helpers/hidden_field_tag.rb +2 -3
  83. data/lib/phlex/rails/helpers/highlight.rb +2 -3
  84. data/lib/phlex/rails/helpers/image_path.rb +2 -2
  85. data/lib/phlex/rails/helpers/image_submit_tag.rb +2 -3
  86. data/lib/phlex/rails/helpers/image_tag.rb +2 -3
  87. data/lib/phlex/rails/helpers/image_url.rb +2 -2
  88. data/lib/phlex/rails/helpers/javascript_import_module_tag.rb +2 -3
  89. data/lib/phlex/rails/helpers/javascript_importmap_tags.rb +2 -3
  90. data/lib/phlex/rails/helpers/javascript_include_tag.rb +2 -3
  91. data/lib/phlex/rails/helpers/javascript_path.rb +2 -2
  92. data/lib/phlex/rails/helpers/javascript_tag.rb +2 -3
  93. data/lib/phlex/rails/helpers/javascript_url.rb +2 -2
  94. data/lib/phlex/rails/helpers/l.rb +2 -2
  95. data/lib/phlex/rails/helpers/label.rb +2 -2
  96. data/lib/phlex/rails/helpers/label_tag.rb +4 -3
  97. data/lib/phlex/rails/helpers/link_to.rb +2 -3
  98. data/lib/phlex/rails/helpers/link_to_if.rb +2 -3
  99. data/lib/phlex/rails/helpers/link_to_unless.rb +2 -3
  100. data/lib/phlex/rails/helpers/link_to_unless_current.rb +2 -3
  101. data/lib/phlex/rails/helpers/localize.rb +2 -2
  102. data/lib/phlex/rails/helpers/mail_to.rb +2 -3
  103. data/lib/phlex/rails/helpers/month_field.rb +2 -3
  104. data/lib/phlex/rails/helpers/month_field_tag.rb +2 -3
  105. data/lib/phlex/rails/helpers/notice.rb +2 -2
  106. data/lib/phlex/rails/helpers/number_field.rb +2 -3
  107. data/lib/phlex/rails/helpers/number_field_tag.rb +2 -3
  108. data/lib/phlex/rails/helpers/number_to_currency.rb +2 -2
  109. data/lib/phlex/rails/helpers/number_to_human.rb +2 -2
  110. data/lib/phlex/rails/helpers/number_to_human_size.rb +2 -2
  111. data/lib/phlex/rails/helpers/number_to_percentage.rb +2 -2
  112. data/lib/phlex/rails/helpers/number_to_phone.rb +2 -2
  113. data/lib/phlex/rails/helpers/number_with_delimiter.rb +2 -2
  114. data/lib/phlex/rails/helpers/number_with_precision.rb +2 -2
  115. data/lib/phlex/rails/helpers/object.rb +2 -2
  116. data/lib/phlex/rails/helpers/option_groups_from_collection_for_select.rb +2 -3
  117. data/lib/phlex/rails/helpers/options_for_select.rb +2 -3
  118. data/lib/phlex/rails/helpers/options_from_collection_for_select.rb +2 -3
  119. data/lib/phlex/rails/helpers/password_field.rb +2 -3
  120. data/lib/phlex/rails/helpers/password_field_tag.rb +2 -3
  121. data/lib/phlex/rails/helpers/path_to_asset.rb +2 -2
  122. data/lib/phlex/rails/helpers/path_to_audio.rb +2 -2
  123. data/lib/phlex/rails/helpers/path_to_font.rb +2 -2
  124. data/lib/phlex/rails/helpers/path_to_image.rb +2 -2
  125. data/lib/phlex/rails/helpers/path_to_javascript.rb +2 -2
  126. data/lib/phlex/rails/helpers/path_to_stylesheet.rb +2 -2
  127. data/lib/phlex/rails/helpers/path_to_video.rb +2 -2
  128. data/lib/phlex/rails/helpers/phone_field.rb +2 -3
  129. data/lib/phlex/rails/helpers/phone_field_tag.rb +2 -3
  130. data/lib/phlex/rails/helpers/phone_to.rb +2 -3
  131. data/lib/phlex/rails/helpers/pluralize.rb +2 -3
  132. data/lib/phlex/rails/helpers/preload_link_tag.rb +2 -3
  133. data/lib/phlex/rails/helpers/provide.rb +2 -2
  134. data/lib/phlex/rails/helpers/public_compute_asset_path.rb +2 -2
  135. data/lib/phlex/rails/helpers/radio_button.rb +2 -3
  136. data/lib/phlex/rails/helpers/radio_button_tag.rb +2 -3
  137. data/lib/phlex/rails/helpers/range_field.rb +2 -3
  138. data/lib/phlex/rails/helpers/range_field_tag.rb +2 -3
  139. data/lib/phlex/rails/helpers/request.rb +2 -2
  140. data/lib/phlex/rails/helpers/reset_cycle.rb +2 -2
  141. data/lib/phlex/rails/helpers/rich_text_area.rb +2 -3
  142. data/lib/phlex/rails/helpers/sanitize.rb +2 -2
  143. data/lib/phlex/rails/helpers/sanitize_css.rb +2 -2
  144. data/lib/phlex/rails/helpers/search_field.rb +2 -3
  145. data/lib/phlex/rails/helpers/search_field_tag.rb +2 -3
  146. data/lib/phlex/rails/helpers/select.rb +2 -3
  147. data/lib/phlex/rails/helpers/select_date.rb +2 -3
  148. data/lib/phlex/rails/helpers/select_datetime.rb +2 -3
  149. data/lib/phlex/rails/helpers/select_day.rb +2 -3
  150. data/lib/phlex/rails/helpers/select_hour.rb +2 -3
  151. data/lib/phlex/rails/helpers/select_minute.rb +2 -3
  152. data/lib/phlex/rails/helpers/select_month.rb +2 -3
  153. data/lib/phlex/rails/helpers/select_second.rb +2 -3
  154. data/lib/phlex/rails/helpers/select_tag.rb +2 -3
  155. data/lib/phlex/rails/helpers/select_time.rb +2 -3
  156. data/lib/phlex/rails/helpers/select_year.rb +2 -3
  157. data/lib/phlex/rails/helpers/simple_format.rb +2 -3
  158. data/lib/phlex/rails/helpers/sms_to.rb +2 -3
  159. data/lib/phlex/rails/helpers/strip_links.rb +2 -2
  160. data/lib/phlex/rails/helpers/strip_tags.rb +2 -2
  161. data/lib/phlex/rails/helpers/stylesheet_link_tag.rb +2 -3
  162. data/lib/phlex/rails/helpers/stylesheet_path.rb +2 -2
  163. data/lib/phlex/rails/helpers/stylesheet_url.rb +2 -2
  164. data/lib/phlex/rails/helpers/submit_tag.rb +2 -3
  165. data/lib/phlex/rails/helpers/tag.rb +4 -7
  166. data/lib/phlex/rails/helpers/telephone_field.rb +2 -3
  167. data/lib/phlex/rails/helpers/telephone_field_tag.rb +2 -3
  168. data/lib/phlex/rails/helpers/text_area.rb +2 -3
  169. data/lib/phlex/rails/helpers/text_area_tag.rb +2 -3
  170. data/lib/phlex/rails/helpers/text_field.rb +2 -3
  171. data/lib/phlex/rails/helpers/text_field_tag.rb +2 -3
  172. data/lib/phlex/rails/helpers/time_ago_in_words.rb +2 -2
  173. data/lib/phlex/rails/helpers/time_field.rb +2 -3
  174. data/lib/phlex/rails/helpers/time_field_tag.rb +2 -3
  175. data/lib/phlex/rails/helpers/time_select.rb +2 -3
  176. data/lib/phlex/rails/helpers/time_tag.rb +2 -3
  177. data/lib/phlex/rails/helpers/time_zone_options_for_select.rb +2 -3
  178. data/lib/phlex/rails/helpers/time_zone_select.rb +2 -3
  179. data/lib/phlex/rails/helpers/token_list.rb +2 -2
  180. data/lib/phlex/rails/helpers/translate.rb +3 -1
  181. data/lib/phlex/rails/helpers/truncate.rb +2 -2
  182. data/lib/phlex/rails/helpers/turbo_frame_tag.rb +2 -2
  183. data/lib/phlex/rails/helpers/turbo_include_tags.rb +2 -2
  184. data/lib/phlex/rails/helpers/turbo_refresh_method_tag.rb +2 -2
  185. data/lib/phlex/rails/helpers/turbo_refresh_scroll_tag.rb +2 -2
  186. data/lib/phlex/rails/helpers/turbo_refreshes_with.rb +2 -3
  187. data/lib/phlex/rails/helpers/turbo_stream.rb +3 -2
  188. data/lib/phlex/rails/helpers/turbo_stream_from.rb +2 -2
  189. data/lib/phlex/rails/helpers/url_field.rb +2 -3
  190. data/lib/phlex/rails/helpers/url_field_tag.rb +2 -3
  191. data/lib/phlex/rails/helpers/url_for.rb +2 -2
  192. data/lib/phlex/rails/helpers/url_options.rb +2 -2
  193. data/lib/phlex/rails/helpers/url_to_asset.rb +2 -2
  194. data/lib/phlex/rails/helpers/url_to_audio.rb +2 -2
  195. data/lib/phlex/rails/helpers/url_to_font.rb +2 -2
  196. data/lib/phlex/rails/helpers/url_to_image.rb +2 -2
  197. data/lib/phlex/rails/helpers/url_to_javascript.rb +2 -2
  198. data/lib/phlex/rails/helpers/url_to_stylesheet.rb +2 -2
  199. data/lib/phlex/rails/helpers/url_to_video.rb +2 -2
  200. data/lib/phlex/rails/helpers/utf8_enforcer_tag.rb +2 -3
  201. data/lib/phlex/rails/helpers/video_path.rb +2 -2
  202. data/lib/phlex/rails/helpers/video_tag.rb +2 -3
  203. data/lib/phlex/rails/helpers/video_url.rb +2 -2
  204. data/lib/phlex/rails/helpers/week_field.rb +2 -3
  205. data/lib/phlex/rails/helpers/week_field_tag.rb +2 -3
  206. data/lib/phlex/rails/helpers/weekday_options_for_select.rb +2 -3
  207. data/lib/phlex/rails/helpers/weekday_select.rb +2 -3
  208. data/lib/phlex/rails/helpers/with_output_buffer.rb +1 -3
  209. data/lib/phlex/rails/helpers/word_wrap.rb +2 -2
  210. data/lib/phlex/rails/helpers.rb +1 -0
  211. data/lib/phlex/rails/html.rb +7 -4
  212. data/lib/phlex/rails/layout.rb +6 -6
  213. data/lib/phlex/rails/sgml.rb +111 -72
  214. data/lib/phlex/rails/streaming.rb +2 -3
  215. data/lib/phlex/rails/svg.rb +12 -0
  216. data/lib/phlex/rails/unbuffered.rb +16 -23
  217. data/lib/phlex/rails/version.rb +1 -1
  218. data/lib/phlex/rails.rb +16 -16
  219. metadata +12 -13
  220. data/lib/phlex/rails/engine.rb +0 -10
  221. data/lib/phlex/rails/fragment_finder.rb +0 -28
  222. data/lib/phlex/rails/helper_finder.rb +0 -13
  223. data/lib/phlex/rails/testing.rb +0 -18
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 82a501ef5c7c4fafcc63ec4cab4c4e2463be6dbdb467af0bb87ef03cf0bd4b10
4
- data.tar.gz: 781b9217536035e543e9ddc9db55dbfca518faf40974804eced2b49b8b9db97e
3
+ metadata.gz: 99afebaac03dab652e1ebfa7b1037d2fa650ac46af545ac97a96c2ff1fcf36d9
4
+ data.tar.gz: a2fddfa82b2f9cdb3fcc4ee9c2e7f97e6925ee9a47ffe8eec3b5b40c1f81f127
5
5
  SHA512:
6
- metadata.gz: b21338b1d04ef04300133459bdbbf27d9cd07c023bbc7bdf0282c310ef214170be4d12a30fc9a1637fcc00db54329728ddd6852cd7d2d14fb047d651b37f3cee
7
- data.tar.gz: 05f5a87850528bcf32ec8dafce55971a2dbdfaa5a17e0e7291d6a040e761da706ad83d54310562e8f0da59fb26b8cd5ed3d5642fa41bb95bf6304e187d7ad9a9
6
+ metadata.gz: aa23e9efa3d071729eec9e6589971b5ade4644f13d98402b94f398cc045e9b6293c55069f605b7647b5b08ba05b9a44f3a7236530b0c8f3ddd618305cdc1f501
7
+ data.tar.gz: 5715fed7d4983d3411bde34ebc35f35a3c99f1314efa348f547c945a557b26dfd6b682dd34e3098c634a34150ff9454e434c2bf041f2c45634493d4f90e76830
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- <a href="https://www.phlex.fun"><img alt="Phlex logo" src="phlex_logo.png" width="180" /></a>
1
+ # Phlex Rails
2
2
 
3
3
  Phlex is a framework that lets you compose web views in pure Ruby.
4
4
 
@@ -20,8 +20,4 @@ Maintaining a library is a lot of work. If your company benefits from this work
20
20
 
21
21
  ### Security 🚨
22
22
 
23
- If you’ve found a potential security issue, please email [security@phlex.fun](mailto:security@phlex.fun).
24
-
25
- ### Thanks 🙏
26
-
27
- Thanks [Logology](https://www.logology.co) for sponsoring our logo.
23
+ If you suspect you may have found a security vulnerability, please do not open a public issue or pull request. Instead, please [send us a private advisory](https://github.com/phlex-ruby/phlex/security/advisories/new).
@@ -4,9 +4,13 @@ module Phlex::Generators
4
4
  class ComponentGenerator < ::Rails::Generators::NamedBase
5
5
  source_root File.expand_path("templates", __dir__)
6
6
 
7
- def create_view
8
- @path = File.join("app/components", class_path, "#{file_name}.rb")
9
- template "component.rb.erb", @path
7
+ def create_component
8
+ template "component.rb.erb", File.join(
9
+ destination_root,
10
+ "app/components",
11
+ class_path,
12
+ "#{file_name}.rb"
13
+ )
10
14
  end
11
15
  end
12
16
  end
@@ -4,47 +4,16 @@ module Phlex::Generators
4
4
  class InstallGenerator < ::Rails::Generators::Base
5
5
  source_root File.expand_path("templates", __dir__)
6
6
 
7
- APPLICATION_CONFIGURATION_PATH = Rails.root.join("config/application.rb")
8
-
9
- def configure_tailwind
10
- if tailwind_configuration_path
11
- insert_into_file tailwind_configuration_path, after: "content: [" do
12
- "\n './app/views/**/*.rb', // Phlex views" \
13
- "\n './app/components/**/*.rb', // Phlex components" \
14
- end
15
- end
16
- end
17
-
18
- def create_application_component
19
- template "base_component.rb.erb", Rails.root.join("app/components/base.rb")
20
- end
21
-
22
- def create_application_view
23
- template "base_view.rb.erb", Rails.root.join("app/views/base.rb")
24
- end
25
-
26
7
  def create_initializer
27
- template "phlex.rb.erb", Rails.root.join("config/initializers/phlex.rb")
8
+ template "phlex.rb.erb", File.join(destination_root, "config/initializers/phlex.rb")
28
9
  end
29
10
 
30
- private
31
-
32
- def tailwind_configuration_path
33
- if tailwind_configuration_files.any?
34
- Pathname.new(
35
- tailwind_configuration_files.first,
36
- )
37
- end
11
+ def create_base_component
12
+ template "base_component.rb.erb", File.join(destination_root, "app/components/base.rb")
38
13
  end
39
14
 
40
- def tailwind_configuration_files
41
- Dir.glob(
42
- [
43
- "#{Rails.root}/tailwind.config.js",
44
- "#{Rails.root}/app/**/tailwind.config.js",
45
- "#{Rails.root}/config/**/tailwind.config.js",
46
- ],
47
- )
15
+ def create_base_view
16
+ template "base_view.rb.erb", File.join(destination_root, "app/views/base.rb")
48
17
  end
49
18
  end
50
19
  end
@@ -5,8 +5,12 @@ module Phlex::Generators
5
5
  source_root File.expand_path("templates", __dir__)
6
6
 
7
7
  def create_view
8
- @path = File.join("app/views", class_path, "#{file_name}.rb")
9
- template "view.rb.erb", @path
8
+ template "view.rb.erb", File.join(
9
+ destination_root,
10
+ "app/views",
11
+ class_path,
12
+ "#{file_name}.rb"
13
+ )
10
14
  end
11
15
  end
12
16
  end
@@ -3,12 +3,9 @@
3
3
  require "forwardable"
4
4
 
5
5
  module Phlex::Rails
6
- # A decorator that buffers all missing method calls and captures the blocks passed to them.
7
- # @api private
8
6
  class Buffered < BasicObject
9
7
  extend ::Forwardable
10
8
 
11
- # @api private
12
9
  def self.define_builder_yielding_method(method_name, builder)
13
10
  class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
14
11
  # frozen_string_literal: true
@@ -16,10 +13,10 @@ module Phlex::Rails
16
13
  def #{method_name}(*args, **kwargs, &block)
17
14
  output = if block
18
15
  @object.#{method_name}(*args, **kwargs) { |builder|
19
- @view.capture do
16
+ @component.capture do
20
17
  yield(
21
18
  ::#{builder.name}.new(builder,
22
- view: @view
19
+ component: @component
23
20
  )
24
21
  )
25
22
  end
@@ -30,7 +27,7 @@ module Phlex::Rails
30
27
 
31
28
  case output
32
29
  when ::ActiveSupport::SafeBuffer
33
- @view.instance_variable_get(:@_context).buffer << output
30
+ @component.raw(output)
34
31
  end
35
32
 
36
33
  nil
@@ -38,10 +35,9 @@ module Phlex::Rails
38
35
  RUBY
39
36
  end
40
37
 
41
- # @api private
42
- def initialize(object, view:)
38
+ def initialize(object, component:)
43
39
  @object = object
44
- @view = view
40
+ @component = component
45
41
  end
46
42
 
47
43
  def respond_to_missing?(...)
@@ -50,13 +46,14 @@ module Phlex::Rails
50
46
 
51
47
  def method_missing(*, **, &block)
52
48
  output = if block
53
- @object.public_send(*, **) { |*a| @view.capture(*a, &block) }
49
+ @object.public_send(*, **) { |*a| @component.capture(*a, &block) }
54
50
  else
55
51
  @object.public_send(*, **)
56
52
  end
57
53
 
58
- if ::ActiveSupport::SafeBuffer === output
59
- @view.instance_variable_get(:@_context).buffer << output
54
+ case output
55
+ when ::ActiveSupport::SafeBuffer
56
+ @component.raw(output)
60
57
  end
61
58
 
62
59
  nil
@@ -1,11 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Phlex::Rails
4
- # @api private
5
4
  class BufferedCheckboxBuilder < Buffered
6
- # @!method object(...)
7
- # @!method text(...)
8
- # @!method value(...)
9
5
  def_delegators :@object,
10
6
  :object,
11
7
  :text,
@@ -1,14 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Phlex::Rails
4
- # @api private
5
4
  class BufferedFormBuilder < Buffered
6
- # @!method field_id(...)
7
- # @!method field_name(...)
8
- # @!method id(...)
9
- # @!method multipart=(value)
10
- # @!method to_model(...)
11
- # @!method to_partial_path(...)
12
5
  def_delegators :@object,
13
6
  :to_model,
14
7
  :to_partial_path,
@@ -33,67 +26,10 @@ module Phlex::Rails
33
26
  :convert_to_model,
34
27
  :model_name_from_record_or_class
35
28
 
36
- # @!method button(...)
37
- # @!method check_box(...)
38
- # @!method collection_select(...)
39
- # @!method color_field(...)
40
- # @!method date_field(...)
41
- # @!method date_select(...)
42
- # @!method datetime_field(...)
43
- # @!method datetime_local_field(...)
44
- # @!method datetime_select(...)
45
- # @!method email_field(...)
46
- # @!method file_field(...)
47
- # @!method grouped_collection_select(...)
48
- # @!method hidden_field(...)
49
- # @!method month_field(...)
50
- # @!method number_field(...)
51
- # @!method password_field(...)
52
- # @!method phone_field(...)
53
- # @!method radio_button(...)
54
- # @!method range_field(...)
55
- # @!method rich_text_area(...)
56
- # @!method search_field(...)
57
- # @!method select(...)
58
- # @!method submit(...)
59
- # @!method telephone_field(name, value = nil, **attributes)
60
- # Outputs an input field of type <code>tel</code>.
61
- # @param name [Symbol] the name of the field.
62
- # @param value [String] the default value.
63
- # @param attributes HTML attributes.
64
- # @return [nil]
65
- # @!method text_area(...)
66
- # @!method text_field(...)
67
- # @!method time_field(...)
68
- # @!method time_select(...)
69
- # @!method time_zone_select(...)
70
- # @!method url_field(...)
71
- # @!method week_field(...)
72
- # @!method weekday_select(...)
73
-
74
- # @!method label(...)
75
- # @yield [builder]
76
- # @yieldparam builder [Phlex::Rails::BufferedLabelBuilder]
77
29
  define_builder_yielding_method :label, ::Phlex::Rails::BufferedLabelBuilder
78
-
79
- # @!method fields(...)
80
- # @yield [builder]
81
- # @yieldparam builder [Phlex::Rails::BufferedFormBuilder]
82
30
  define_builder_yielding_method :fields, ::Phlex::Rails::BufferedFormBuilder
83
-
84
- # @!method fields_for(...)
85
- # @yield [builder]
86
- # @yieldparam builder [Phlex::Rails::BufferedFormBuilder]
87
31
  define_builder_yielding_method :fields_for, ::Phlex::Rails::BufferedFormBuilder
88
-
89
- # @!method collection_check_boxes(...)
90
- # @yield [builder]
91
- # @yieldparam builder [Phlex::Rails::BufferedCheckboxBuilder]
92
32
  define_builder_yielding_method :collection_check_boxes, ::Phlex::Rails::BufferedCheckboxBuilder
93
-
94
- # @!method collection_radio_buttons(...)
95
- # @yield [builder]
96
- # @yieldparam builder [Phlex::Rails::BufferedRadioButtonBuilder]
97
33
  define_builder_yielding_method :collection_radio_buttons, ::Phlex::Rails::BufferedRadioButtonBuilder
98
34
  end
99
35
  end
@@ -1,10 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Phlex::Rails
4
- # @api private
5
4
  class BufferedLabelBuilder < Buffered
6
- # @!method object(...)
7
- # @!method translation(...)
8
5
  def_delegators :@object,
9
6
  :object,
10
7
  :translation
@@ -1,11 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Phlex::Rails
4
- # @api private
5
4
  class BufferedRadioButtonBuilder < Buffered
6
- # @!method object(...)
7
- # @!method text(...)
8
- # @!method value(...)
9
5
  def_delegators :@object,
10
6
  :object,
11
7
  :text,
@@ -3,13 +3,11 @@
3
3
  module Phlex
4
4
  module Rails
5
5
  module CSV
6
- module Overrides
7
- def each_item(&)
8
- return super unless ActiveRecord::Relation === collection
9
- return super unless collection.arel.orders.empty?
6
+ def each_item(&)
7
+ return super unless ActiveRecord::Relation === collection
8
+ return super unless collection.arel.orders.empty?
10
9
 
11
- collection.find_each(&)
12
- end
10
+ collection.find_each(&)
13
11
  end
14
12
  end
15
13
  end
@@ -7,13 +7,10 @@ module Phlex::Rails::HelperMacros
7
7
  # frozen_string_literal: true
8
8
 
9
9
  def #{method_name}(*args, **kwargs, &block)
10
- context = @_context
11
- return if context.fragments && !context.in_target_fragment
12
-
13
10
  output = if block
14
- helpers.#{method_name}(*args, **kwargs) { capture(&block) }
11
+ view_context.#{method_name}(*args, **kwargs) { capture(&block) }
15
12
  else
16
- helpers.#{method_name}(*args, **kwargs)
13
+ view_context.#{method_name}(*args, **kwargs)
17
14
  end
18
15
 
19
16
  raw(output)
@@ -28,34 +25,31 @@ module Phlex::Rails::HelperMacros
28
25
 
29
26
  def #{method_name}(*args, **kwargs, &block)
30
27
  if block
31
- helpers.#{method_name}(*args, **kwargs) { capture(&block) }
28
+ view_context.#{method_name}(*args, **kwargs) { capture(&block) }
32
29
  else
33
- helpers.#{method_name}(*args, **kwargs)
30
+ view_context.#{method_name}(*args, **kwargs)
34
31
  end
35
32
  end
36
33
  RUBY
37
34
  end
38
35
 
39
- # @api private
40
36
  def register_builder_yielding_helper(method_name, builder)
41
37
  class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
42
38
  # frozen_string_literal: true
43
39
 
44
40
  def #{method_name}(*args, **kwargs)
45
- context = @_context
46
- return if context.fragments && !context.in_target_fragment
47
41
  output = if block_given?
48
- helpers.#{method_name}(*args, **kwargs) { |form|
42
+ view_context.#{method_name}(*args, **kwargs) { |form|
49
43
  capture do
50
44
  yield(
51
45
  #{builder.name}.new(form,
52
- view: self
46
+ component: self
53
47
  )
54
48
  )
55
49
  end
56
50
  }
57
51
  else
58
- helpers.#{method_name}(*args, **kwargs)
52
+ view_context.#{method_name}(*args, **kwargs)
59
53
  end
60
54
 
61
55
  raw(output)
@@ -3,9 +3,8 @@
3
3
  module Phlex::Rails::Helpers::ActionCableMetaTag
4
4
  extend Phlex::Rails::HelperMacros
5
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
6
+ # Outputs an “action-cable-url” meta tag with the value of the URL specified in your configuration. Ensure this is above your JavaScript tag:
7
+ #
8
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionCable/Helpers/ActionCableHelper.html#method-i-action_cable_meta_tag)
9
+ register_output_helper def action_cable_meta_tag(...) = nil
11
10
  end
@@ -3,8 +3,8 @@
3
3
  module Phlex::Rails::Helpers::ActionName
4
4
  extend Phlex::Rails::HelperMacros
5
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
6
+ # Returns the name of the action this controller is processing.
7
+ #
8
+ # [Rails Docs](https://api.rubyonrails.org/classes/AbstractController/Base.html#method-i-action_name)
9
+ register_value_helper def action_name(...) = nil
10
10
  end
@@ -3,13 +3,8 @@
3
3
  module Phlex::Rails::Helpers::AssetPath
4
4
  extend Phlex::Rails::HelperMacros
5
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
6
+ # This is the entry point for all assets.
7
+ #
8
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/AssetUrlHelper.html#method-i-asset_path)
9
+ register_value_helper def asset_path(...) = nil
15
10
  end
@@ -3,6 +3,8 @@
3
3
  module Phlex::Rails::Helpers::AssetURL
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
- # @!method asset_url(...)
7
- register_value_helper :asset_url
6
+ # Computes the full URL to an asset in the public directory.
7
+ #
8
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/AssetUrlHelper.html#method-i-asset_url)
9
+ register_value_helper def asset_url(...) = nil
8
10
  end
@@ -3,6 +3,8 @@
3
3
  module Phlex::Rails::Helpers::AudioPath
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
- # @!method audio_path(...)
7
- register_value_helper :audio_path
6
+ # Computes the path to an audio asset in the public audios directory.
7
+ #
8
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/AssetUrlHelper.html#method-i-audio_path)
9
+ register_value_helper def audio_path(...) = nil
8
10
  end
@@ -3,7 +3,6 @@
3
3
  module Phlex::Rails::Helpers::AudioTag
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
- # @!method audio_tag(...)
7
- # @return [nil]
8
- register_output_helper :audio_tag
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html#method-i-audio_tag)
7
+ register_output_helper def audio_tag(...) = nil
9
8
  end
@@ -3,6 +3,6 @@
3
3
  module Phlex::Rails::Helpers::AudioURL
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
- # @!method audio_url(...)
7
- register_value_helper :audio_url
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/AssetUrlHelper.html#method-i-audio_url)
7
+ register_value_helper def audio_url(...) = nil
8
8
  end
@@ -3,7 +3,6 @@
3
3
  module Phlex::Rails::Helpers::AutoDiscoveryLinkTag
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
- # @!method auto_discovery_link_tag(...)
7
- # @return [nil]
8
- register_output_helper :auto_discovery_link_tag
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html#method-i-auto_discovery_link_tag)
7
+ register_output_helper def auto_discovery_link_tag(...) = nil
9
8
  end
@@ -3,6 +3,6 @@
3
3
  module Phlex::Rails::Helpers::BuildTagValues
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
- # @!method build_tag_values(...)
7
- register_value_helper :build_tag_values
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/TagHelper.html#method-c-build_tag_values)
7
+ register_value_helper def build_tag_values(...) = nil
8
8
  end
@@ -3,7 +3,6 @@
3
3
  module Phlex::Rails::Helpers::ButtonTag
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
- # @!method button_tag(...)
7
- # @return [nil]
8
- register_output_helper :button_tag
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-button_tag)
7
+ register_output_helper def button_tag(...) = nil
9
8
  end
@@ -3,7 +3,6 @@
3
3
  module Phlex::Rails::Helpers::ButtonTo
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
- # @!method button_to(...)
7
- # @return [nil]
8
- register_output_helper :button_to
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-button_to)
7
+ register_output_helper def button_to(...) = nil
9
8
  end
@@ -3,7 +3,6 @@
3
3
  module Phlex::Rails::Helpers::CheckBox
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
- # @!method check_box(...)
7
- # @return [nil]
8
- register_output_helper :check_box
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-check_box)
7
+ register_output_helper def check_box(...) = nil
9
8
  end
@@ -3,7 +3,6 @@
3
3
  module Phlex::Rails::Helpers::CheckBoxTag
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
- # @!method check_box_tag(...)
7
- # @return [nil]
8
- register_output_helper :check_box_tag
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-check_box_tag)
7
+ register_output_helper def check_box_tag(...) = nil
9
8
  end
@@ -3,6 +3,6 @@
3
3
  module Phlex::Rails::Helpers::ClassNames
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
- # @!method class_names(...)
7
- register_value_helper :class_names
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/TagHelper.html#method-i-class_names)
7
+ register_value_helper def class_names(...) = nil
8
8
  end
@@ -3,8 +3,6 @@
3
3
  module Phlex::Rails::Helpers::CollectionCheckBoxes
4
4
  extend Phlex::Rails::HelperMacros
5
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
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_check_boxes)
7
+ register_builder_yielding_helper def collection_check_boxes(...) = nil, Phlex::Rails::BufferedCheckboxBuilder
10
8
  end
@@ -3,8 +3,6 @@
3
3
  module Phlex::Rails::Helpers::CollectionRadioButtons
4
4
  extend Phlex::Rails::HelperMacros
5
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
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_radio_buttons)
7
+ register_builder_yielding_helper def collection_radio_buttons(...) = nil, Phlex::Rails::BufferedRadioButtonBuilder
10
8
  end
@@ -3,7 +3,6 @@
3
3
  module Phlex::Rails::Helpers::CollectionSelect
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
- # @!method collection_select(...)
7
- # @return [nil]
8
- register_output_helper :collection_select
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_select)
7
+ register_output_helper def collection_select(...) = nil
9
8
  end
@@ -3,7 +3,6 @@
3
3
  module Phlex::Rails::Helpers::ColorField
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
- # @!method color_field(...)
7
- # @return [nil]
8
- register_output_helper :color_field
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-color_field)
7
+ register_output_helper def color_field(...) = nil
9
8
  end
@@ -3,7 +3,6 @@
3
3
  module Phlex::Rails::Helpers::ColorFieldTag
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
- # @!method color_field_tag(...)
7
- # @return [nil]
8
- register_output_helper :color_field_tag
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-color_field_tag)
7
+ register_output_helper def color_field_tag(...) = nil
9
8
  end
@@ -3,6 +3,6 @@
3
3
  module Phlex::Rails::Helpers::ComputeAssetExtname
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
- # @!method compute_asset_extname(...)
7
- register_value_helper :compute_asset_extname
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/AssetUrlHelper.html#method-i-compute_asset_extname)
7
+ register_value_helper def compute_asset_extname(...) = nil
8
8
  end
@@ -3,6 +3,6 @@
3
3
  module Phlex::Rails::Helpers::ComputeAssetHost
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
- # @!method compute_asset_host(...)
7
- register_value_helper :compute_asset_host
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/AssetUrlHelper.html#method-i-compute_asset_host)
7
+ register_value_helper def compute_asset_host(...) = nil
8
8
  end
@@ -3,6 +3,6 @@
3
3
  module Phlex::Rails::Helpers::ComputeAssetPath
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
- # @!method compute_asset_path(...)
7
- register_value_helper :compute_asset_path
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/AssetUrlHelper.html#method-i-compute_asset_path)
7
+ register_value_helper def compute_asset_path(...) = nil
8
8
  end
@@ -3,9 +3,9 @@
3
3
  module Phlex::Rails::Helpers::ContentFor
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
- # @!method content_for?(...)
7
- register_value_helper :content_for?
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method-i-content_for)
7
+ register_value_helper def content_for(...) = nil
8
8
 
9
- # @!method content_for(...)
10
- register_value_helper :content_for
9
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method-i-content_for-3F)
10
+ register_value_helper def content_for?(...) = nil
11
11
  end