auto_html 2.0.0 → 2.0.2
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 +5 -5
- data/README.md +26 -4
- data/Rakefile +3 -1
- data/lib/auto_html/emoji.rb +12 -15
- data/lib/auto_html/html_escape.rb +2 -0
- data/lib/auto_html/image.rb +2 -2
- data/lib/auto_html/link.rb +4 -2
- data/lib/auto_html/markdown.rb +2 -0
- data/lib/auto_html/pipeline.rb +3 -0
- data/lib/auto_html/simple_format.rb +2 -1
- data/lib/auto_html/tag_helper.rb +38 -0
- data/lib/auto_html.rb +3 -1
- data/spec/{emoji_spec.rb → auto_html/emoji_spec.rb} +4 -1
- data/spec/{html_escape_spec.rb → auto_html/html_escape_spec.rb} +2 -0
- data/spec/{image_spec.rb → auto_html/image_spec.rb} +2 -0
- data/spec/{link_spec.rb → auto_html/link_spec.rb} +15 -1
- data/spec/{markdown_spec.rb → auto_html/markdown_spec.rb} +3 -1
- data/spec/{pipeline_spec.rb → auto_html/pipeline_spec.rb} +4 -2
- data/spec/{simple_format_spec.rb → auto_html/simple_format_spec.rb} +2 -0
- data/spec/auto_html/tag_helper_spec.rb +30 -0
- data/spec/spec_helper.rb +2 -0
- metadata +31 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: f0bf51223467c7efbbf7f743e446137634deb7370ecbf73cedbfb8d434bb04f8
|
4
|
+
data.tar.gz: e5a1b45c89fdc951906e7e80ce9a9c863edeeb0cf7a5707afe2e1b9bffa96292
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 85b635283440e12428cfd5ad9e42fc12a90224a433c3cf31222d7321bfc4bdaffa3c39ace46bfdda54ca87808cae8e4a4a8442694c1f30666469c3017b9cb252
|
7
|
+
data.tar.gz: '08720ba6a147ab68def101baddf20c7a867ba3edaea3a13ccc6de3ee99e05f34a02f01d10c98d7a8a0e851933af6b117dce774341657002b1a59a34c9dddedff'
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# AutoHtml
|
2
2
|
|
3
|
-
AutoHtml is a collection of filters that
|
3
|
+
AutoHtml is a collection of filters that transforms plain text into HTML code.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -63,10 +63,32 @@ Bellow is the list of bundled filters along with their optional arguments on ini
|
|
63
63
|
* `AutoHtml::Markdown`
|
64
64
|
* `AutoHtml::SimpleFormat`
|
65
65
|
|
66
|
-
##
|
66
|
+
## Using AutoHtml with ActiveRecord
|
67
67
|
|
68
|
-
|
68
|
+
For performance reasons it's a good idea to store the formated output in the database, in a separate column, to avoid generating the same content on each access.
|
69
|
+
This can be acomplished simply by overriding the attribute writter:
|
70
|
+
|
71
|
+
```ruby
|
72
|
+
class Comment < ActiveRecord::Base
|
73
|
+
FORMAT = AutoHtml::Pipeline.new(
|
74
|
+
AutoHtml::HtmlEscape.new,
|
75
|
+
AutoHtml::Markdown.new
|
76
|
+
)
|
77
|
+
|
78
|
+
def text=(t)
|
79
|
+
super(t)
|
80
|
+
self[:text_html] = FORMAT.call(t)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
```
|
84
|
+
|
85
|
+
Now, every time `text` attribute is set, `text_html` will be set as well:
|
86
|
+
|
87
|
+
```Ruby
|
88
|
+
comment = Comment.new(text: 'Hey!')
|
89
|
+
comment.text_html # => '<p>Hey!</p>'
|
90
|
+
```
|
69
91
|
|
70
92
|
## Licence
|
71
93
|
|
72
|
-
AutoHtml is released under the [MIT License](https://raw.githubusercontent.com/dejan/auto_html/master/MIT-
|
94
|
+
AutoHtml is released under the [MIT License](https://raw.githubusercontent.com/dejan/auto_html/master/MIT-LICENSE).
|
data/Rakefile
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'bundler/gem_tasks'
|
2
4
|
require 'rspec/core/rake_task'
|
3
5
|
require 'rubocop/rake_task'
|
@@ -5,4 +7,4 @@ require 'rubocop/rake_task'
|
|
5
7
|
RSpec::Core::RakeTask.new(:spec)
|
6
8
|
RuboCop::RakeTask.new
|
7
9
|
|
8
|
-
task default: [
|
10
|
+
task default: %i[rubocop spec]
|
data/lib/auto_html/emoji.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'gemoji'
|
3
4
|
|
4
5
|
module AutoHtml
|
@@ -11,7 +12,7 @@ module AutoHtml
|
|
11
12
|
end
|
12
13
|
|
13
14
|
def call(text)
|
14
|
-
text.gsub(emoji_pattern) do
|
15
|
+
text.gsub(self.class.emoji_pattern) do
|
15
16
|
name = Regexp.last_match(1)
|
16
17
|
alt = ":#{name}:"
|
17
18
|
html_options = {
|
@@ -27,6 +28,15 @@ module AutoHtml
|
|
27
28
|
end
|
28
29
|
end
|
29
30
|
|
31
|
+
def self.emoji_pattern
|
32
|
+
@emoji_pattern ||=
|
33
|
+
/:(#{emoji_names.map { |name| Regexp.escape(name) }.join('|')}):/
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.emoji_names
|
37
|
+
::Emoji.all.map(&:aliases).flatten.sort
|
38
|
+
end
|
39
|
+
|
30
40
|
private
|
31
41
|
|
32
42
|
def emoji_url(name)
|
@@ -37,19 +47,6 @@ module AutoHtml
|
|
37
47
|
File.join('emoji', emoji_filename(name))
|
38
48
|
end
|
39
49
|
|
40
|
-
def self.emoji_pattern
|
41
|
-
@emoji_pattern ||=
|
42
|
-
/:(#{emoji_names.map { |name| Regexp.escape(name) }.join('|')}):/
|
43
|
-
end
|
44
|
-
|
45
|
-
def emoji_pattern
|
46
|
-
self.class.emoji_pattern
|
47
|
-
end
|
48
|
-
|
49
|
-
def self.emoji_names
|
50
|
-
::Emoji.all.map(&:aliases).flatten.sort
|
51
|
-
end
|
52
|
-
|
53
50
|
def emoji_filename(name)
|
54
51
|
::Emoji.find_by_alias(name).image_filename
|
55
52
|
end
|
data/lib/auto_html/image.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module AutoHtml
|
4
4
|
# Image filter
|
@@ -17,7 +17,7 @@ module AutoHtml
|
|
17
17
|
private
|
18
18
|
|
19
19
|
def image_pattern
|
20
|
-
%r{(?<!src=")https
|
20
|
+
%r{(?<!src=")https?://.+?\.(jpg|jpeg|bmp|gif|png)(\?\S+)?}i
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
data/lib/auto_html/link.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'uri'
|
2
4
|
require 'rinku'
|
3
5
|
require 'rexml/document'
|
@@ -11,13 +13,13 @@ module AutoHtml
|
|
11
13
|
end
|
12
14
|
|
13
15
|
def call(text)
|
14
|
-
Rinku.auto_link(text, :all,
|
16
|
+
Rinku.auto_link(text, :all, attributes)
|
15
17
|
end
|
16
18
|
|
17
19
|
private
|
18
20
|
|
19
21
|
def attributes
|
20
|
-
[target_attr, rel_attr].compact.join(' ')
|
22
|
+
[target_attr, rel_attr].compact.join(' ') unless [target_attr, rel_attr].compact.empty?
|
21
23
|
end
|
22
24
|
|
23
25
|
def rel_attr
|
data/lib/auto_html/markdown.rb
CHANGED
data/lib/auto_html/pipeline.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module AutoHtml
|
2
4
|
# Applies collection of filters to a text
|
3
5
|
class Pipeline
|
@@ -7,6 +9,7 @@ module AutoHtml
|
|
7
9
|
|
8
10
|
def call(text)
|
9
11
|
return '' if text.nil? || text.empty?
|
12
|
+
|
10
13
|
@filters.inject(text) do |content, filter|
|
11
14
|
filter.call(content)
|
12
15
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module AutoHtml
|
4
4
|
# SimpleFormat filter
|
@@ -14,6 +14,7 @@ module AutoHtml
|
|
14
14
|
|
15
15
|
def split_paragraphs(text)
|
16
16
|
return [] if text.nil? || text.empty?
|
17
|
+
|
17
18
|
text.to_s.gsub(/\r\n?/, "\n").split(/\n\n+/).map! do |t|
|
18
19
|
t.gsub!(/([^\n]\n)(?=[^\n])/, '\1<br />') || t
|
19
20
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module AutoHtml
|
4
|
+
# XHTML tags builder
|
5
|
+
module TagHelper
|
6
|
+
def tag(tag_name, attrs = {})
|
7
|
+
if block_given?
|
8
|
+
content_tag(tag_name, yield, attrs)
|
9
|
+
else
|
10
|
+
unary_tag(tag_name, attrs)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def unary_tag(tag_name, attrs = {})
|
17
|
+
"<#{tag_and_attributes(tag_name, tag_attributes(attrs))} />"
|
18
|
+
end
|
19
|
+
|
20
|
+
def content_tag(tag_name, value, attrs = {})
|
21
|
+
start_tag = "<#{tag_and_attributes(tag_name, tag_attributes(attrs))}>"
|
22
|
+
end_tag = "</#{tag_name}>"
|
23
|
+
[start_tag, value, end_tag].join
|
24
|
+
end
|
25
|
+
|
26
|
+
def tag_and_attributes(tag_name, attributes)
|
27
|
+
attributes.empty? ? tag_name : "#{tag_name} #{attributes}"
|
28
|
+
end
|
29
|
+
|
30
|
+
def tag_attributes(hash)
|
31
|
+
hash.compact
|
32
|
+
.to_a
|
33
|
+
.map { |k, v| %(#{k}="#{v}") }.join(' ')
|
34
|
+
end
|
35
|
+
|
36
|
+
extend self
|
37
|
+
end
|
38
|
+
end
|
data/lib/auto_html.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# AutoHtml is a collection of filters that transform plain text into HTML code.
|
2
4
|
module AutoHtml
|
3
5
|
autoload :Pipeline, 'auto_html/pipeline'
|
4
|
-
|
6
|
+
autoload :TagHelper, 'auto_html/tag_helper'
|
5
7
|
autoload :Emoji, 'auto_html/emoji'
|
6
8
|
autoload :HtmlEscape, 'auto_html/html_escape'
|
7
9
|
autoload :Image, 'auto_html/image'
|
@@ -1,9 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
RSpec.describe AutoHtml::Emoji do
|
4
6
|
it 'converts emoji to HTML' do
|
5
7
|
expect(subject.call(':joy:')).to eq(
|
6
8
|
'<img src="/images/emoji/unicode/1f602.png" class="emoji" title=":joy:" '\
|
7
|
-
'alt=":joy:" height="20" witdh="20" align="absmiddle" />'
|
9
|
+
'alt=":joy:" height="20" witdh="20" align="absmiddle" />'
|
10
|
+
)
|
8
11
|
end
|
9
12
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
RSpec.describe AutoHtml::Link do
|
@@ -31,9 +33,21 @@ RSpec.describe AutoHtml::Link do
|
|
31
33
|
expect(result).to eq '<a href="http://www.google.com/#q=nikola+tesla&ct=tesla09&oi=ddle&fp=Xmf0jJ9P_V0">http://www.google.com/#q=nikola+tesla&ct=tesla09&oi=ddle&fp=Xmf0jJ9P_V0</a>'
|
32
34
|
end
|
33
35
|
|
34
|
-
it 'transforms with options' do
|
36
|
+
it 'transforms with target options' do
|
35
37
|
filter = described_class.new(target: '_blank')
|
36
38
|
result = filter.call('http://rors.org')
|
37
39
|
expect(result).to eq '<a href="http://rors.org" target="_blank">http://rors.org</a>'
|
38
40
|
end
|
41
|
+
|
42
|
+
it 'transforms with rel options' do
|
43
|
+
filter = described_class.new(rel: 'nofollow')
|
44
|
+
result = filter.call('http://rors.org')
|
45
|
+
expect(result).to eq '<a href="http://rors.org" rel="nofollow">http://rors.org</a>'
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'transforms with target and rel options' do
|
49
|
+
filter = described_class.new(target: '_blank', rel: 'nofollow')
|
50
|
+
result = filter.call('http://rors.org')
|
51
|
+
expect(result).to eq '<a href="http://rors.org" target="_blank" rel="nofollow">http://rors.org</a>'
|
52
|
+
end
|
39
53
|
end
|
@@ -1,7 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
RSpec.describe AutoHtml::Markdown do
|
4
6
|
it 'formats input using simple GFM rules' do
|
5
|
-
expect(subject.call
|
7
|
+
expect(subject.call('*hello*')).to eq "<p><em>hello</em></p>\n"
|
6
8
|
end
|
7
9
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
RSpec.describe AutoHtml::Pipeline do
|
@@ -15,10 +17,10 @@ RSpec.describe AutoHtml::Pipeline do
|
|
15
17
|
end
|
16
18
|
|
17
19
|
it 'is blank if input is blank' do
|
18
|
-
expect(subject.call
|
20
|
+
expect(subject.call('')).to eq ''
|
19
21
|
end
|
20
22
|
|
21
23
|
it 'is blank if input is nil' do
|
22
|
-
expect(subject.call
|
24
|
+
expect(subject.call(nil)).to eq ''
|
23
25
|
end
|
24
26
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
RSpec.describe AutoHtml::TagHelper do
|
6
|
+
it 'generates tag with attributes' do
|
7
|
+
result = subject.tag(:img, src: '1.png', alt: 'number one!')
|
8
|
+
expect(result).to eq '<img src="1.png" alt="number one!" />'
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'generates tag without attributes' do
|
12
|
+
result = subject.tag(:br)
|
13
|
+
expect(result).to eq '<br />'
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'generates content tags' do
|
17
|
+
result = subject.tag(:label, for: 'name') { 'Name' }
|
18
|
+
expect(result).to eq '<label for="name">Name</label>'
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'generates content tags without attributes' do
|
22
|
+
result = subject.tag(:label) { 'Username' }
|
23
|
+
expect(result).to eq '<label>Username</label>'
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'generates nested tags' do
|
27
|
+
result = subject.tag(:form) { subject.tag(:input, type: 'text') }
|
28
|
+
expect(result).to eq '<form><input type="text" /></form>'
|
29
|
+
end
|
30
|
+
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,85 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: auto_html
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dejan Simic
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-11-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0.5'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0.5'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rinku
|
14
|
+
name: gemoji
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
30
16
|
requirements:
|
31
17
|
- - "~>"
|
32
18
|
- !ruby/object:Gem::Version
|
33
|
-
version: '1
|
19
|
+
version: '2.1'
|
34
20
|
type: :runtime
|
35
21
|
prerelease: false
|
36
22
|
version_requirements: !ruby/object:Gem::Requirement
|
37
23
|
requirements:
|
38
24
|
- - "~>"
|
39
25
|
- !ruby/object:Gem::Version
|
40
|
-
version: '1
|
26
|
+
version: '2.1'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
28
|
+
name: redcarpet
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
31
|
- - "~>"
|
46
32
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
33
|
+
version: '3.5'
|
48
34
|
type: :runtime
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
38
|
- - "~>"
|
53
39
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
40
|
+
version: '3.5'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
42
|
+
name: rinku
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
45
|
- - "~>"
|
60
46
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
47
|
+
version: '2.0'
|
62
48
|
type: :runtime
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
52
|
- - "~>"
|
67
53
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
54
|
+
version: '2.0'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: rake
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
59
|
- - "~>"
|
74
60
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
61
|
+
version: 13.0.6
|
76
62
|
type: :development
|
77
63
|
prerelease: false
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
66
|
- - "~>"
|
81
67
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
68
|
+
version: 13.0.6
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: rspec
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,14 +100,14 @@ dependencies:
|
|
114
100
|
requirements:
|
115
101
|
- - "~>"
|
116
102
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
103
|
+
version: '1.23'
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
107
|
requirements:
|
122
108
|
- - "~>"
|
123
109
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
110
|
+
version: '1.23'
|
125
111
|
description: Collection of filters for transforming text into HTML code
|
126
112
|
email: desimic@gmail.com
|
127
113
|
executables: []
|
@@ -138,19 +124,22 @@ files:
|
|
138
124
|
- lib/auto_html/markdown.rb
|
139
125
|
- lib/auto_html/pipeline.rb
|
140
126
|
- lib/auto_html/simple_format.rb
|
141
|
-
-
|
142
|
-
- spec/
|
143
|
-
- spec/
|
144
|
-
- spec/
|
145
|
-
- spec/
|
146
|
-
- spec/
|
147
|
-
- spec/
|
127
|
+
- lib/auto_html/tag_helper.rb
|
128
|
+
- spec/auto_html/emoji_spec.rb
|
129
|
+
- spec/auto_html/html_escape_spec.rb
|
130
|
+
- spec/auto_html/image_spec.rb
|
131
|
+
- spec/auto_html/link_spec.rb
|
132
|
+
- spec/auto_html/markdown_spec.rb
|
133
|
+
- spec/auto_html/pipeline_spec.rb
|
134
|
+
- spec/auto_html/simple_format_spec.rb
|
135
|
+
- spec/auto_html/tag_helper_spec.rb
|
148
136
|
- spec/spec_helper.rb
|
149
137
|
homepage: https://github.com/dejan/auto_html
|
150
138
|
licenses:
|
151
139
|
- MIT
|
152
|
-
metadata:
|
153
|
-
|
140
|
+
metadata:
|
141
|
+
rubygems_mfa_required: 'true'
|
142
|
+
post_install_message:
|
154
143
|
rdoc_options: []
|
155
144
|
require_paths:
|
156
145
|
- lib
|
@@ -158,17 +147,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
158
147
|
requirements:
|
159
148
|
- - ">="
|
160
149
|
- !ruby/object:Gem::Version
|
161
|
-
version:
|
150
|
+
version: 2.5.0
|
162
151
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
163
152
|
requirements:
|
164
153
|
- - ">="
|
165
154
|
- !ruby/object:Gem::Version
|
166
155
|
version: '0'
|
167
156
|
requirements: []
|
168
|
-
|
169
|
-
|
170
|
-
signing_key:
|
157
|
+
rubygems_version: 3.2.22
|
158
|
+
signing_key:
|
171
159
|
specification_version: 4
|
172
160
|
summary: Plain text to HTML conversion
|
173
161
|
test_files: []
|
174
|
-
has_rdoc:
|