tiptap-ruby 0.4.0 → 0.5.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 +4 -4
- data/CHANGELOG.md +10 -0
- data/README.md +45 -0
- data/lib/tip_tap/nodes/text.rb +6 -11
- data/lib/tip_tap/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 234920a15c4fa07aec094cdfc999631c005cbef531c13eb69ec706bca5ac866f
|
4
|
+
data.tar.gz: 2cdbb32cc437b0490027e94335ce7e57f7f1cd89184642a08590bc3e82e7e6d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
data/lib/tip_tap/nodes/text.rb
CHANGED
@@ -1,23 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "tip_tap/
|
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(
|
19
|
-
@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)
|
data/lib/tip_tap/version.rb
CHANGED
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
|
+
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-
|
11
|
+
date: 2023-10-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionview
|