actiontext 7.0.10 → 7.1.0.beta1

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.

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 = 10
13
- PRE = nil
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.1000",
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,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: actiontext
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.0.10
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
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 1980-01-02 00:00:00.000000000 Z
13
+ date: 2023-09-13 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: activesupport
@@ -17,56 +18,56 @@ dependencies:
17
18
  requirements:
18
19
  - - '='
19
20
  - !ruby/object:Gem::Version
20
- version: 7.0.10
21
+ version: 7.1.0.beta1
21
22
  type: :runtime
22
23
  prerelease: false
23
24
  version_requirements: !ruby/object:Gem::Requirement
24
25
  requirements:
25
26
  - - '='
26
27
  - !ruby/object:Gem::Version
27
- version: 7.0.10
28
+ version: 7.1.0.beta1
28
29
  - !ruby/object:Gem::Dependency
29
30
  name: activerecord
30
31
  requirement: !ruby/object:Gem::Requirement
31
32
  requirements:
32
33
  - - '='
33
34
  - !ruby/object:Gem::Version
34
- version: 7.0.10
35
+ version: 7.1.0.beta1
35
36
  type: :runtime
36
37
  prerelease: false
37
38
  version_requirements: !ruby/object:Gem::Requirement
38
39
  requirements:
39
40
  - - '='
40
41
  - !ruby/object:Gem::Version
41
- version: 7.0.10
42
+ version: 7.1.0.beta1
42
43
  - !ruby/object:Gem::Dependency
43
44
  name: activestorage
44
45
  requirement: !ruby/object:Gem::Requirement
45
46
  requirements:
46
47
  - - '='
47
48
  - !ruby/object:Gem::Version
48
- version: 7.0.10
49
+ version: 7.1.0.beta1
49
50
  type: :runtime
50
51
  prerelease: false
51
52
  version_requirements: !ruby/object:Gem::Requirement
52
53
  requirements:
53
54
  - - '='
54
55
  - !ruby/object:Gem::Version
55
- version: 7.0.10
56
+ version: 7.1.0.beta1
56
57
  - !ruby/object:Gem::Dependency
57
58
  name: actionpack
58
59
  requirement: !ruby/object:Gem::Requirement
59
60
  requirements:
60
61
  - - '='
61
62
  - !ruby/object:Gem::Version
62
- version: 7.0.10
63
+ version: 7.1.0.beta1
63
64
  type: :runtime
64
65
  prerelease: false
65
66
  version_requirements: !ruby/object:Gem::Requirement
66
67
  requirements:
67
68
  - - '='
68
69
  - !ruby/object:Gem::Version
69
- version: 7.0.10
70
+ version: 7.1.0.beta1
70
71
  - !ruby/object:Gem::Dependency
71
72
  name: nokogiri
72
73
  requirement: !ruby/object:Gem::Requirement
@@ -117,6 +118,7 @@ files:
117
118
  - app/models/action_text/encrypted_rich_text.rb
118
119
  - app/models/action_text/record.rb
119
120
  - app/models/action_text/rich_text.rb
121
+ - app/views/action_text/attachables/_content_attachment.html.erb
120
122
  - app/views/action_text/attachables/_missing_attachable.html.erb
121
123
  - app/views/action_text/attachables/_remote_image.html.erb
122
124
  - app/views/action_text/attachment_galleries/_attachment_gallery.html.erb
@@ -136,6 +138,7 @@ files:
136
138
  - lib/action_text/attachments/trix_conversion.rb
137
139
  - lib/action_text/attribute.rb
138
140
  - lib/action_text/content.rb
141
+ - lib/action_text/deprecator.rb
139
142
  - lib/action_text/encryption.rb
140
143
  - lib/action_text/engine.rb
141
144
  - lib/action_text/fixture_set.rb
@@ -159,11 +162,12 @@ licenses:
159
162
  - MIT
160
163
  metadata:
161
164
  bug_tracker_uri: https://github.com/rails/rails/issues
162
- changelog_uri: https://github.com/rails/rails/blob/v7.0.10/actiontext/CHANGELOG.md
163
- documentation_uri: https://api.rubyonrails.org/v7.0.10/
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/
164
167
  mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
165
- source_code_uri: https://github.com/rails/rails/tree/v7.0.10/actiontext
168
+ source_code_uri: https://github.com/rails/rails/tree/v7.1.0.beta1/actiontext
166
169
  rubygems_mfa_required: 'true'
170
+ post_install_message:
167
171
  rdoc_options: []
168
172
  require_paths:
169
173
  - lib
@@ -174,11 +178,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
174
178
  version: 2.7.0
175
179
  required_rubygems_version: !ruby/object:Gem::Requirement
176
180
  requirements:
177
- - - ">="
181
+ - - ">"
178
182
  - !ruby/object:Gem::Version
179
- version: '0'
183
+ version: 1.3.1
180
184
  requirements: []
181
- rubygems_version: 3.6.9
185
+ rubygems_version: 3.4.18
186
+ signing_key:
182
187
  specification_version: 4
183
188
  summary: Rich text framework.
184
189
  test_files: []