actiontext 7.0.8.6 → 7.1.0.beta1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of actiontext might be problematic. Click here for more details.

@@ -3,12 +3,23 @@
3
3
  require "active_support/core_ext/object/try"
4
4
 
5
5
  module ActionText
6
+ # = Action Text \Attachment
7
+ #
8
+ # Attachments serialize attachables to HTML or plain text.
9
+ #
10
+ # class Person < ApplicationRecord
11
+ # include ActionText::Attachable
12
+ # end
13
+ #
14
+ # attachable = Person.create! name: "Javan"
15
+ # attachment = ActionText::Attachment.from_attachable(attachable)
16
+ # attachment.to_html # => "<action-text-attachment sgid=\"BAh7CEk..."
6
17
  class Attachment
7
18
  include Attachments::TrixConversion, Attachments::Minification, Attachments::Caching
8
19
 
9
20
  mattr_accessor :tag_name, default: "action-text-attachment"
10
21
 
11
- ATTRIBUTES = %w( sgid content-type url href filename filesize width height previewable presentation caption )
22
+ ATTRIBUTES = %w( sgid content-type url href filename filesize width height previewable presentation caption content )
12
23
 
13
24
  class << self
14
25
  def fragment_by_canonicalizing_attachments(content)
@@ -69,6 +80,31 @@ module ActionText
69
80
  self.class.from_attributes(full_attributes, attachable)
70
81
  end
71
82
 
83
+ # Converts the attachment to plain text.
84
+ #
85
+ # attachable = ActiveStorage::Blob.find_by filename: "racecar.jpg"
86
+ # attachment = ActionText::Attachment.from_attachable(attachable)
87
+ # attachment.to_plain_text # => "[racecar.jpg]"
88
+ #
89
+ # Use the +caption+ when set:
90
+ #
91
+ # attachment = ActionText::Attachment.from_attachable(attachable, caption: "Vroom vroom")
92
+ # attachment.to_plain_text # => "[Vroom vroom]"
93
+ #
94
+ # The presentation can be overridden by implementing the
95
+ # +attachable_plain_text_representation+ method:
96
+ #
97
+ # class Person < ApplicationRecord
98
+ # include ActionText::Attachable
99
+ #
100
+ # def attachable_plain_text_representation
101
+ # "[#{name}]"
102
+ # end
103
+ # end
104
+ #
105
+ # attachable = Person.create! name: "Javan"
106
+ # attachment = ActionText::Attachment.from_attachable(attachable)
107
+ # attachment.to_plain_text # => "[Javan]"
72
108
  def to_plain_text
73
109
  if respond_to?(:attachable_plain_text_representation)
74
110
  attachable_plain_text_representation(caption)
@@ -77,6 +113,11 @@ module ActionText
77
113
  end
78
114
  end
79
115
 
116
+ # Converts the attachment to HTML.
117
+ #
118
+ # attachable = Person.create! name: "Javan"
119
+ # attachment = ActionText::Attachment.from_attachable(attachable)
120
+ # attachment.to_html # => "<action-text-attachment sgid=\"BAh7CEk...
80
121
  def to_html
81
122
  HtmlConversion.node_to_html(node)
82
123
  end
@@ -91,7 +132,7 @@ module ActionText
91
132
 
92
133
  private
93
134
  def node_attributes
94
- @node_attributes ||= ATTRIBUTES.map { |name| [ name.underscore, node[name] ] }.to_h.compact
135
+ @node_attributes ||= ATTRIBUTES.to_h { |name| [ name.underscore, node[name] ] }.compact
95
136
  end
96
137
 
97
138
  def attachable_attributes
@@ -26,11 +26,15 @@ module ActionText
26
26
  # Message.all.with_rich_text_content_and_embeds # Avoids N+1 queries when you just want the body and attachments.
27
27
  # Message.all.with_all_rich_text # Loads all rich text associations.
28
28
  #
29
- # === Options
29
+ # ==== Options
30
30
  #
