draftjs_html 0.13.0 → 0.14.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: 050fd09294a00e0826e07a04238cf197b5d8ff0bbe39afc643400ddda3222bcc
4
- data.tar.gz: a3fa4a939eb34470bfc9f3f0e00cccfbb28257a101bc32e8cdcbcd94a2246fac
3
+ metadata.gz: b708c9dfd4a3d4b6cdf22de377edd9a271e6eb527c70648d11337c1d090613e5
4
+ data.tar.gz: e472de0d6b79d5b7cf7380d6ed89f8c85aedf79d30d329a42550b1cf94eb7dd7
5
5
  SHA512:
6
- metadata.gz: 9d9625eb7f4752c9f1f62a0cbf26f90d99835ec7dfd4ac133b4fdd7a67348b2aeb0c9e62b1187bc3b9a48ee3b0887fb24261e5f8daa139b3e570c7c1797ad71f
7
- data.tar.gz: 4be2ef23835b8d614ea53359d01650ce881404dd3cf69db9bc65b99063157dbee515aa6670d668b0d0f3a0817141a943457cc3bd11bfac3b24d2edac00fe423c
6
+ metadata.gz: 6511068eab5eb7c99f7815c85bb6b40bd998f80cee7ed8b41a418d9295bf467f4ed4a1de47049342aa27ec02e0e29207031f1f3cfa9e853da13acc79d98e21b1
7
+ data.tar.gz: bd939bb048b11692d520cfef3202b7e9d7106f36cac901cd4171f82991ccf24981b8cc610f0e61626231c463c84202d5dbb80b26221cecf1f68b9f48b435b32a
@@ -0,0 +1,65 @@
1
+ require 'securerandom'
2
+
3
+ module DraftjsHtml
4
+ module Draftjs
5
+ class RawBuilder
6
+ def self.build(&block)
7
+ instance = new
8
+ instance.instance_eval(&block)
9
+ instance.to_h
10
+ end
11
+
12
+ def initialize
13
+ @blocks = []
14
+ @entity_map = {}
15
+ end
16
+
17
+ def text_block(text)
18
+ typed_block('unstyled', text)
19
+ end
20
+
21
+ def typed_block(type, text, depth: 0)
22
+ @blocks << { 'key' => SecureRandom.urlsafe_base64(10), 'text' => text, 'type' => type, 'depth' => depth }
23
+ end
24
+
25
+ def inline_style(style_name, range)
26
+ (@blocks.last['inlineStyleRanges'] ||= []) << { 'style' => style_name, 'offset' => range.begin, 'length' => range.size }
27
+ end
28
+
29
+ def entity_range(key, range)
30
+ (@blocks.last['entityRanges'] ||= []) << { 'key' => key, 'offset' => range.begin, 'length' => range.size }
31
+ end
32
+
33
+ def apply_entity(type, range, data: {}, mutability: 'IMMUTABLE', key: SecureRandom.uuid)
34
+ @entity_map[key] = {
35
+ 'type' => type,
36
+ 'mutability' => mutability,
37
+ 'data' => deep_stringify_keys(data),
38
+ }
39
+
40
+ entity_range(key, range)
41
+ end
42
+
43
+ def to_h
44
+ {
45
+ 'blocks' => @blocks,
46
+ 'entityMap' => @entity_map,
47
+ }
48
+ end
49
+
50
+ private
51
+
52
+ def deep_stringify_keys(object)
53
+ case object
54
+ when Hash
55
+ object.each_with_object({}) do |(key, value), result|
56
+ result[key.to_s] = deep_stringify_keys(value)
57
+ end
58
+ when Array then object.map { |e| deep_stringify_keys(e) }
59
+ else
60
+ object
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -7,6 +7,7 @@ require_relative 'draftjs/block'
7
7
  require_relative 'draftjs/entity_map'
8
8
  require_relative 'draftjs/entity'
9
9
  require_relative 'draftjs/to_raw'
10
+ require_relative 'draftjs/raw_builder'
10
11
 
11
12
  module DraftjsHtml
12
13
  module Draftjs
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DraftjsHtml
4
- VERSION = "0.13.0"
4
+ VERSION = "0.14.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: draftjs_html
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - TJ Taylor
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-10-13 00:00:00.000000000 Z
11
+ date: 2022-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -64,6 +64,7 @@ files:
64
64
  - lib/draftjs_html/draftjs/content.rb
65
65
  - lib/draftjs_html/draftjs/entity.rb
66
66
  - lib/draftjs_html/draftjs/entity_map.rb
67
+ - lib/draftjs_html/draftjs/raw_builder.rb
67
68
  - lib/draftjs_html/draftjs/to_raw.rb
68
69
  - lib/draftjs_html/html_defaults.rb
69
70
  - lib/draftjs_html/html_depth.rb