actionview 6.1.7.2 → 7.0.6

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 (80) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +268 -254
  3. data/MIT-LICENSE +1 -0
  4. data/README.rdoc +2 -2
  5. data/lib/action_view/base.rb +4 -7
  6. data/lib/action_view/buffers.rb +2 -2
  7. data/lib/action_view/cache_expiry.rb +46 -32
  8. data/lib/action_view/dependency_tracker/erb_tracker.rb +154 -0
  9. data/lib/action_view/dependency_tracker/ripper_tracker.rb +59 -0
  10. data/lib/action_view/dependency_tracker.rb +6 -147
  11. data/lib/action_view/digestor.rb +7 -4
  12. data/lib/action_view/flows.rb +4 -4
  13. data/lib/action_view/gem_version.rb +5 -5
  14. data/lib/action_view/helpers/active_model_helper.rb +2 -2
  15. data/lib/action_view/helpers/asset_tag_helper.rb +95 -39
  16. data/lib/action_view/helpers/asset_url_helper.rb +16 -16
  17. data/lib/action_view/helpers/atom_feed_helper.rb +3 -4
  18. data/lib/action_view/helpers/cache_helper.rb +52 -3
  19. data/lib/action_view/helpers/capture_helper.rb +4 -4
  20. data/lib/action_view/helpers/controller_helper.rb +2 -2
  21. data/lib/action_view/helpers/csp_helper.rb +1 -1
  22. data/lib/action_view/helpers/csrf_helper.rb +2 -2
  23. data/lib/action_view/helpers/date_helper.rb +111 -43
  24. data/lib/action_view/helpers/debug_helper.rb +3 -1
  25. data/lib/action_view/helpers/form_helper.rb +211 -85
  26. data/lib/action_view/helpers/form_options_helper.rb +70 -33
  27. data/lib/action_view/helpers/form_tag_helper.rb +150 -53
  28. data/lib/action_view/helpers/javascript_helper.rb +3 -5
  29. data/lib/action_view/helpers/number_helper.rb +17 -16
  30. data/lib/action_view/helpers/output_safety_helper.rb +4 -4
  31. data/lib/action_view/helpers/rendering_helper.rb +5 -6
  32. data/lib/action_view/helpers/sanitize_helper.rb +3 -3
  33. data/lib/action_view/helpers/tag_helper.rb +37 -8
  34. data/lib/action_view/helpers/tags/base.rb +5 -25
  35. data/lib/action_view/helpers/tags/check_box.rb +1 -1
  36. data/lib/action_view/helpers/tags/collection_select.rb +1 -1
  37. data/lib/action_view/helpers/tags/file_field.rb +16 -0
  38. data/lib/action_view/helpers/tags/select.rb +1 -1
  39. data/lib/action_view/helpers/tags/time_field.rb +10 -1
  40. data/lib/action_view/helpers/tags/weekday_select.rb +28 -0
  41. data/lib/action_view/helpers/tags.rb +3 -2
  42. data/lib/action_view/helpers/text_helper.rb +25 -14
  43. data/lib/action_view/helpers/translation_helper.rb +12 -43
  44. data/lib/action_view/helpers/url_helper.rb +194 -123
  45. data/lib/action_view/helpers.rb +25 -25
  46. data/lib/action_view/layouts.rb +7 -4
  47. data/lib/action_view/lookup_context.rb +33 -52
  48. data/lib/action_view/model_naming.rb +2 -2
  49. data/lib/action_view/path_set.rb +16 -22
  50. data/lib/action_view/railtie.rb +19 -7
  51. data/lib/action_view/record_identifier.rb +1 -1
  52. data/lib/action_view/render_parser.rb +188 -0
  53. data/lib/action_view/renderer/abstract_renderer.rb +2 -2
  54. data/lib/action_view/renderer/partial_renderer.rb +1 -35
  55. data/lib/action_view/renderer/renderer.rb +4 -4
  56. data/lib/action_view/renderer/streaming_template_renderer.rb +3 -3
  57. data/lib/action_view/renderer/template_renderer.rb +6 -2
  58. data/lib/action_view/rendering.rb +3 -3
  59. data/lib/action_view/ripper_ast_parser.rb +198 -0
  60. data/lib/action_view/routing_url_for.rb +8 -5
  61. data/lib/action_view/template/error.rb +108 -13
  62. data/lib/action_view/template/handlers/erb.rb +6 -0
  63. data/lib/action_view/template/handlers.rb +3 -3
  64. data/lib/action_view/template/html.rb +3 -3
  65. data/lib/action_view/template/inline.rb +3 -3
  66. data/lib/action_view/template/raw_file.rb +3 -3
  67. data/lib/action_view/template/resolver.rb +89 -314
  68. data/lib/action_view/template/text.rb +3 -3
  69. data/lib/action_view/template/types.rb +14 -12
  70. data/lib/action_view/template.rb +18 -2
  71. data/lib/action_view/template_details.rb +66 -0
  72. data/lib/action_view/template_path.rb +64 -0
  73. data/lib/action_view/test_case.rb +7 -3
  74. data/lib/action_view/testing/resolvers.rb +11 -12
  75. data/lib/action_view/unbound_template.rb +33 -7
  76. data/lib/action_view/version.rb +1 -1
  77. data/lib/action_view/view_paths.rb +4 -4
  78. data/lib/action_view.rb +2 -3
  79. data/lib/assets/compiled/rails-ujs.js +36 -5
  80. metadata +23 -16
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActionView
4
+ # Represents a template path within ActionView's lookup and rendering system,
5
+ # like "users/show"
6
+ #
7
+ # TemplatePath makes it convenient to convert between separate name, prefix,
8
+ # partial arguments and the virtual path.
9
+ class TemplatePath
10
+ attr_reader :name, :prefix, :partial, :virtual
11
+ alias_method :partial?, :partial
12
+ alias_method :virtual_path, :virtual
13
+
14
+ # Convert name, prefix, and partial into a virtual path string
15
+ def self.virtual(name, prefix, partial)
16
+ if prefix.empty?
17
+ "#{partial ? "_" : ""}#{name}"
18
+ elsif partial
19
+ "#{prefix}/_#{name}"
20
+ else
21
+ "#{prefix}/#{name}"
22
+ end
23
+ end
24
+
25
+ # Build a TemplatePath form a virtual path
26
+ def self.parse(virtual)
27
+ if nameidx = virtual.rindex("/")
28
+ prefix = virtual[0, nameidx]
29
+ name = virtual.from(nameidx + 1)
30
+ prefix = prefix[1..] if prefix.start_with?("/")
31
+ else
32
+ prefix = ""
33
+ name = virtual
34
+ end
35
+ partial = name.start_with?("_")
36
+ name = name[1..] if partial
37
+ new name, prefix, partial, virtual
38
+ end
39
+
40
+ # Convert name, prefix, and partial into a TemplatePath
41
+ def self.build(name, prefix, partial)
42
+ new name, prefix, partial, virtual(name, prefix, partial)
43
+ end
44
+
45
+ def initialize(name, prefix, partial, virtual)
46
+ @name = name
47
+ @prefix = prefix
48
+ @partial = partial
49
+ @virtual = virtual
50
+ end
51
+
52
+ alias :to_str :virtual
53
+ alias :to_s :virtual
54
+
55
+ def hash # :nodoc:
56
+ @virtual.hash
57
+ end
58
+
59
+ def eql?(other) # :nodoc:
60
+ @virtual == other.virtual
61
+ end
62
+ alias :== :eql? # :nodoc:
63
+ end
64
+ end
@@ -24,6 +24,10 @@ module ActionView
24
24
  self.class.controller_path = path