31
- # * <tt>:encrypted</tt> - Pass true to encrypt the rich text attribute. The encryption will be non-deterministic. See
32
- # +ActiveRecord::Encryption::EncryptableRecord.encrypts+. Default: false.
33
- def has_rich_text(name, encrypted: false)
31
+ # * <tt>:encrypted</tt> - Pass true to encrypt the rich text attribute. The encryption will be non-deterministic. See
32
+ # +ActiveRecord::Encryption::EncryptableRecord.encrypts+. Default: false.
33
+ #
34
+ # * <tt>:strict_loading</tt> - Pass true to force strict loading. When
35
+ # omitted, <tt>strict_loading:</tt> will be set to the value of the
36
+ # <tt>strict_loading_by_default</tt> class attribute (false by default).
37
+ def has_rich_text(name, encrypted: false, strict_loading: strict_loading_by_default)
34
38
  class_eval <<-CODE, __FILE__, __LINE__ + 1
35
39
  def #{name}
36
40
  rich_text_#{name} || build_rich_text_#{name}
@@ -47,7 +51,8 @@ module ActionText
47
51
 
48
52
  rich_text_class_name = encrypted ? "ActionText::EncryptedRichText" : "ActionText::RichText"
49
53
  has_one :"rich_text_#{name}", -> { where(name: name) },
50
- class_name: rich_text_class_name, as: :record, inverse_of: :record, autosave: true, dependent: :destroy
54
+ class_name: rich_text_class_name, as: :record, inverse_of: :record, autosave: true, dependent: :destroy,
55
+ strict_loading: strict_loading
51
56
 
52
57
  scope :"with_rich_text_#{name}", -> { includes("rich_text_#{name}") }
53
58
  scope :"with_rich_text_#{name}_and_embeds", -> { includes("rich_text_#{name}": { embeds_attachments: :blob }) }
@@ -1,6 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActionText
4
+ # = Action Text \Content
5
+ #
6
+ # The +ActionText::Content+ class wraps an HTML fragment to add support for
7
+ # parsing, rendering and serialization. It can be used to extract links and
8
+ # attachments, convert the fragment to plain text, or serialize the fragment
9
+ # to the database.
10
+ #
11
+ # The ActionText::RichText record serializes the `body` attribute as
12
+ # +ActionText::Content+.
13
+ #
14
+ # class Message < ActiveRecord::Base
15
+ # has_rich_text :content
16
+ # end
17
+ #
18
+ # message = Message.create!(content: "<h1>Funny times!</h1>")
19
+ # body = message.content.body # => #<ActionText::Content "<div class=\"trix-conte...">
20
+ # body.to_s # => "<h1>Funny times!</h1>"
21
+ # body.to_plain_text # => "Funny times!"
4
22
  class Content
5
23
  include Rendering, Serialization
6
24
 
@@ -26,10 +44,21 @@ module ActionText
26
44
  end
27
45
  end
28
46
 
47
+ # Extracts links from the HTML fragment:
48
+ #
49
+ # html = '<a href="http://example.com/">Example</a>'
50
+ # content = ActionText::Content.new(html)
51
+ # content.links # => ["http://example.com/"]
29
52
  def links
30
53
  @links ||= fragment.find_all("a[href]").map { |a| a["href"] }.uniq
31
54
  end
32
55
 
56
+ # Extracts +ActionText::Attachment+s from the HTML fragment:
57
+ #
58
+ # attachable = ActiveStorage::Blob.first
59
+ # html = %Q(<action-text-attachment sgid="#{attachable.attachable_sgid}" caption="Captioned"></action-text-attachment>)
60
+ # content = ActionText::Content.new(html)
61
+ # content.attachments # => [#<ActionText::Attachment attachable=#<ActiveStorage::Blob...
33
62
  def attachments
34
63
  @attachments ||= attachment_nodes.map do |node|
35
64
  attachment_for_node(node)
@@ -46,6 +75,12 @@ module ActionText
46
75
  @gallery_attachments ||= attachment_galleries.flat_map(&:attachments)
47
76
  end
48
77
 
78
+ # Extracts +ActionText::Attachable+s from the HTML fragment:
79
+ #
80
+ # attachable = ActiveStorage::Blob.first
81
+ # html = %Q(<action-text-attachment sgid="#{attachable.attachable_sgid}" caption="Captioned"></action-text-attachment>)
82
+ # content = ActionText::Content.new(html)
83
+ # content.attachables # => [attachable]
49
84
  def attachables
50
85
  @attachables ||= attachment_nodes.map do |node|
51
86
  ActionText::Attachable.from_node(node)
@@ -71,6 +106,10 @@ module ActionText
71
106
  self.class.new(content, canonicalize: false)
72
107
  end
