editor_js 0.3.1 → 0.3.5.1

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: 3331b44289e858fff9fe9dff634c67c385c355f54f26a671ca32caf0b2736c2a
4
- data.tar.gz: 3a6690dad7bf834d108855d1bf80de681c285ccec755ca7f0e9b799dff7a3c76
3
+ metadata.gz: 8f358be36836bf4ef90ffca7da1bdc02d95a78e6c5ae86a3743e3d54767b4d60
4
+ data.tar.gz: 97fbf37c380a75609620f661a45d0316d169be7b8783a6c7f2a81a109f4557f7
5
5
  SHA512:
6
- metadata.gz: ad9f9f867736e7bc0db5497d64f8253d4c381088c1e2b65dc6d6747c508809a901e609868fa354733b137d217ef49ab43f27ddc2d40d27d7fe8243b856d16da9
7
- data.tar.gz: '09dd651215451db432c4c3ef27a772db470fd6dba5b4d216b592fef2373b5dfec6b12c5efdda3b69be94c20f82b2f76c719eb2f732db80a33b2c96650848e113'
6
+ metadata.gz: 3391b103c6eba07633706cfddd820130852c1df3a71ffe49f3f1283ab38eef83b91edea7e8efa39bfc0b5b6ebc6aab5d50e369badd495fded4b5c9ea265f5bfc
7
+ data.tar.gz: 896fb7e5115db4ff16e228395e5087b37fbe2ec1035a5b52ef91ccf8b664633e697d7ef51f6de493890087408a6e1e3fe895c48f7c14ca4413ea84cbb59845ee
data/Gemfile.lock CHANGED
@@ -1,64 +1,64 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- editor_js (0.3.1)
4
+ editor_js (0.3.5.1)
5
5
  actionview (>= 4)
6
6
  activesupport (>= 4)
7
7
  coderay (~> 1.1, >= 1.1.2)
8
8
  htmlentities (~> 4.3, >= 4.3.4)
9
9
  json-schema (~> 2)
10
10
  redcarpet (~> 3.5)
11
- sanitize (~> 5.1)
11
+ sanitize (~> 6.0)
12
12
 
13
13
  GEM
14
14
  remote: https://rubygems.org/
15
15
  specs:
16
- actionview (6.0.3.1)
17
- activesupport (= 6.0.3.1)
16
+ actionview (6.1.4)
17
+ activesupport (= 6.1.4)
18
18
  builder (~> 3.1)
19
19
  erubi (~> 1.4)
20
20
  rails-dom-testing (~> 2.0)
21
21
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
22
- activesupport (6.0.3.1)
22
+ activesupport (6.1.4)
23
23
  concurrent-ruby (~> 1.0, >= 1.0.2)
24
- i18n (>= 0.7, < 2)
25
- minitest (~> 5.1)
26
- tzinfo (~> 1.1)
27
- zeitwerk (~> 2.2, >= 2.2.2)
28
- addressable (2.7.0)
24
+ i18n (>= 1.6, < 2)
25
+ minitest (>= 5.1)
26
+ tzinfo (~> 2.0)
27
+ zeitwerk (~> 2.3)
28
+ addressable (2.8.0)
29
29
  public_suffix (>= 2.0.2, < 5.0)
30
30
  ast (2.4.0)
31
31
  builder (3.2.4)
32
32
  coderay (1.1.2)
33
- concurrent-ruby (1.1.5)
34
- crass (1.0.5)
33
+ concurrent-ruby (1.1.9)
34
+ crass (1.0.6)
35
35
  diff-lcs (1.3)
36
36
  docile (1.3.2)
37
- erubi (1.9.0)
37
+ erubi (1.10.0)
38
38
  htmlentities (4.3.4)
39
- i18n (1.7.0)
39
+ i18n (1.8.10)
40
40
  concurrent-ruby (~> 1.0)
41
41
  jaro_winkler (1.5.4)
42
42
  json (2.3.0)
43
43
  json-schema (2.8.1)
44
44
  addressable (>= 2.4)
45
- loofah (2.5.0)
45
+ loofah (2.12.0)
46
46
  crass (~> 1.0.2)
47
47
  nokogiri (>= 1.5.9)