25
25
  end
26
26
 
27
+ def self.controller_name
28
+ "test"
29
+ end
30
+
27
31
  def initialize
28
32
  super
29
33
  self.class.controller_path = ""
@@ -53,7 +57,7 @@ module ActionView
53
57
  include ActiveSupport::Testing::ConstantLookup
54
58
 
55
59
  delegate :lookup_context, to: :controller
56
- attr_accessor :controller, :output_buffer, :rendered
60
+ attr_accessor :controller, :request, :output_buffer, :rendered
57
61
 
58
62
  module ClassMethods
59
63
  def tests(helper_class)
@@ -74,11 +78,11 @@ module ActionView
74
78
  def helper_method(*methods)
75
79
  # Almost a duplicate from ActionController::Helpers
76
80
  methods.flatten.each do |method|
77
- _helpers_for_modification.module_eval <<-end_eval, __FILE__, __LINE__ + 1
81
+ _helpers_for_modification.module_eval <<~end_eval, __FILE__, __LINE__ + 1
78
82
  def #{method}(*args, &block) # def current_user(*args, &block)
79
83
  _test_case.send(:'#{method}', *args, &block) # _test_case.send(:'current_user', *args, &block)
80
84
  end # end
81
- ruby2_keywords(:'#{method}') if respond_to?(:ruby2_keywords, true)
85
+ ruby2_keywords(:'#{method}')
82
86
  end_eval
