richer_text 0.9.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
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