73
108
 
109
+ # Returns the content as plain text with all HTML tags removed.
110
+ #
111
+ # content = ActionText::Content.new("<h1>Funny times!</h1>")
112
+ # content.to_plain_text # => "Funny times!"
74
113
  def to_plain_text
75
114
  render_attachments(with_full_attributes: false, &:to_plain_text).fragment.to_plain_text
76
115
  end
@@ -100,11 +139,13 @@ module ActionText
100
139
  end
101
140
 
102
141
  def inspect
103
- "#<#{self.class.name} #{to_s.truncate(25).inspect}>"
142
+ "#<#{self.class.name} #{to_html.truncate(25).inspect}>"
104
143
  end
105
144
 
106
145
  def ==(other)
107
- if other.is_a?(self.class)
146
+ if self.class == other.class
147
+ to_html == other.to_html
148
+ elsif other.is_a?(self.class)
108
149
  to_s == other.to_s
109
150
  end
110
151
  end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActionText
4
+ def self.deprecator # :nodoc:
5
+ @deprecator ||= ActiveSupport::Deprecation.new
6
+ end
7
+ end
@@ -19,6 +19,10 @@ module ActionText
19
19
  #{root}/app/models
20
20
  )
21
21
 
22
+ initializer "action_text.deprecator", before: :load_environment_config do |app|
23
+ app.deprecators[:action_text] = ActionText.deprecator
24
+ end
25
+
22
26
  initializer "action_text.attribute" do
23
27
  ActiveSupport.on_load(:active_record) do
24
28
  include ActionText::Attribute
@@ -51,20 +55,16 @@ module ActionText
51
55
  end
52
56
 
53
57
  initializer "action_text.helper" do
54
- %i[action_controller_base action_mailer].each do |abstract_controller|
55
- ActiveSupport.on_load(abstract_controller) do
58
+ %i[action_controller_base action_mailer].each do |base|
59
+ ActiveSupport.on_load(base) do
56
60
  helper ActionText::Engine.helpers
57
61
  end
58
62
  end
59
63
  end
60
64
 
61
65
  initializer "action_text.renderer" do
62
- ActiveSupport.on_load(:action_text_content) do
63
- self.default_renderer = Class.new(ActionController::Base).renderer
64
- end
65
-
66
- %i[action_controller_base action_mailer].each do |abstract_controller|
67
- ActiveSupport.on_load(abstract_controller) do
66
+ %i[action_controller_base action_mailer].each do |base|
67
+ ActiveSupport.on_load(base) do
68
68
  around_action do |controller, action|
69
69
  ActionText::Content.with_renderer(controller, &action)
70
70
  end
@@ -82,5 +82,11 @@ module ActionText
82
82
  initializer "action_text.configure" do |app|
83
83
  ActionText::Attachment.tag_name = app.config.action_text.attachment_tag_name
84
84
  end
85
+
86
+ config.after_initialize do |app|
87
+ if klass = app.config.action_text.sanitizer_vendor
88
+ ActionText::ContentHelper.sanitizer = klass.safe_list_sanitizer.new
89
+ end
90
+ end
85
91
  end
86
92
  end
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActionText
4
+ # = Action Text \FixtureSet
5
+ #
4
6
  # Fixtures are a way of organizing data that you want to test against; in
5
7
  # short, sample data.
6
8
  #
@@ -7,7 +7,7 @@ module ActionText
7
7
  case fragment_or_html
8
8
  when self
9
9
  fragment_or_html
10
- when Nokogiri::HTML::DocumentFragment
10
+ when Nokogiri::XML::DocumentFragment # base class for all fragments
11
11
  new(fragment_or_html)
12
12
  else
13
13
  from_html(fragment_or_html)
@@ -30,14 +30,15 @@ module ActionText
30
30
  end
31
31
 
32
32
  def update
33
- yield source = self.source.clone
33
+ yield source = self.source.dup
34
34
  self.class.new(source)
35
35
  end
36
36
 
37
37
  def replace(selector)
38
38
  update do |source|
39
39
  source.css(selector).each do |node|
40
- node.replace(yield(node).to_s)
40
+ replacement_node = yield(node)
41
+ node.replace(replacement_node.to_s) if node != replacement_node
41
42
  end
42
43
  end
43
44
  end