83
87
  end
84
88
  end
@@ -2,12 +2,12 @@
2
2
 
3
3
  require "action_view/template/resolver"
4
4
 
5
- module ActionView #:nodoc:
5
+ module ActionView # :nodoc:
6
6
  # Use FixtureResolver in your tests to simulate the presence of files on the
7
7
  # file system. This is used internally by Rails' own test suite, and is
8
8
  # useful for testing extensions that have no way of knowing what the file
9
9
  # system will look like at runtime.
10
- class FixtureResolver < OptimizedFileSystemResolver
10
+ class FixtureResolver < FileSystemResolver
11
11
  def initialize(hash = {})
12
12
  super("")
13
13
  @hash = hash
@@ -23,23 +23,22 @@ module ActionView #:nodoc:
23
23
  end
24
24
 
25
25
  private
26
- def find_candidate_template_paths(path)
27
- @hash.keys.select do |fixture|
28
- fixture.start_with?(path.virtual)
29
- end.map do |fixture|
30
- "/#{fixture}"
26
+ def template_glob(glob)
27
+ @hash.keys.filter_map do |path|
28
+ "/#{path}" if File.fnmatch(glob, path)
31
29
  end
32
30
  end
33
31
 
34
32
  def source_for_template(template)
35
- @hash[template[1..template.size]]
33
+ @hash[template.from(1)]
36
34
  end
37
35
  end
38
36
 
39
- class NullResolver < PathResolver
40
- def query(path, exts, _, locals, cache:)
41
- handler, format, variant = extract_handler_and_format_and_variant(path)
42
- [ActionView::Template.new("Template generated by Null Resolver", path.virtual, handler, virtual_path: path.virtual, format: format, variant: variant, locals: locals)]
37
+ class NullResolver < Resolver
38
+ def find_templates(name, prefix, partial, details, locals = [])
39
+ path = TemplatePath.build(name, prefix, partial)
40
+ handler = ActionView::Template::Handlers::Raw
41
+ [ActionView::Template.new("Template generated by Null Resolver", path.virtual, handler, virtual_path: path.virtual, format: nil, variant: nil, locals: locals)]
43
42
  end
44
43
  end
45
44
  end
@@ -4,28 +4,54 @@ require "concurrent/map"
4
4
 
5
5
  module ActionView
6
6
  class UnboundTemplate
7
- def initialize(source, identifier, handler, options)
7
+ attr_reader :virtual_path, :details
8
+ delegate :locale, :format, :variant, :handler, to: :@details
9
+
10
+ def initialize(source, identifier, details:, virtual_path:)
8
11
  @source = source
9
12
  @identifier = identifier
10
- @handler = handler
11
- @options = options
13
+ @details = details
14
+ @virtual_path = virtual_path
12
15
 
13
16
  @templates = Concurrent::Map.new(initial_capacity: 2)
17
+ @write_lock = Mutex.new
14
18
  end
15
19
 
16
20
  def bind_locals(locals)
17
- @templates[locals] ||= build_template(locals)
21
+ if template = @templates[locals]
22
+ template
23
+ else
24
+ @write_lock.synchronize do
25
+ normalized_locals = normalize_locals(locals)
26
+
27
+ # We need ||=, both to dedup on the normalized locals and to check
28
+ # while holding the lock.
29
+ @templates[normalized_locals] ||= build_template(normalized_locals)
30
+
31
+ # This may have already been assigned, but we've already de-dup'd so
32
+ # reassignment is fine.
33
+ @templates[locals.dup] = @templates[normalized_locals]
34
+ end
35
+ end
18
36
  end
