tiptap-ruby 0.1.0 → 0.3.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: 2347235752700026d263aa5a0616d89f99014c42da52edbf92c30374eb2cfded
4
- data.tar.gz: d97eefd5023412988280b6edf6741186f310452ab657a02c62419296de680334
3
+ metadata.gz: 252bf239b4d5d2f754d1b57c21e5055206557f6f4288cb8e53b97d43d3a44a68
4
+ data.tar.gz: b4973d5e59abbd29c5d5203c73c6dd76cdde57b7871cb72f32543a0aba512e1c
5
5
  SHA512:
6
- metadata.gz: 79f61b79665a0a0d48cc69322c50b24d05a3b330c6f2a6dd8242f31dc628d8f9e1d69db06024b7bb642290c44a001df13379fcc45872a6c0f0f3e28df0bc4a3f
7
- data.tar.gz: 4b5ab21878bccf69ccdc8dfdc3fe04bbc5e3a91a65140b6d2b1759bce3ed13a6169fb47d2697415cd5d27261fa27c11f1d40c2e0387a1f0e30cf38fc296244a0
6
+ metadata.gz: ad79a5564011be35e9cf2d8eaec3c1ff2ed7e1eac790dbe1a5218034b126041e16a6dc8eda9148e3f922a6855bab52d3fd5e1e11e2733890cc448a128208e2d6
7
+ data.tar.gz: a22012af8ba3daabc39f862d0269350e22978d2cf16c1f806f1ad1c3c7ae480fabaf4ebb198c6b70a64aa82e49732c385ea2851343321ecf452e97f032c33e2f
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.3.0] - 2023-10-29
4
+
5
+ - Tweak dependency version requirements to be greater than or equal to
6
+
7
+ ## [0.2.0] - 2023-10-28
8
+
9
+ - Add `Blockquote` and `Codeblock` nodes
10
+ - Add support for `strike`, `code`, and `textStyle` marks
11
+
3
12
  ## [0.1.0] - 2023-10-28
4
13
 
5
14
  - Initial release
@@ -43,5 +43,17 @@ module TipTap
43
43
  def image(src:)
44
44
  add_content(Nodes::Image.new(src: src))
45
45
  end
46
+
47
+ def blockquote(&block)
48
+ raise ArgumentError, "Block required" if block.nil?
49
+
50
+ add_content(Nodes::Blockquote.new(&block))
51
+ end
52
+
53
+ def codeblock(&block)
54
+ raise ArgumentError, "Block required" if block.nil?
55
+
56
+ add_content(Nodes::Codeblock.new(&block))
57
+ end
46
58
  end
47
59
  end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "tip_tap/node"
4
+
5
+ module TipTap
6
+ module Nodes
7
+ class Blockquote < Node
8
+ self.type_name = "blockquote"
9
+ self.html_tag = :blockquote
10
+ self.html_class_name = "blockquote"
11
+
12
+ def paragraph(&block)
13
+ raise ArgumentError, "Block required" if block.nil?
14
+
15
+ add_content(Paragraph.new(&block))
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "tip_tap/node"
4
+
5
+ module TipTap
6
+ module Nodes
7
+ class Codeblock < Node
8
+ self.type_name = "codeBlock"
9
+ self.html_tag = :pre
10
+
11
+ def code(text)
12
+ add_content(Text.new(text, marks: [{type: "code"}]))
13
+ end
14
+ end
15
+ end
16
+ end
@@ -30,10 +30,13 @@ module TipTap
30
30
 
31
31
  def to_html
32
32
  value = text
33
+ value = content_tag(:code, value) if code?
33
34
  value = content_tag(:u, value) if underline?
34
35
  value = content_tag(:em, value) if italic?
35
36
  value = content_tag(:strong, value) if bold?
37
+ value = content_tag(:s, value) if strike?
36
38
  value = content_tag(:a, value, href: link_href, target: link_target) if link?
39
+ value = content_tag(:span, value, style: inline_style_content(text_styles)) if text_style?
37
40
  value
38
41
  end
39
42
 
@@ -57,6 +60,18 @@ module TipTap
57
60
  has_mark_with_type?("link")
58
61
  end
59
62
 
63
+ def strike?
64
+ has_mark_with_type?("strike")
65
+ end
66
+
67
+ def code?
68
+ has_mark_with_type?("code")
69
+ end
70
+
71
+ def text_style?
72
+ has_mark_with_type?("textStyle")
73
+ end
74
+
60
75
  def link_href
61
76
  marks.find { |mark| mark["type"] == "link" }&.dig("attrs", "href")
62
77
  end
@@ -65,11 +80,19 @@ module TipTap
65
80
  marks.find { |mark| mark["type"] == "link" }&.dig("attrs", "target")
66
81
  end
67
82
 
83
+ def text_styles
84
+ marks.find { |mark| mark["type"] == "textStyle" }&.dig("attrs")
85
+ end
86
+
68
87
  private
69
88
 
70
89
  def has_mark_with_type?(type)
71
90
  marks.any? { |mark| mark["type"] == type }
72
91
  end
92
+
93
+ def inline_style_content(styles)
94
+ styles.reduce("") { |acc, val| acc + "#{val[0]}:#{val[1]};" }
95
+ end
73
96
  end
74
97
  end
75
98
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TipTap
4
- VERSION = "0.1.0"
4
+ VERSION = "0.3.0"
5
5
  end
data/lib/tip_tap.rb CHANGED
@@ -14,6 +14,8 @@ require "tip_tap/nodes/task_item"
14
14
  require "tip_tap/nodes/task_list"
15
15
  require "tip_tap/nodes/text"
16
16
  require "tip_tap/nodes/image"
17
+ require "tip_tap/nodes/blockquote"
18
+ require "tip_tap/nodes/codeblock"
17
19
 
18
20
  module TipTap
19
21
  class Error < StandardError; end
metadata CHANGED
@@ -1,41 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tiptap-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.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-28 00:00:00.000000000 Z
11
+ date: 2023-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionview
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '6.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '6.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activesupport
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '6.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '6.0'
41
41
  description: A gem for parsing, generating, and rendering TipTap Documents and Nodes
@@ -55,7 +55,9 @@ files:
55
55
  - lib/tip_tap/html_renderable.rb
56
56
  - lib/tip_tap/json_renderable.rb
57
57
  - lib/tip_tap/node.rb
58
+ - lib/tip_tap/nodes/blockquote.rb
58
59
  - lib/tip_tap/nodes/bullet_list.rb
60
+ - lib/tip_tap/nodes/codeblock.rb
59
61
  - lib/tip_tap/nodes/hard_break.rb
60
62
  - lib/tip_tap/nodes/heading.rb
61
63
  - lib/tip_tap/nodes/horizontal_rule.rb