@@ -1,16 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActionText
4
- # Returns the currently loaded version of Action Text as a <tt>Gem::Version</tt>.
4
+ # Returns the currently loaded version of Action Text as a +Gem::Version+.
5
5
  def self.gem_version
6
6
  Gem::Version.new VERSION::STRING
7
7
  end
8
8
 
9
9
  module VERSION
10
10
  MAJOR = 7
11
- MINOR = 0
12
- TINY = 8
13
- PRE = "6"
11
+ MINOR = 1
12
+ TINY = 0
13
+ PRE = "beta1"
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
16
16
  end
@@ -18,7 +18,7 @@ module ActionText
18
18
 
19
19
  private
20
20
  def document
21
- Nokogiri::HTML::Document.new.tap { |doc| doc.encoding = "UTF-8" }
21
+ ActionText.html_document_class.new.tap { |doc| doc.encoding = "UTF-8" }
22
22
  end
23
23
  end
24
24
  end
@@ -63,12 +63,7 @@ module ActionText
63
63
 
64
64
  def plain_text_for_blockquote_node(node, index)
65
65
  text = plain_text_for_block(node)
66
- return "“”" if text.blank?
67
-
68
- text = text.dup
69
- text.insert(text.rindex(/\S/) + 1, "”")
70
- text.insert(text.index(/\S/), "“")
71
- text
66
+ text.sub(/\A(\s*)(.+?)(\s*)\Z/m, '\1“\2”\3')
72
67
  end
73
68
 
74
69
  def plain_text_for_li_node(node, index)
@@ -8,12 +8,15 @@ module ActionText
8
8
  extend ActiveSupport::Concern
9
9
 
10
10
  included do
11
- cattr_accessor :default_renderer, instance_accessor: false
12
11
  thread_cattr_accessor :renderer, instance_accessor: false
13
12
  delegate :render, to: :class
14
13
  end
15
14
 
16
15
  class_methods do
16
+ def action_controller_renderer
17
+ @action_controller_renderer ||= Class.new(ActionController::Base).renderer
18
+ end
19
+
17
20
  def with_renderer(renderer)
18
21
  previous_renderer = self.renderer
19
22
  self.renderer = renderer
@@ -23,7 +26,7 @@ module ActionText
23
26
  end
24
27
 
25
28
  def render(*args, &block)
26
- (renderer || default_renderer).render_to_string(*args, &block)
29
+ (renderer || action_controller_renderer).render_to_string(*args, &block)
27
30
  end
28
31
  end
29
32
  end
@@ -39,10 +39,10 @@ module ActionText
39
39
  end
40
40
 
41
41
  def typecast_attribute_values(attributes)
42
- attributes.map do |key, value|
42
+ attributes.to_h do |key, value|
43
43
  typecast = ATTRIBUTE_TYPES[key] || ATTRIBUTE_TYPES[:default]
44
44
  [key, typecast.call(value)]
45
- end.to_h
45
+ end
46
46
  end
47
47
  end
48
48
 
@@ -3,7 +3,7 @@
3
3
  require_relative "gem_version"
4
4
 
5
5
  module ActionText
6
- # Returns the currently loaded version of Action Text as a <tt>Gem::Version</tt>.
6
+ # Returns the currently loaded version of Action Text as a +Gem::Version+.
7
7
  def self.version
8
8
  gem_version
9
9
  end
data/lib/action_text.rb CHANGED
@@ -3,8 +3,13 @@
3
3
  require "active_support"
4
4
  require "active_support/rails"
5
5
 
6
+ require "action_text/version"
7
+ require "action_text/deprecator"
8
+
6
9
  require "nokogiri"
7
10
 
11
+ # :markup: markdown
12
+ # :include: actiontext/README.md
8
13
  module ActionText
9
14
  extend ActiveSupport::Autoload
10
15
 
@@ -37,4 +42,18 @@ module ActionText
37
42
  autoload :Minification
38
43
  autoload :TrixConversion
39
44
  end
45
+
46
+ class << self
47
+ def html_document_class
48
+ return @html_document_class if defined?(@html_document_class)
49
+ @html_document_class =
50
+ defined?(Nokogiri::HTML5) ? Nokogiri::HTML5::Document : Nokogiri::HTML4::Document
51
+ end
52
+
53
+ def html_document_fragment_class
54
+ return @html_document_fragment_class if defined?(@html_document_fragment_class)
55
+ @html_document_fragment_class =
56
+ defined?(Nokogiri::HTML5) ? Nokogiri::HTML5::DocumentFragment : Nokogiri::HTML4::DocumentFragment
57
+ end
58
+ end
40
59
  end