19
37
 
20
38
  private
21
39
  def build_template(locals)
22
- options = @options.merge(locals: locals)
23
40
  Template.new(
24
41
  @source,
25
42
  @identifier,
26
- @handler,
27
- **options
43
+ details.handler_class,
44
+
45
+ format: details.format_or_default,
46
+ variant: variant&.to_s,
47
+ virtual_path: @virtual_path,
48
+
49
+ locals: locals.map(&:to_s)
28
50
  )
29
51
  end
52
+
53
+ def normalize_locals(locals)
54
+ locals.map(&:to_sym).sort!.freeze
55
+ end
30
56
  end
31
57
  end
@@ -3,7 +3,7 @@
3
3
  require_relative "gem_version"
4
4
 
5
5
  module ActionView
6
- # Returns the version of the currently loaded ActionView as a <tt>Gem::Version</tt>
6
+ # Returns the currently loaded version of Action View as a <tt>Gem::Version</tt>.
7
7
  def self.version
8
8
  gem_version
9
9
  end
@@ -91,9 +91,9 @@ module ActionView
91
91
  self.class._prefixes
92
92
  end
93
93
 
94
- # <tt>LookupContext</tt> is the object responsible for holding all
94
+ # LookupContext is the object responsible for holding all
95
95
  # information required for looking up templates, i.e. view paths and
96
- # details. Check <tt>ActionView::LookupContext</tt> for more information.
96
+ # details. Check ActionView::LookupContext for more information.
97
97
  def lookup_context
98
98
  @_lookup_context ||=
99
99
  ActionView::LookupContext.new(self.class._view_paths, details_for_lookup, _prefixes)
@@ -103,7 +103,7 @@ module ActionView
103
103
  {}
104
104
  end
105
105
 
106
- # Append a path to the list of view paths for the current <tt>LookupContext</tt>.
106
+ # Append a path to the list of view paths for the current LookupContext.
107
107
  #
108
108
  # ==== Parameters
109
109
  # * <tt>path</tt> - If a String is provided, it gets converted into
@@ -113,7 +113,7 @@ module ActionView
113
113
  lookup_context.view_paths.push(*path)
114
114
  end
115
115
 
116
- # Prepend a path to the list of view paths for the current <tt>LookupContext</tt>.
116
+ # Prepend a path to the list of view paths for the current LookupContext.
117
117
  #
118
118
  # ==== Parameters
119
119
  # * <tt>path</tt> - If a String is provided, it gets converted into
data/lib/action_view.rb CHANGED
@@ -44,6 +44,8 @@ module ActionView
44
44
  autoload :Rendering
45
45
  autoload :RoutingUrlFor
46
46
  autoload :Template
47
+ autoload :TemplateDetails
48
+ autoload :TemplatePath
47
49
  autoload :UnboundTemplate
48
50
  autoload :ViewPaths
49
51
 
@@ -59,10 +61,7 @@ module ActionView
59
61
 
60
62
  autoload_at "action_view/template/resolver" do
61
63
  autoload :Resolver
62
- autoload :PathResolver
63
64
  autoload :FileSystemResolver
64
- autoload :OptimizedFileSystemResolver
65
- autoload :FallbackFileSystemResolver
66
65
  end
67
66
 
68
67
  autoload_at "action_view/buffers" do
@@ -73,6 +73,22 @@ Released under the MIT license
73
73
  return element[expando][key] = value;
74
74
  };
75
75
 
76
+ Rails.isContentEditable = function(element) {
77
+ var isEditable;
78
+ isEditable = false;
79
+ while (true) {
80
+ if (element.isContentEditable) {
81
+ isEditable = true;
82
+ break;
83
+ }
84
+ element = element.parentElement;
85
+ if (!element) {
86
+ break;
87
+ }
88
+ }
89
+ return isEditable;
90
+ };
91
+
76
92
  Rails.$ = function(selector) {
77
93
  return Array.prototype.slice.call(document.querySelectorAll(selector));
78
94
  };
@@ -395,9 +411,9 @@ Released under the MIT license
395
411
 
396
412
  }).call(this);
