richer_text 0.9.0 → 0.10.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 03e9732ed2320f56a2c30cbcd6af7614b6840b601aab70d790c96e6e8412babf
4
- data.tar.gz: 4413b9240e46d0153dff22c7b4dd7161a555f572ada62b69159f0c267ae7b0b4
3
+ metadata.gz: 587dab9004a19d9fdd0d5d1c191f01f2d128e73f20a4c10b38b1b43fc6206a94
4
+ data.tar.gz: 60ca0263af5e39723bfab6cb3700623aed408bd34e55d4fc6cd81dbebf0f823b
5
5
  SHA512:
6
- metadata.gz: 39f20dfc3cecd2f74f4cc4d01b396d9678ceeed635ff4dc2a35bc62ba0dc8f6361f882dfe1df67b9286d63b1c86fbd6b7e73b729175e8fd3948435eb041a7ade
7
- data.tar.gz: 4718871930d84edd4de392d9ea2d321f6a04782e5f0c774906e468e8c70ecac6ea9c78fb4ed92dcf7aa8598fea600dea3d13a117beef8287d5b709a8547d2318
6
+ metadata.gz: 7d43de3d31186bf8e5c19b1194d817440c10e05e2b4ebfb689882233a4ac7680fb64761476305535c3a1bc5b7f3896116f87419cb824b174dc2e9c7ef5108222
7
+ data.tar.gz: 41d039dc8fe7b478d7f106562812c1871c9341438f04441cff205ac6f0df35d7b535571c1e3d6dffd1296c61d369828ab1efcd169b82020a18c65a0f1819184b
@@ -0,0 +1,27 @@
1
+ module RicherText
2
+ class Embed
3
+ include Rendering
4
+
5
+ def self.find(sgid)
6
+ @embed = GlobalID::Locator.locate_signed(sgid, for: "embeddable")
7
+ new(@embed) if @embed
8
+ end
9
+
10
+ attr_reader :embed
11
+
12
+ def initialize(embed)
13
+ @embed = embed
14
+ end
15
+
16
+ def object
17
+ @embed
18
+ end
19
+
20
+ delegate :to_embeddable_partial_path, to: :@embed
21
+ delegate :model_name, to: :@embed
22
+
23
+ def html
24
+ render partial: to_embeddable_partial_path, object: object, as: model_name.element
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,15 @@
1
+ module RicherText
2
+ module Embeddable
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ def embeddable_sgid
7
+ to_sgid(expires_in: nil, for: "embeddable").to_s
8
+ end
9
+
10
+ def to_embeddable_partial_path
11
+ to_partial_path
12
+ end
13
+ end
14
+ end
15
+ end
@@ -57,6 +57,10 @@ module RicherText
57
57
  "<p style='#{node.style}'>#{visit_children(node).join}</p>"
58
58
  end
59
59
 
60
+ def visit_richer_text_embed(node)
61
+ node.html
62
+ end
63
+
60
64
  def visit_list_item(node)
61
65
  "<li>#{visit_children(node).join}</li>"
62
66
  end
@@ -1,6 +1,7 @@
1
1
  module RicherText
2
2
  class Node
3
3
  attr_reader :json, :attrs, :children, :type
4
+ include RicherText::Rendering
4
5
 
5
6
  STYLES = {
6
7
  "textAlign" => "text-align",
@@ -0,0 +1,19 @@
1
+ module RicherText
2
+ module Nodes
3
+ class RicherTextEmbed < ::RicherText::Node
4
+ def sgid
5
+ attrs["sgid"]
6
+ end
7
+
8
+ def html
9
+ render partial: embeddable.to_embeddable_partial_path, object: embeddable, as: embeddable.model_name.element
10
+ rescue ActiveRecord::RecordNotFound
11
+ "" # TODO: handle this better
12
+ end
13
+
14
+ def embeddable
15
+ @embeddable ||= GlobalID::Locator.locate_signed(sgid, for: "embeddable")
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,13 +1,23 @@
1
+ require "active_support/concern"
2
+ require "active_support/core_ext/module/attribute_accessors_per_thread"
3
+
1
4
  module RicherText
2
5
  module Rendering
3
- private
6
+ extend ActiveSupport::Concern
4
7
 
5
- def render(*args, &block)
6
- action_controller_renderer.render(*args, &block)
8
+ included do
9
+ thread_cattr_accessor :renderer, instance_accessor: false
10
+ delegate :render, to: :class
7
11
  end
8
12
 
9
- def action_controller_renderer
10
- ActionController::Base.renderer
13
+ class_methods do
14
+ def action_controller_renderer
15
+ @action_controller_renderer ||= Class.new(ActionController::Base).renderer
16
+ end
17
+
18
+ def render(*args, &block)
19
+ (renderer || action_controller_renderer).render_to_string(*args, &block)
20
+ end
11
21
  end
12
22
  end
13
23
  end
@@ -1,3 +1,3 @@
1
1
  module RicherText
2
- VERSION = "0.9.0"
2
+ VERSION = "0.10.0"
3
3
  end
data/lib/richer_text.rb CHANGED
@@ -14,6 +14,9 @@ module RicherText
14
14
  autoload :Serialization
15
15
  autoload :TagHelper
16
16
 
17
+ autoload :Embed
18
+ autoload :Embeddable
19
+
17
20
  autoload :Node
18
21
  autoload :Mark
19
22
  autoload :HTMLVisitor
@@ -36,6 +39,7 @@ module RicherText
36
39
  autoload :Mention
37
40
  autoload :OrderedList
38
41
  autoload :Paragraph
42
+ autoload :RicherTextEmbed
39
43
  autoload :Text
40
44
  autoload :Table
41
45
  autoload :TableCell
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: richer_text
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrea Fomera
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-09-22 00:00:00.000000000 Z
11
+ date: 2023-09-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -54,6 +54,8 @@ files:
54
54
  - lib/richer_text.rb
55
55
  - lib/richer_text/attribute.rb
56
56
  - lib/richer_text/content.rb
57
+ - lib/richer_text/embed.rb
58
+ - lib/richer_text/embeddable.rb
57
59
  - lib/richer_text/engine.rb
58
60
  - lib/richer_text/fragment.rb
59
61
  - lib/richer_text/html_visitor.rb
@@ -74,6 +76,7 @@ files:
74
76
  - lib/richer_text/nodes/mention.rb
75
77
  - lib/richer_text/nodes/ordered_list.rb
76
78
  - lib/richer_text/nodes/paragraph.rb
79
+ - lib/richer_text/nodes/richer_text_embed.rb
77
80
  - lib/richer_text/nodes/table.rb
78
81
  - lib/richer_text/nodes/table_cell.rb
79
82
  - lib/richer_text/nodes/table_header.rb