@@ -9,8 +9,10 @@ module ActionText
9
9
  source_root File.expand_path("templates", __dir__)
10
10
 
11
11
  def install_javascript_dependencies
12
- if Pathname(destination_root).join("package.json").exist?
13
- say "Installing JavaScript dependencies", :green
12
+ say "Installing JavaScript dependencies", :green
13
+ if using_bun?
14
+ run "bun add @rails/actiontext trix"
15
+ elsif using_node?
14
16
  run "yarn add @rails/actiontext trix"
15
17
  end
16
18
  end
@@ -19,7 +21,7 @@ module ActionText
19
21
  destination = Pathname(destination_root)
20
22
 
21
23
  if (application_javascript_path = destination.join("app/javascript/application.js")).exist?
22
- insert_into_file application_javascript_path.to_s, %(import "trix"\nimport "@rails/actiontext"\n)
24
+ insert_into_file application_javascript_path.to_s, %(\nimport "trix"\nimport "@rails/actiontext"\n)
23
25
  else
24
26
  say <<~INSTRUCTIONS, :green
25
27
  You must import the @rails/actiontext and trix JavaScript modules in your application entrypoint.
@@ -66,6 +68,21 @@ module ActionText
66
68
  rails_command "railties:install:migrations FROM=active_storage,action_text", inline: true
67
69
  end
68
70
 
71
+ def using_js_runtime?
72
+ @using_js_runtime ||= Pathname(destination_root).join("package.json").exist?
73
+ end
74
+
75
+ def using_bun?
76
+ # Cannot assume yarn.lock has been generated yet so we look for
77
+ # a file known to be generated by the jsbundling-rails gem
78
+ @using_bun ||= using_js_runtime? && Pathname(destination_root).join("bun.config.js").exist?
79
+ end
80
+
81
+ def using_node?
82
+ # Bun is the only runtime that _isn't_ node.
83
+ @using_node ||= using_js_runtime? && !Pathname(destination_root).join("bun.config.js").exist?
84
+ end
85
+
69
86
  hook_for :test_framework
70
87
  end
71
88
  end
@@ -3,11 +3,7 @@
3
3
  * the trix-editor content (whether displayed or under editing). Feel free to incorporate this
4
4
  * inclusion directly in any other asset bundle and remove this file.
5
5
  *
6
- <%- if defined?(Webpacker::Engine) -%>
7
- *= require trix/dist/trix
8
- <%- else -%>
9
6
  *= require trix
10
- <% end -%>
11
7
  */
12
8
 