48
48
  method_source (0.9.2)
49
- mini_portile2 (2.4.0)
50
- minitest (5.14.1)
51
- nokogiri (1.10.9)
52
- mini_portile2 (~> 2.4.0)
53
- nokogumbo (2.0.2)
54
- nokogiri (~> 1.8, >= 1.8.4)
49
+ mini_portile2 (2.6.1)
50
+ minitest (5.14.4)
51
+ nokogiri (1.12.3)
52
+ mini_portile2 (~> 2.6.1)
53
+ racc (~> 1.4)
55
54
  parallel (1.19.1)
56
55
  parser (2.6.5.0)
57
56
  ast (~> 2.4.0)
58
57
  pry (0.12.2)
59
58
  coderay (~> 1.1.0)
60
59
  method_source (~> 0.9.0)
61
- public_suffix (4.0.3)
60
+ public_suffix (4.0.6)
61
+ racc (1.5.2)
62
62
  rails-dom-testing (2.0.3)
63
63
  activesupport (>= 4.2.0)
64
64
  nokogiri (>= 1.6)
@@ -66,7 +66,7 @@ GEM
66
66
  loofah (~> 2.3)
67
67
  rainbow (3.0.0)
68
68
  rake (13.0.1)
69
- redcarpet (3.5.0)
69
+ redcarpet (3.5.1)
70
70
  rspec (3.9.0)
71
71
  rspec-core (~> 3.9.0)
72
72
  rspec-expectations (~> 3.9.0)
@@ -88,20 +88,18 @@ GEM
88
88
  ruby-progressbar (~> 1.7)
89
89
  unicode-display_width (>= 1.4.0, < 1.7)
90
90
  ruby-progressbar (1.10.1)
91
- sanitize (5.1.0)
91
+ sanitize (6.0.0)
92
92
  crass (~> 1.0.2)
93
- nokogiri (>= 1.8.0)
94
- nokogumbo (~> 2.0)
93
+ nokogiri (>= 1.12.0)
95
94
  simplecov (0.17.1)
96
95
  docile (~> 1.1)
97
96
  json (>= 1.8, < 3)
98
97
  simplecov-html (~> 0.10.0)
99
98
  simplecov-html (0.10.2)
100
- thread_safe (0.3.6)
101
- tzinfo (1.2.7)
102
- thread_safe (~> 0.1)
99
+ tzinfo (2.0.4)
100
+ concurrent-ruby (~> 1.0)
103
101
  unicode-display_width (1.6.0)
104
- zeitwerk (2.2.2)
102
+ zeitwerk (2.4.2)
105
103
 
106
104
  PLATFORMS
107
105
  ruby
data/editor_js.gemspec CHANGED
@@ -28,7 +28,7 @@ Gem::Specification.new do |spec|
28
28
  spec.add_dependency 'actionview', '>= 4'
29
29
  spec.add_dependency 'activesupport', '>= 4'
30
30
  spec.add_dependency 'json-schema', '~> 2'
31
- spec.add_dependency 'sanitize', '~> 5.1'
31
+ spec.add_dependency 'sanitize', '~> 6.0'
32
32
  spec.add_dependency 'htmlentities', '~> 4.3', '>= 4.3.4'
33
33
  spec.add_dependency 'redcarpet', '~> 3.5'
34
34
  spec.add_dependency 'coderay', '~> 1.1', '>= 1.1.2'
data/lib/editor_js.rb CHANGED
@@ -23,6 +23,7 @@ require 'editor_js/blocks/markdown_block'
23
23
  require 'editor_js/blocks/paragraph_block'
24
24
  require 'editor_js/blocks/qiniu_image_block'
25
25
  require 'editor_js/blocks/quote_block'
26
+ require 'editor_js/blocks/warning_block.rb'
26
27
  require 'editor_js/blocks/table_block'
27
28
  require 'editor_js/blocks/attaches_block'
28
29
  require 'editor_js/document'
@@ -2,6 +2,7 @@
2
2
 
3
3
  module EditorJs
4
4
  module Blocks
5
+ # attaches block
5
6
  class AttachesBlock < Base
6
7
  include ActiveSupport::NumberHelper
7
8
 
@@ -2,6 +2,7 @@
2
2
 
