tiptap-ruby 0.4.0 → 0.5.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: 60b5aada7f1e70f5781974f227c6957baa22edda85692a1d788a43757c675f2c
4
- data.tar.gz: 39b3b083e5fb3023e912ec7b8e778f8c0223feebf20c447a7d46952df03a2ca9
3
+ metadata.gz: 234920a15c4fa07aec094cdfc999631c005cbef531c13eb69ec706bca5ac866f
4
+ data.tar.gz: 2cdbb32cc437b0490027e94335ce7e57f7f1cd89184642a08590bc3e82e7e6d3
5
5
  SHA512:
6
- metadata.gz: fb67a28e811555d08ef569c6827c1b7c3f1bdd97b986d52f48661007abd9163da8fc54b1631b45e310b8a5d3ff073fab8780626c7712017a2806c9294fae7cb5
7
- data.tar.gz: db4dec5f0e8004e0387e934d3bda318518e2e552cacdef30e3d547dd116f2d3b70c924e9da9eeb21e3b5897df684ac9d98224bc846a662c3a189f7c72e06298b
6
+ metadata.gz: 5999cd5ccc9e0772ebbb4c7e5df486499671ae4f34c881a9259bcf0d309a42ccb640ec63f83f901ced8c26909c0ef88c51fb72d1a5ac2cd8184c357b0fbd4e31
7
+ data.tar.gz: 60b0011c676856731fc1809c6fd8380282b0175ef235fa4a6edaf946275638dd0a9a4b21a307d267d3caf6cf5a1b11e919ccf458262f04f9218e78a9ff9dda4d
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.5.0] - 2023-10-30
4
+
5
+ - Make `Text` a subclass of `Node`.
6
+ - Try to unify the interface a bit more for the initialize method.
7
+
8
+ ## [0.4.0] - 2023-10-29
9
+
10
+ - Extract `Registerable` module from `JsonRenderable` so that Node registration is separated from being JSON renderable.
11
+ - Make `Document` a subclass of `Node`.
12
+
3
13
  ## [0.3.0] - 2023-10-29
4
14
 
5
15
  - Tweak dependency version requirements to be greater than or equal to
data/README.md CHANGED
@@ -72,6 +72,51 @@ Rendering to plain text is useful if you want to search the contents of your Tip
72
72
  document.to_plain_text # => My Important Document
73
73
  ```
74
74
 
75
+ ### Custom Nodes
76
+
77
+ You can extend the library to add custom node types. First, define your `Node` subclass.
78
+
79
+ ```ruby
80
+ # lib/tip_tap/nodes/gallery.rb
81
+
82
+ module TipTap
83
+ module Nodes
84
+ class Gallery < Node
85
+ self.type_name = 'gallery'
86
+ self.html_tag = :div
87
+ self.html_class_name = 'gallery'
88
+ end
89
+ end
90
+ end
91
+ ```
92
+
93
+ Then create an initializer and define an extensions module and include it in the corresponding node. For example:
94
+
95
+ ```ruby
96
+ # config/initializers/tiptap.rb
97
+
98
+ require 'tip_tap'
99
+ require 'tip_tap/nodes/gallery'
100
+
101
+ module TipTap::DocumentAdditions
102
+ def gallery(&block)
103
+ raise ArgumentError, "Block required" if block.nil?
104
+ add_content(TipTap::Nodes::Gallery.new(&block))
105
+ end
106
+ end
107
+
108
+ TipTap::Document.include(TipTap::DocumentAdditions)
109
+ ```
110
+
111
+ Now you can generate gallery nodes on a `Document` instance:
112
+
113
+ ```ruby
114
+ document = TipTap::Document.new
115
+ document.gallery do |gallery|
116
+ gallery.gallery_item(src: 'example.com')
117
+ end
118
+ ```
119
+
75
120
  ## Development
76
121
 
77
122
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `bundle exec rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -1,23 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "tip_tap/registerable"
4
- require "tip_tap/json_renderable"
5
- require "tip_tap/html_renderable"
3
+ require "tip_tap/node"
6
4
 
7
5
  module TipTap
8
6
  module Nodes
9
- class Text
10
- include Registerable
11
- include JsonRenderable
12
- include HtmlRenderable
13
-
7
+ class Text < Node
14
8
  attr_reader :text, :marks
15
9
 
16
10
  self.type_name = "text"
17
11
 
18
- def initialize(text, marks: [])
19
- @text = text
20
- @marks = marks.map(&:deep_stringify_keys)
12
+ def initialize(content, **attributes)
13
+ @text = content
14
+ @marks = Array(attributes[:marks]).map(&:deep_stringify_keys)
15
+ yield self if block_given?
21
16
  end
22
17
 
23
18
  def self.from_json(json)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TipTap
4
- VERSION = "0.4.0"
4
+ VERSION = "0.5.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tiptap-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chad Wilken
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-29 00:00:00.000000000 Z
11
+ date: 2023-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionview