tiptap-ruby 0.1.0 → 0.3.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: 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