3
3
  module EditorJs
4
4
  module Blocks
5
+ # checklist block
5
6
  class ChecklistBlock < Base
6
7
  def schema
7
8
  YAML.safe_load(<<~YAML)
@@ -35,20 +36,24 @@ module EditorJs
35
36
  end
36
37
  end
37
38
 
38
- def sanitize!
39
- safe_tags = {
39
+ def safe_tags
40
+ {
40
41
  'b' => nil,
41
42
  'i' => nil,
43
+ 'u' => ['class'],
44
+ 'del' => ['class'],
42
45
  'a' => ['href'],
43
46
  'mark' => ['class'],
44
47
  'code' => ['class']
45
48
  }
49
+ end
46
50
 
51
+ def sanitize!
47
52
  data['items'].each do |item|
48
53
  item['text'] = Sanitize.fragment(
49
54
  item['text'],
50
55
  elements: safe_tags.keys,
51
- attributes: safe_tags.select {|k, v| v},
56
+ attributes: safe_tags.select { |_k, v| v },
52
57
  remove_contents: true
53
58
  )
54
59
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  module EditorJs
4
4
  module Blocks
5
+ # code block
5
6
  class CodeBlock < Base
6
7
  def schema
7
8
  YAML.safe_load(<<~YAML)
@@ -2,6 +2,7 @@
2
2
 
3
3
  module EditorJs
4
4
  module Blocks
5
+ # delimiter block
5
6
  class DelimiterBlock < Base
6
7
  def schema
7
8
  YAML.safe_load(<<~YAML)
@@ -2,6 +2,7 @@
2
2
 
3
3
  module EditorJs
4
4
  module Blocks
5
+ # embed block
5
6
  class EmbedBlock < Base
6
7
  def schema
7
8
  YAML.safe_load(<<~YAML)
@@ -2,6 +2,7 @@
2
2
 
3
3
  module EditorJs
4
4
  module Blocks
5
+ # header_block
5
6
  class HeaderBlock < Base
6
7
  def schema
7
8
  YAML.safe_load(<<~YAML)
@@ -13,6 +14,12 @@ module EditorJs
13
14
  level:
14
15
  type: number
15
16
  enum: [1,2,3,4,5,6]
17
+ alignment:
18
+ type: string
19
+ enum:
20
+ - align-left
21
+ - align-center
22
+ - align-right
16
23
  required:
17
24
  - text
18
25
  - level
@@ -20,7 +27,15 @@ module EditorJs
20
27
  end
21
28
 
22
29
  def render(_options = {})
23
- content_tag(:"h#{data['level']}", data['text'].html_safe, class: css_name)
30
+ alignment = data['alignment']
31
+ class_name_str = css_name
32
+ if alignment.present?
33
+ class_name_str = [
34
+ class_name_str,
35
+ css_name("__#{alignment}")
36
+ ].join(' ')
37
+ end
38
+ content_tag(:"h#{data['level']}", data['text'].html_safe, class: class_name_str)
24
39
  end
25
40
 
26
41
  def sanitize!
@@ -2,6 +2,7 @@
2
2
 
3
3
  module EditorJs
4
4
  module Blocks
5
+ # image block
5
6
  class ImageBlock < Base
6
7
  def schema
7
8
  YAML.safe_load(<<~YAML)
@@ -2,6 +2,7 @@
2
2
 
3
3
  module EditorJs
4
4
  module Blocks
5
+ # list block
5
6
  class ListBlock < Base
6
7
  def schema
7
8
  YAML.safe_load(<<~YAML)
@@ -29,20 +30,24 @@ module EditorJs
29
30
  end
30
31
  end
31
32
 
32
- def sanitize!
33
- safe_tags = {
33
+ def safe_tags
34
+ {
34
35
  'b' => nil,
35
36
  'i' => nil,
37
+ 'u' => ['class'],
38
+ 'del' => ['class'],
36
39
  'a' => ['href'],
37
40
  'mark' => ['class'],
38
41
  'code' => ['class']
39
42
  }
43
+ end
40
44
 
45
+ def sanitize!
41
46
  data['items'] = data['items'].map do |text|
42
47
  Sanitize.fragment(
43
48
  text,
44
49
  elements: safe_tags.keys,
45
- attributes: safe_tags.select {|k, v| v},
50
+ attributes: safe_tags.select { |_k, v| v },
46
51
  remove_contents: true
47
52
  )
48
53
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  module EditorJs
4
4
  module Blocks
5
+ # markdown block
5
6
  class MarkdownBlock < Base
6
7
  class HTMLwithCodeRay < Redcarpet::Render::HTML
7
8
  def block_code(code, language)
@@ -2,6 +2,7 @@
2
2
 
3
3
  module EditorJs
4
4
  module Blocks
5
+ # paragraph block
5
6
  class ParagraphBlock < Base
6
7
  def schema
7
8
  YAML.safe_load(<<~YAML)
@@ -10,26 +11,44 @@ module EditorJs
10
11
  properties:
11
12
  text:
12
13
  type: string
14
+ alignment:
15
+ type: string
16
+ enum:
17
+ - align-left
18
+ - align-center
19
+ - align-right
13
20
  YAML
14
21
  end
15
22
 
16
23
  def render(_options = {})
17
- content_tag(:div, class: css_name) { data['text'].html_safe }
24
+ alignment = data['alignment']
25
+ class_name_str = css_name
26
+ if alignment.present?
27
+ class_name_str = [
28
+ class_name_str,
29
+ css_name("__#{alignment}")
30
+ ].join(' ')
31
+ end
32
+ content_tag(:div, class: class_name_str) { data['text'].html_safe }
18
33
  end
19
34
 
20
- def sanitize!
21
- safe_tags = {
35
+ def safe_tags
36
+ {
22
37
  'b' => nil,
23
38
  'i' => nil,
39
+ 'u' => ['class'],
40
+ 'del' => ['class'],
24
41
  'a' => ['href'],
25
42
  'mark' => ['class'],
26
43
  'code' => ['class']
27
44
  }
45
+ end
28
46
 
47
+ def sanitize!
29
48
  data['text'] = Sanitize.fragment(
30
49
  data['text'],
31
50
  elements: safe_tags.keys,
32
- attributes: safe_tags.select {|k, v| v},
51
+ attributes: safe_tags.select { |_k, v| v },
33
52
  remove_contents: true
34
53
  )
35
54
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  module EditorJs
4
4
  module Blocks
5
+ # qiniu image block
5
6
  class QiniuImageBlock < ImageBlock
6
7
  end
7
8
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  module EditorJs
4
4
  module Blocks
5
+ # quote block
5
6
  class QuoteBlock < Base
6
7
  def schema
7
8
  YAML.safe_load(<<~YAML)
@@ -28,21 +29,25 @@ module EditorJs
28
29
  end
29
30
  end
30
31
 
31
- def sanitize!
32
- safe_tags = {
32
+ def safe_tags
33
+ {
33
34
  'b' => nil,
34
35
  'i' => nil,
36
+ 'u' => ['class'],
37
+ 'del' => ['class'],
35
38
  'a' => ['href'],
36
39
  'mark' => ['class'],
37
40
  'code' => ['class'],
38
41
  'br' => nil
39
42
  }
43
+ end
40
44
 
41
- %w(text caption).each do |key|
45
+ def sanitize!
46
+ %w[text caption].each do |key|
42
47
  data[key] = Sanitize.fragment(
43
48
  data[key],
44
49
  elements: safe_tags.keys,
45
- attributes: safe_tags.select {|k, v| v},
50
+ attributes: safe_tags.select { |_k, v| v },
46
51
  remove_contents: false
47
52
  )
48
53
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  module EditorJs
4
4
  module Blocks
5
+ # table block
5
6
  class TableBlock < Base
6
7
  def schema
7
8
  YAML.safe_load(<<~YAML)
@@ -29,16 +30,35 @@ module EditorJs
29
30
  end
30
31
  end
31
32
 
33
+ def safe_tags
34
+ {
35
+ 'b' => nil,
36
+ 'i' => nil,
37
+ 'u' => ['class'],
38
+ 'del' => ['class'],
39
+ 'a' => ['href'],
40
+ 'mark' => ['class'],
41
+ 'code' => ['class'],
42
+ 'br' => nil
43
+ }
44
+ end
45
+
32
46
  def sanitize!
33
47
  data['content'] = data['content'].map do |row|
34
- row = (row || []).map do |cell_value|
35
- Sanitize.fragment(cell_value, remove_contents: true)
48
+ (row || []).map do |cell_value|
49
+ Sanitize.fragment(
50
+ cell_value,
51
+ elements: safe_tags.keys,
52
+ attributes: safe_tags.select { |_k, v| v },
53
+ remove_contents: false
54
+ )
36
55
  end
37
56
  end
38
57
  end
39
58
 
40
59
  def plain
41
- decode_html data['content'].flatten.join(', ').gsub(/(, )+/, ', ')
60
+ str = data['content'].flatten.join(', ')
61
+ decode_html Sanitize.fragment(str).gsub(/(, )+/, ', ').strip
42
62
  end
43
63
  end
44
64
  end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EditorJs
4
+ module Blocks
5
+ # warning block
6
+ class WarningBlock < Base
7
+ def schema
8
+ YAML.safe_load(<<~YAML)
9
+ type: object
10
+ additionalProperties: false
11
+ properties:
12
+ title:
13
+ type: string
14
+ message:
15
+ type: string
16
+ YAML
17
+ end
18
+
19
+ def render(_options = {})
20
+ title = data['title'].html_safe
21
+ message = data['message'].html_safe
22
+
23
+ content_tag :div, class: css_name do
24
+ html_str = content_tag :div, title, class: "#{css_name}__title"
25
+ html_str << content_tag(:div, message, class: "#{css_name}__message")
26
+ end
27
+ end
28
+
29
+ def safe_tags
30
+ {
31
+ 'b' => nil,
32
+ 'i' => nil,
33
+ 'u' => ['class'],
34
+ 'del' => ['class'],
35
+ 'a' => ['href'],
36
+ 'mark' => ['class'],
37
+ 'code' => ['class']
38
+ }
39
+ end
40
+
41
+ def sanitize!
42
+ %w[title message].each do |key|
43
+ data[key] = Sanitize.fragment(
44
+ data[key],
45
+ elements: safe_tags.keys,
46
+ attributes: safe_tags.select { |_k, v| v },
47
+ remove_contents: false
48
+ )
49
+ end
50
+ end
51
+
52
+ def plain
53
+ string = [
54
+ Sanitize.fragment(data['title']).strip,
55
+ Sanitize.fragment(data['message']).strip
56
+ ].join(', ')
57
+ decode_html(string)
58
+ end
59
+ end
60
+ end
61
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EditorJs
4
- VERSION = '0.3.1'
4
+ VERSION = '0.3.5.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: editor_js
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - xiaohui
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-03 00:00:00.000000000 Z
11
+ date: 2021-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionview
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '5.1'
61
+ version: '6.0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '5.1'
68
+ version: '6.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: htmlentities
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -196,6 +196,7 @@ files:
196
196
  - lib/editor_js/blocks/qiniu_image_block.rb
197
197
  - lib/editor_js/blocks/quote_block.rb
198
198
  - lib/editor_js/blocks/table_block.rb
199
+ - lib/editor_js/blocks/warning_block.rb
199
200
  - lib/editor_js/document.rb
200
201
  - lib/editor_js/version.rb
201
202
  homepage: https://github.com/xiaohui-zhangxh/editor_js
@@ -205,7 +206,7 @@ metadata:
205
206
  homepage_uri: https://github.com/xiaohui-zhangxh/editor_js
206
207
  source_code_uri: https://github.com/xiaohui-zhangxh/editor_js
207
208
  changelog_uri: https://github.com/xiaohui-zhangxh/editor_js
208
- post_install_message:
209
+ post_install_message:
209
210
  rdoc_options: []
210
211
  require_paths:
211
212
  - lib
@@ -220,8 +221,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
220
221
  - !ruby/object:Gem::Version
221
222
  version: '0'
222
223
  requirements: []
223
- rubygems_version: 3.0.8
224
- signing_key:
224
+ rubygems_version: 3.1.6
225
+ signing_key:
225
226
  specification_version: 4
226
227
  summary: Ruby gem for editorjs.io text editor
227
228
  test_files: []