397
413
  (function() {
398
- var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;
414
+ var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isContentEditable, isXhrRedirect, matches, setData, stopEverything;
399
415
 
400
- matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;
416
+ matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements, isContentEditable = Rails.isContentEditable;
401
417
 
402
418
  Rails.handleDisabledElement = function(e) {
403
419
  var element;
@@ -417,6 +433,9 @@ Released under the MIT license
417
433
  } else {
418
434
  element = e;
419
435
  }
436
+ if (isContentEditable(element)) {
437
+ return;
438
+ }
420
439
  if (matches(element, Rails.linkDisableSelector)) {
421
440
  return enableLinkElement(element);
422
441
  } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {
@@ -429,6 +448,9 @@ Released under the MIT license
429
448
  Rails.disableElement = function(e) {
430
449
  var element;
431
450
  element = e instanceof Event ? e.target : e;
451
+ if (isContentEditable(element)) {
452
+ return;
453
+ }
432
454
  if (matches(element, Rails.linkDisableSelector)) {
433
455
  return disableLinkElement(element);
434
456
  } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {
@@ -513,10 +535,12 @@ Released under the MIT license
513
535
 
514
536
  }).call(this);
515
537
  (function() {
516
- var stopEverything;
538
+ var isContentEditable, stopEverything;
517
539
 
518
540
  stopEverything = Rails.stopEverything;
519
541
 
542
+ isContentEditable = Rails.isContentEditable;
543
+
520
544
  Rails.handleMethod = function(e) {
521
545
  var csrfParam, csrfToken, form, formContent, href, link, method;
522
546
  link = this;
@@ -524,6 +548,9 @@ Released under the MIT license
524
548
  if (!method) {
525
549
  return;
526
550
  }
551
+ if (isContentEditable(this)) {
552
+ return;
553
+ }
527
554
  href = Rails.href(link);
528
555
  csrfToken = Rails.csrfToken();
529
556
  csrfParam = Rails.csrfParam();
@@ -545,10 +572,10 @@ Released under the MIT license
545
572
 
546
573
  }).call(this);
547
574
  (function() {
548
- var ajax, fire, getData, isCrossDomain, isRemote, matches, serializeElement, setData, stopEverything,
575
+ var ajax, fire, getData, isContentEditable, isCrossDomain, isRemote, matches, serializeElement, setData, stopEverything,
549
576
  slice = [].slice;
550
577
 
551
- matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;
578
+ matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement, isContentEditable = Rails.isContentEditable;
552
579
 
553
580
  isRemote = function(element) {
554
581
  var value;
@@ -566,6 +593,10 @@ Released under the MIT license
566
593
  fire(element, 'ajax:stopped');
567
594
  return false;
568
595
  }
596
+ if (isContentEditable(element)) {
597
+ fire(element, 'ajax:stopped');
598
+ return false;
599
+ }
569
600
  withCredentials = element.getAttribute('data-with-credentials');
570
601
  dataType = element.getAttribute('data-type') || 'script';
571
602
  if (matches(element, Rails.formSubmitSelector)) {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: actionview
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.1.7.2
4
+ version: 7.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-25 00:00:00.000000000 Z
11
+ date: 2023-06-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 6.1.7.2
19
+ version: 7.0.6
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 6.1.7.2
26
+ version: 7.0.6
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: builder
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -92,28 +92,28 @@ dependencies:
92
92
  requirements:
93
93
  - - '='
94
94
  - !ruby/object:Gem::Version
95
- version: 6.1.7.2
95
+ version: 7.0.6
96
96
  type: :development
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - '='
101
101
  - !ruby/object:Gem::Version
102
- version: 6.1.7.2
102
+ version: 7.0.6
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: activemodel
105
105
  requirement: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - '='
108
108
  - !ruby/object:Gem::Version
109
- version: 6.1.7.2
109
+ version: 7.0.6
110
110
  type: :development
111
111
  prerelease: false
112
112
  version_requirements: !ruby/object:Gem::Requirement
113
113
  requirements:
114
114
  - - '='
115
115
  - !ruby/object:Gem::Version
116
- version: 6.1.7.2
116
+ version: 7.0.6
117
117
  description: Simple, battle-tested conventions and helpers for building web pages.
118
118
  email: david@loudthinking.com
119
119
  executables: []
@@ -129,6 +129,8 @@ files:
129
129
  - lib/action_view/cache_expiry.rb
130
130
  - lib/action_view/context.rb
131
131
  - lib/action_view/dependency_tracker.rb
132
+ - lib/action_view/dependency_tracker/erb_tracker.rb
133
+ - lib/action_view/dependency_tracker/ripper_tracker.rb
132
134
  - lib/action_view/digestor.rb
133
135
  - lib/action_view/flows.rb
134
136
  - lib/action_view/gem_version.rb
@@ -189,6 +191,7 @@ files:
189
191
  - lib/action_view/helpers/tags/translator.rb
190
192
  - lib/action_view/helpers/tags/url_field.rb
191
193
  - lib/action_view/helpers/tags/week_field.rb
194
+ - lib/action_view/helpers/tags/weekday_select.rb
192
195
  - lib/action_view/helpers/text_helper.rb
193
196
  - lib/action_view/helpers/translation_helper.rb
194
197
  - lib/action_view/helpers/url_helper.rb
@@ -200,6 +203,7 @@ files:
200
203
  - lib/action_view/path_set.rb
201
204
  - lib/action_view/railtie.rb
202
205
  - lib/action_view/record_identifier.rb
206
+ - lib/action_view/render_parser.rb
203
207
  - lib/action_view/renderer/abstract_renderer.rb
204
208
  - lib/action_view/renderer/collection_renderer.rb
205
209
  - lib/action_view/renderer/object_renderer.rb
@@ -209,6 +213,7 @@ files:
209
213
  - lib/action_view/renderer/streaming_template_renderer.rb
210
214
  - lib/action_view/renderer/template_renderer.rb
211
215
  - lib/action_view/rendering.rb
216
+ - lib/action_view/ripper_ast_parser.rb
212
217
  - lib/action_view/routing_url_for.rb
213
218
  - lib/action_view/tasks/cache_digests.rake
214
219
  - lib/action_view/template.rb
@@ -228,6 +233,8 @@ files:
228
233
  - lib/action_view/template/sources/file.rb
229
234
  - lib/action_view/template/text.rb
230
235
  - lib/action_view/template/types.rb
236
+ - lib/action_view/template_details.rb
237
+ - lib/action_view/template_path.rb
231
238
  - lib/action_view/test_case.rb
232
239
  - lib/action_view/testing/resolvers.rb
233
240
  - lib/action_view/unbound_template.rb
@@ -239,12 +246,12 @@ licenses:
239
246
  - MIT
240
247
  metadata:
241
248
  bug_tracker_uri: https://github.com/rails/rails/issues
242
- changelog_uri: https://github.com/rails/rails/blob/v6.1.7.2/actionview/CHANGELOG.md
243
- documentation_uri: https://api.rubyonrails.org/v6.1.7.2/
249
+ changelog_uri: https://github.com/rails/rails/blob/v7.0.6/actionview/CHANGELOG.md
250
+ documentation_uri: https://api.rubyonrails.org/v7.0.6/
244
251
  mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
245
- source_code_uri: https://github.com/rails/rails/tree/v6.1.7.2/actionview
252
+ source_code_uri: https://github.com/rails/rails/tree/v7.0.6/actionview
246
253
  rubygems_mfa_required: 'true'
247
- post_install_message:
254
+ post_install_message:
248
255
  rdoc_options: []
249
256
  require_paths:
250
257
  - lib
@@ -252,7 +259,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
252
259
  requirements:
253
260
  - - ">="
254
261
  - !ruby/object:Gem::Version
255
- version: 2.5.0
262
+ version: 2.7.0
256
263
  required_rubygems_version: !ruby/object:Gem::Requirement
257
264
  requirements:
258
265
  - - ">="
@@ -260,8 +267,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
260
267
  version: '0'
261
268
  requirements:
262
269
  - none
263
- rubygems_version: 3.4.3
264
- signing_key:
270
+ rubygems_version: 3.4.13
271
+ signing_key:
265
272
  specification_version: 4
266
273
  summary: Rendering framework putting the V in MVC (part of Rails).
267
274
  test_files: []