actionview 7.1.5.2 → 8.1.2.1

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 (70) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +96 -436
  3. data/README.rdoc +1 -1
  4. data/lib/action_view/base.rb +29 -11
  5. data/lib/action_view/buffers.rb +1 -1
  6. data/lib/action_view/cache_expiry.rb +9 -3
  7. data/lib/action_view/dependency_tracker/erb_tracker.rb +37 -28
  8. data/lib/action_view/dependency_tracker/ruby_tracker.rb +43 -0
  9. data/lib/action_view/dependency_tracker/wildcard_resolver.rb +32 -0
  10. data/lib/action_view/dependency_tracker.rb +8 -2
  11. data/lib/action_view/digestor.rb +6 -2
  12. data/lib/action_view/gem_version.rb +3 -3
  13. data/lib/action_view/helpers/asset_tag_helper.rb +39 -8
  14. data/lib/action_view/helpers/atom_feed_helper.rb +1 -3
  15. data/lib/action_view/helpers/cache_helper.rb +10 -2
  16. data/lib/action_view/helpers/capture_helper.rb +2 -2
  17. data/lib/action_view/helpers/controller_helper.rb +6 -2
  18. data/lib/action_view/helpers/csrf_helper.rb +1 -1
  19. data/lib/action_view/helpers/date_helper.rb +28 -4
  20. data/lib/action_view/helpers/form_helper.rb +277 -272
  21. data/lib/action_view/helpers/form_options_helper.rb +39 -35
  22. data/lib/action_view/helpers/form_tag_helper.rb +115 -72
  23. data/lib/action_view/helpers/javascript_helper.rb +5 -1
  24. data/lib/action_view/helpers/number_helper.rb +14 -0
  25. data/lib/action_view/helpers/output_safety_helper.rb +5 -6
  26. data/lib/action_view/helpers/rendering_helper.rb +160 -50
  27. data/lib/action_view/helpers/sanitize_helper.rb +6 -0
  28. data/lib/action_view/helpers/tag_helper.rb +225 -48
  29. data/lib/action_view/helpers/tags/base.rb +11 -9
  30. data/lib/action_view/helpers/tags/check_box.rb +9 -3
  31. data/lib/action_view/helpers/tags/collection_check_boxes.rb +4 -3
  32. data/lib/action_view/helpers/tags/collection_helpers.rb +2 -1
  33. data/lib/action_view/helpers/tags/datetime_field.rb +1 -1
  34. data/lib/action_view/helpers/tags/file_field.rb +7 -2
  35. data/lib/action_view/helpers/tags/hidden_field.rb +1 -1
  36. data/lib/action_view/helpers/tags/label.rb +3 -10
  37. data/lib/action_view/helpers/tags/radio_button.rb +1 -1
  38. data/lib/action_view/helpers/tags/select.rb +6 -1
  39. data/lib/action_view/helpers/tags/select_renderer.rb +6 -4
  40. data/lib/action_view/helpers/tags/text_area.rb +1 -1
  41. data/lib/action_view/helpers/tags/text_field.rb +1 -1
  42. data/lib/action_view/helpers/text_helper.rb +11 -4
  43. data/lib/action_view/helpers/translation_helper.rb +6 -1
  44. data/lib/action_view/helpers/url_helper.rb +42 -90
  45. data/lib/action_view/layouts.rb +9 -11
  46. data/lib/action_view/locale/en.yml +3 -0
  47. data/lib/action_view/log_subscriber.rb +9 -8
  48. data/lib/action_view/railtie.rb +12 -2
  49. data/lib/action_view/record_identifier.rb +22 -1
  50. data/lib/action_view/render_parser/prism_render_parser.rb +139 -0
  51. data/lib/action_view/{ripper_ast_parser.rb → render_parser/ripper_render_parser.rb} +162 -10
  52. data/lib/action_view/render_parser.rb +21 -169
  53. data/lib/action_view/renderer/abstract_renderer.rb +1 -1
  54. data/lib/action_view/renderer/partial_renderer.rb +18 -2
  55. data/lib/action_view/renderer/renderer.rb +32 -38
  56. data/lib/action_view/renderer/streaming_template_renderer.rb +8 -2
  57. data/lib/action_view/renderer/template_renderer.rb +3 -3
  58. data/lib/action_view/rendering.rb +6 -7
  59. data/lib/action_view/structured_event_subscriber.rb +97 -0
  60. data/lib/action_view/template/error.rb +18 -3
  61. data/lib/action_view/template/handlers/erb/erubi.rb +1 -1
  62. data/lib/action_view/template/handlers/erb.rb +77 -44
  63. data/lib/action_view/template/raw_file.rb +4 -0
  64. data/lib/action_view/template/renderable.rb +7 -1
  65. data/lib/action_view/template/resolver.rb +0 -3
  66. data/lib/action_view/template.rb +39 -12
  67. data/lib/action_view/test_case.rb +57 -62
  68. data/lib/action_view.rb +4 -0
  69. metadata +17 -14
  70. data/lib/action_view/dependency_tracker/ripper_tracker.rb +0 -59
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: actionview
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.1.5.2
4
+ version: 8.1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: 7.1.5.2
18
+ version: 8.1.2.1
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - '='
24
24
  - !ruby/object:Gem::Version