13
9
  /*
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rails/actiontext",
3
- "version": "7.0.806",
3
+ "version": "7.1.0-beta1",
4
4
  "description": "Edit and display rich text in Rails applications",
5
5
  "main": "app/assets/javascripts/actiontext.js",
6
6
  "type": "module",
@@ -15,23 +15,24 @@
15
15
  "bugs": {
16
16
  "url": "https://github.com/rails/rails/issues"
17
17
  },
18
- "author": "Basecamp, LLC",
18
+ "author": "37signals LLC",
19
19
  "contributors": [
20
20
  "Javan Makhmali <javan@javan.us>",
21
21
  "Sam Stephenson <sstephenson@gmail.com>"
22
22
  ],
23
23
  "license": "MIT",
24
24
  "dependencies": {
25
- "@rails/activestorage": ">= 7.0.0-alpha1"
25
+ "@rails/activestorage": ">= 7.1.0-alpha",
26
+ "webpack": "^4.17.1"
26
27
  },
27
28
  "peerDependencies": {
28
- "trix": "^1.3.1"
29
+ "trix": "^2.0.0"
29
30
  },
30
31
  "devDependencies": {
31
- "@rollup/plugin-node-resolve": "^11.0.1",
32
32
  "@rollup/plugin-commonjs": "^19.0.1",
33
+ "@rollup/plugin-node-resolve": "^11.0.1",
33
34
  "rollup": "^2.35.1",
34
- "trix": "^1.3.1"
35
+ "trix": "^2.0.0"
35
36
  },
36
37
  "scripts": {
37
38
  "build": "rollup --config rollup.config.js"
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: actiontext
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.0.8.6
4
+ version: 7.1.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Javan Makhmali
8
8
  - Sam Stephenson
9
9
  - David Heinemeier Hansson
10
- autorequire:
10
+ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2024-10-23 00:00:00.000000000 Z
13
+ date: 2023-09-13 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -18,56 +18,56 @@ dependencies:
18
18
  requirements:
19
19
  - - '='
20
20
  - !ruby/object:Gem::Version
21
- version: 7.0.8.6
21
+ version: 7.1.0.beta1
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - '='
27
27
  - !ruby/object:Gem::Version
28
- version: 7.0.8.6
28
+ version: 7.1.0.beta1
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: activerecord
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
33
  - - '='
34
34
  - !ruby/object:Gem::Version
35
- version: 7.0.8.6
35
+ version: 7.1.0.beta1
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - '='
41
41
  - !ruby/object:Gem::Version
42
- version: 7.0.8.6
42
+ version: 7.1.0.beta1
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: activestorage
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - '='
48
48
  - !ruby/object:Gem::Version
49
- version: 7.0.8.6
49
+ version: 7.1.0.beta1
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
54
  - - '='
55
55
  - !ruby/object:Gem::Version
56
- version: 7.0.8.6
56
+ version: 7.1.0.beta1
57
57
  - !ruby/object:Gem::Dependency
58
58
  name: actionpack
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
61
  - - '='
62
62
  - !ruby/object:Gem::Version
63
- version: 7.0.8.6
63
+ version: 7.1.0.beta1
64
64
  type: :runtime
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
68
  - - '='
69
69
  - !ruby/object:Gem::Version
70
- version: 7.0.8.6
70
+ version: 7.1.0.beta1
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: nokogiri
73
73
  requirement: !ruby/object:Gem::Requirement
@@ -118,6 +118,7 @@ files:
118
118
  - app/models/action_text/encrypted_rich_text.rb
119
119
  - app/models/action_text/record.rb
120
120
  - app/models/action_text/rich_text.rb
121
+ - app/views/action_text/attachables/_content_attachment.html.erb
121
122
  - app/views/action_text/attachables/_missing_attachable.html.erb
122
123
  - app/views/action_text/attachables/_remote_image.html.erb
123
124
  - app/views/action_text/attachment_galleries/_attachment_gallery.html.erb
@@ -137,6 +138,7 @@ files:
137
138
  - lib/action_text/attachments/trix_conversion.rb
138
139
  - lib/action_text/attribute.rb
139
140
  - lib/action_text/content.rb
141
+ - lib/action_text/deprecator.rb
140
142
  - lib/action_text/encryption.rb
141
143
  - lib/action_text/engine.rb
142
144
  - lib/action_text/fixture_set.rb
@@ -160,12 +162,12 @@ licenses:
160
162
  - MIT
161
163
  metadata:
162
164
  bug_tracker_uri: https://github.com/rails/rails/issues
163
- changelog_uri: https://github.com/rails/rails/blob/v7.0.8.6/actiontext/CHANGELOG.md
164
- documentation_uri: https://api.rubyonrails.org/v7.0.8.6/
165
+ changelog_uri: https://github.com/rails/rails/blob/v7.1.0.beta1/actiontext/CHANGELOG.md
166
+ documentation_uri: https://api.rubyonrails.org/v7.1.0.beta1/
165
167
  mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
166
- source_code_uri: https://github.com/rails/rails/tree/v7.0.8.6/actiontext
168
+ source_code_uri: https://github.com/rails/rails/tree/v7.1.0.beta1/actiontext
167
169
  rubygems_mfa_required: 'true'
168
- post_install_message:
170
+ post_install_message:
169
171
  rdoc_options: []
170
172
  require_paths:
171
173
  - lib
@@ -176,12 +178,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
176
178
  version: 2.7.0
177
179
  required_rubygems_version: !ruby/object:Gem::Requirement
178
180
  requirements:
179
- - - ">="
181
+ - - ">"
180
182
  - !ruby/object:Gem::Version
181
- version: '0'
183
+ version: 1.3.1
182
184
  requirements: []
183
- rubygems_version: 3.5.16
184
- signing_key:
185
+ rubygems_version: 3.4.18
186
+ signing_key:
185
187
  specification_version: 4
186
188
  summary: Rich text framework.
187
189
  test_files: []