25
- version: 7.1.5.2
25
+ version: 8.1.2.1
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: builder
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -85,28 +85,28 @@ dependencies:
85
85
  requirements:
86
86
  - - '='
87
87
  - !ruby/object:Gem::Version
88
- version: 7.1.5.2
88
+ version: 8.1.2.1
89
89
  type: :development
90
90
  prerelease: false
91
91
  version_requirements: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - '='
94
94
  - !ruby/object:Gem::Version
95
- version: 7.1.5.2
95
+ version: 8.1.2.1
96
96
  - !ruby/object:Gem::Dependency
97
97
  name: activemodel
98
98
  requirement: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - '='
101
101
  - !ruby/object:Gem::Version
102
- version: 7.1.5.2
102
+ version: 8.1.2.1
103
103
  type: :development
104
104
  prerelease: false
105
105
  version_requirements: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - '='
108
108
  - !ruby/object:Gem::Version
109
- version: 7.1.5.2
109
+ version: 8.1.2.1
110
110
  description: Simple, battle-tested conventions and helpers for building web pages.
111
111
  email: david@loudthinking.com
112
112
  executables: []
@@ -125,7 +125,8 @@ files:
125
125
  - lib/action_view/context.rb
126
126
  - lib/action_view/dependency_tracker.rb
127
127
  - lib/action_view/dependency_tracker/erb_tracker.rb
128
- - lib/action_view/dependency_tracker/ripper_tracker.rb
128
+ - lib/action_view/dependency_tracker/ruby_tracker.rb
129
+ - lib/action_view/dependency_tracker/wildcard_resolver.rb
129
130
  - lib/action_view/deprecator.rb
130
131
  - lib/action_view/digestor.rb
131
132
  - lib/action_view/flows.rb
@@ -203,6 +204,8 @@ files:
203
204
  - lib/action_view/railtie.rb
204
205
  - lib/action_view/record_identifier.rb
205
206
  - lib/action_view/render_parser.rb
207
+ - lib/action_view/render_parser/prism_render_parser.rb
208
+ - lib/action_view/render_parser/ripper_render_parser.rb
206
209
  - lib/action_view/renderer/abstract_renderer.rb
207
210
  - lib/action_view/renderer/collection_renderer.rb
208
211
  - lib/action_view/renderer/object_renderer.rb
@@ -212,8 +215,8 @@ files:
212
215
  - lib/action_view/renderer/streaming_template_renderer.rb
213
216
  - lib/action_view/renderer/template_renderer.rb
214
217
  - lib/action_view/rendering.rb
215
- - lib/action_view/ripper_ast_parser.rb
216
218
  - lib/action_view/routing_url_for.rb
219
+ - lib/action_view/structured_event_subscriber.rb
217
220
  - lib/action_view/tasks/cache_digests.rake
218
221
  - lib/action_view/template.rb
219
222
  - lib/action_view/template/error.rb
@@ -244,10 +247,10 @@ licenses:
244
247
  - MIT
245
248
  metadata:
246
249
  bug_tracker_uri: https://github.com/rails/rails/issues
247
- changelog_uri: https://github.com/rails/rails/blob/v7.1.5.2/actionview/CHANGELOG.md
248
- documentation_uri: https://api.rubyonrails.org/v7.1.5.2/
250
+ changelog_uri: https://github.com/rails/rails/blob/v8.1.2.1/actionview/CHANGELOG.md
251
+ documentation_uri: https://api.rubyonrails.org/v8.1.2.1/
249
252
  mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
250
- source_code_uri: https://github.com/rails/rails/tree/v7.1.5.2/actionview
253
+ source_code_uri: https://github.com/rails/rails/tree/v8.1.2.1/actionview
251
254
  rubygems_mfa_required: 'true'
252
255
  rdoc_options: []
253
256
  require_paths:
@@ -256,7 +259,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
256
259
  requirements:
257
260
  - - ">="
258
261
  - !ruby/object:Gem::Version
259
- version: 2.7.0
262
+ version: 3.2.0
260
263
  required_rubygems_version: !ruby/object:Gem::Requirement
261
264
  requirements:
262
265
  - - ">="
@@ -264,7 +267,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
264
267
  version: '0'
265
268
  requirements:
266
269
  - none
267
- rubygems_version: 3.6.9
270
+ rubygems_version: 4.0.6
268
271
  specification_version: 4
269
272
  summary: Rendering framework putting the V in MVC (part of Rails).
270
273
  test_files: []
@@ -1,59 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ActionView
4
- class DependencyTracker # :nodoc:
5
- class RipperTracker # :nodoc:
6
- EXPLICIT_DEPENDENCY = /# Template Dependency: (\S+)/
7
-
8
- def self.call(name, template, view_paths = nil)
9
- new(name, template, view_paths).dependencies
10
- end
11
-
12
- def dependencies
13
- render_dependencies + explicit_dependencies
14
- end
15
-
16
- def self.supports_view_paths? # :nodoc:
17
- true
18
- end
19
-
20
- def initialize(name, template, view_paths = nil)
21
- @name, @template, @view_paths = name, template, view_paths
22
- end
23
-
24
- private
25
- attr_reader :template, :name, :view_paths
26
-
27
- def render_dependencies
28
- return [] unless template.source.include?("render")
29
-
30
- compiled_source = template.handler.call(template, template.source)
31
-
32
- RenderParser.new(@name, compiled_source).render_calls.filter_map do |render_call|
33
- next if render_call.end_with?("/_")
34
- render_call.gsub(%r|/_|, "/")
35
- end
36
- end
37
-
38
- def explicit_dependencies
39
- dependencies = template.source.scan(EXPLICIT_DEPENDENCY).flatten.uniq
40
-
41
- wildcards, explicits = dependencies.partition { |dependency| dependency.end_with?("/*") }
42
-
43
- (explicits + resolve_directories(wildcards)).uniq
44
- end
45
-
46
- def resolve_directories(wildcard_dependencies)
47
- return [] unless view_paths
48
- return [] if wildcard_dependencies.empty?
49
-
50
- # Remove trailing "/*"
51
- prefixes = wildcard_dependencies.map { |query| query[0..-3] }
52
-
53
- view_paths.flat_map(&:all_template_paths).uniq.filter_map { |path|
54
- path.to_s if prefixes.include?(path.prefix)
55
- }.sort
56
- end
57
- end
58
- end
59
- end