orthotypo 1.0.1 → 1.0.3
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 +4 -4
- data/Gemfile.lock +19 -18
- data/lib/orthotypo/analyzer.rb +6 -4
- data/lib/orthotypo/composer/fr.rb +8 -4
- data/lib/orthotypo/composer.rb +37 -18
- data/lib/orthotypo/version.rb +1 -1
- data/spec/analyzer_spec.rb +2 -0
- data/spec/composer/fr_spec.rb +30 -6
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 818fb1bd3d3eb901d75f4e02210bf77fd7602b1d032003a3dac4f8a74d82f947
|
4
|
+
data.tar.gz: eef332835ee689969703219a8ddb6807c2f7d4d6d0e066ec71e9b1d68010e3ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6055df7db77d195116bd55015ceecc22c7799991a13cfbd0f7fc01868afe16bf6c1578763a972c4ceee032fb72736388353463468cfd8a1596c8c54b659f854c
|
7
|
+
data.tar.gz: 6643636a85073aecf213a8c533882fe960d275acead499b91cf92fa7ce987de006d9951b520e6077e234b951c44ff825002f1af692edcfafd1291d072942dcc7
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
orthotypo (1.0.
|
4
|
+
orthotypo (1.0.3)
|
5
5
|
htmlentities
|
6
6
|
nokogiri
|
7
7
|
|
@@ -10,16 +10,16 @@ GEM
|
|
10
10
|
specs:
|
11
11
|
ast (2.4.2)
|
12
12
|
byebug (11.1.3)
|
13
|
-
diff-lcs (1.5.
|
13
|
+
diff-lcs (1.5.1)
|
14
14
|
htmlentities (4.3.4)
|
15
15
|
json (2.7.1)
|
16
16
|
language_server-protocol (3.17.0.3)
|
17
|
-
nokogiri (1.16.
|
17
|
+
nokogiri (1.16.2-arm64-darwin)
|
18
18
|
racc (~> 1.4)
|
19
|
-
nokogiri (1.16.
|
19
|
+
nokogiri (1.16.2-x86_64-darwin)
|
20
20
|
racc (~> 1.4)
|
21
21
|
parallel (1.24.0)
|
22
|
-
parser (3.3.0.
|
22
|
+
parser (3.3.0.5)
|
23
23
|
ast (~> 2.4.1)
|
24
24
|
racc
|
25
25
|
racc (1.7.3)
|
@@ -27,27 +27,27 @@ GEM
|
|
27
27
|
rake (13.1.0)
|
28
28
|
regexp_parser (2.9.0)
|
29
29
|
rexml (3.2.6)
|
30
|
-
rspec (3.
|
31
|
-
rspec-core (~> 3.
|
32
|
-
rspec-expectations (~> 3.
|
33
|
-
rspec-mocks (~> 3.
|
34
|
-
rspec-core (3.
|
35
|
-
rspec-support (~> 3.
|
36
|
-
rspec-expectations (3.
|
30
|
+
rspec (3.13.0)
|
31
|
+
rspec-core (~> 3.13.0)
|
32
|
+
rspec-expectations (~> 3.13.0)
|
33
|
+
rspec-mocks (~> 3.13.0)
|
34
|
+
rspec-core (3.13.0)
|
35
|
+
rspec-support (~> 3.13.0)
|
36
|
+
rspec-expectations (3.13.0)
|
37
37
|
diff-lcs (>= 1.2.0, < 2.0)
|
38
|
-
rspec-support (~> 3.
|
39
|
-
rspec-mocks (3.
|
38
|
+
rspec-support (~> 3.13.0)
|
39
|
+
rspec-mocks (3.13.0)
|
40
40
|
diff-lcs (>= 1.2.0, < 2.0)
|
41
|
-
rspec-support (~> 3.
|
41
|
+
rspec-support (~> 3.13.0)
|
42
42
|
rspec-nc (0.3.0)
|
43
43
|
rspec (>= 3)
|
44
44
|
terminal-notifier (>= 1.4)
|
45
|
-
rspec-support (3.
|
46
|
-
rubocop (1.
|
45
|
+
rspec-support (3.13.0)
|
46
|
+
rubocop (1.60.2)
|
47
47
|
json (~> 2.3)
|
48
48
|
language_server-protocol (>= 3.17.0)
|
49
49
|
parallel (~> 1.10)
|
50
|
-
parser (>= 3.
|
50
|
+
parser (>= 3.3.0.2)
|
51
51
|
rainbow (>= 2.2.2, < 4.0)
|
52
52
|
regexp_parser (>= 1.8, < 3.0)
|
53
53
|
rexml (>= 3.2.5, < 4.0)
|
@@ -62,6 +62,7 @@ GEM
|
|
62
62
|
|
63
63
|
PLATFORMS
|
64
64
|
arm64-darwin-22
|
65
|
+
arm64-darwin-23
|
65
66
|
x86_64-darwin-22
|
66
67
|
|
67
68
|
DEPENDENCIES
|
data/lib/orthotypo/analyzer.rb
CHANGED
@@ -2,10 +2,12 @@ module Orthotypo
|
|
2
2
|
class Analyzer
|
3
3
|
|
4
4
|
def self.url?(string)
|
5
|
-
|
6
|
-
|
5
|
+
uri = URI.parse(string)
|
6
|
+
uri.class != URI::Generic
|
7
|
+
rescue URI::InvalidURIError
|
8
|
+
false
|
7
9
|
end
|
8
|
-
|
10
|
+
|
9
11
|
def self.email?(string)
|
10
12
|
string =~ /\A#{URI::MailTo::EMAIL_REGEXP}\z/ ? true : false
|
11
13
|
end
|
@@ -13,6 +15,6 @@ module Orthotypo
|
|
13
15
|
def self.precious?(string)
|
14
16
|
email?(string) || url?(string)
|
15
17
|
end
|
16
|
-
|
18
|
+
|
17
19
|
end
|
18
20
|
end
|
@@ -12,12 +12,11 @@ module Orthotypo
|
|
12
12
|
def chars_with_space_after
|
13
13
|
[
|
14
14
|
',',
|
15
|
-
'.',
|
16
15
|
'...',
|
17
16
|
'…'
|
18
17
|
]
|
19
18
|
end
|
20
|
-
|
19
|
+
|
21
20
|
def chars_with_space_around
|
22
21
|
[
|
23
22
|
';',
|
@@ -27,6 +26,12 @@ module Orthotypo
|
|
27
26
|
]
|
28
27
|
end
|
29
28
|
|
29
|
+
def chars_with_no_space_before
|
30
|
+
[
|
31
|
+
'.'
|
32
|
+
]
|
33
|
+
end
|
34
|
+
|
30
35
|
def chars_with_no_space_around
|
31
36
|
[
|
32
37
|
"'",
|
@@ -40,11 +45,10 @@ module Orthotypo
|
|
40
45
|
'«»'
|
41
46
|
]
|
42
47
|
end
|
43
|
-
|
48
|
+
|
44
49
|
def pairs_with_no_space_around
|
45
50
|
[
|
46
51
|
'“”',
|
47
|
-
'‘’',
|
48
52
|
'‹›',
|
49
53
|
'""',
|
50
54
|
"''",
|
data/lib/orthotypo/composer.rb
CHANGED
@@ -31,11 +31,15 @@ module Orthotypo
|
|
31
31
|
'.'
|
32
32
|
]
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
def chars_with_space_around
|
36
36
|
[]
|
37
37
|
end
|
38
38
|
|
39
|
+
def chars_with_no_space_before
|
40
|
+
[]
|
41
|
+
end
|
42
|
+
|
39
43
|
def chars_with_no_space_around
|
40
44
|
[]
|
41
45
|
end
|
@@ -43,7 +47,7 @@ module Orthotypo
|
|
43
47
|
def pairs_with_space_around
|
44
48
|
[]
|
45
49
|
end
|
46
|
-
|
50
|
+
|
47
51
|
def pairs_with_no_space_around
|
48
52
|
[]
|
49
53
|
end
|
@@ -57,7 +61,7 @@ module Orthotypo
|
|
57
61
|
|
58
62
|
def chars_in_numbers
|
59
63
|
[
|
60
|
-
'.',
|
64
|
+
'.',
|
61
65
|
',',
|
62
66
|
'/',
|
63
67
|
':'
|
@@ -73,6 +77,12 @@ module Orthotypo
|
|
73
77
|
@contains_html_entities ||= html_entities.decode(string) != string
|
74
78
|
end
|
75
79
|
|
80
|
+
def prepare_linebreaks
|
81
|
+
@string.gsub! "\r\n", "<br>"
|
82
|
+
@string.gsub! "\r", "<br>"
|
83
|
+
@string.gsub! "\n", "<br>"
|
84
|
+
end
|
85
|
+
|
76
86
|
def prepare_ortho
|
77
87
|
@ortho = string.dup
|
78
88
|
@nokogiri = Nokogiri::HTML.fragment @ortho
|
@@ -83,6 +93,7 @@ module Orthotypo
|
|
83
93
|
end
|
84
94
|
|
85
95
|
def parse
|
96
|
+
prepare_linebreaks
|
86
97
|
prepare_ortho
|
87
98
|
preserve_precious_things
|
88
99
|
# Chars
|
@@ -90,6 +101,7 @@ module Orthotypo
|
|
90
101
|
parse_chars_with_space_before_after_digit
|
91
102
|
parse_chars_with_space_after
|
92
103
|
parse_chars_with_space_around
|
104
|
+
parse_chars_with_no_space_before
|
93
105
|
parse_chars_with_no_space_around
|
94
106
|
# Pairs
|
95
107
|
parse_pairs_with_space_around
|
@@ -108,7 +120,7 @@ module Orthotypo
|
|
108
120
|
has_leading_space = node.content.start_with? SPACE
|
109
121
|
has_trailing_space = node.content.end_with? SPACE
|
110
122
|
node.content = node.content.split(SPACE).map { |fragment|
|
111
|
-
store_if_precious(fragment)
|
123
|
+
store_if_precious(fragment)
|
112
124
|
}.join(SPACE)
|
113
125
|
node.content = SPACE + node.content if has_leading_space
|
114
126
|
node.content = node.content + SPACE if has_trailing_space
|
@@ -149,22 +161,23 @@ module Orthotypo
|
|
149
161
|
# Espace normal avant -> espace fine insécable avant
|
150
162
|
fix(SPACE + char, NNBSP + char)
|
151
163
|
# Pas d'espace avant -> espace fine insécable avant
|
152
|
-
fix(/([[:alpha:]])
|
164
|
+
fix(/([[:alpha:]])#{Regexp.quote(char)}/, "\\1" + NNBSP + char)
|
153
165
|
end
|
154
166
|
end
|
155
167
|
|
156
168
|
def parse_chars_with_space_before_after_digit
|
157
169
|
chars_with_space_before_after_digit.each do |char|
|
158
|
-
fix(/([[:digit:]])
|
170
|
+
fix(/([[:digit:]])#{Regexp.quote(char)}/, "\\1" + NNBSP + char)
|
159
171
|
end
|
160
172
|
end
|
161
173
|
|
162
174
|
def parse_chars_with_space_after
|
163
175
|
chars_with_space_after.each do |char|
|
164
|
-
# Espace avant -> pas d'espace avant
|
176
|
+
# Espace avant -> pas d'espace avant
|
165
177
|
fix(SPACE + char, char)
|
166
178
|
# Pas d'espace après -> espace après
|
167
|
-
|
179
|
+
# FIXME
|
180
|
+
fix(/#{Regexp.quote(char)}([[:alpha:]])/, char + SPACE + "\\1")
|
168
181
|
end
|
169
182
|
end
|
170
183
|
|
@@ -173,15 +186,22 @@ module Orthotypo
|
|
173
186
|
# Espace normal avant -> espace fine insécable avant
|
174
187
|
fix(SPACE + char, NNBSP + char)
|
175
188
|
# Pas d'espace avant -> espace fine insécable avant
|
176
|
-
fix(/([[:alpha:]])
|
189
|
+
fix(/([[:alpha:]])#{Regexp.quote(char)}/, "\\1" + NNBSP + char)
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
def parse_chars_with_no_space_before
|
194
|
+
chars_with_no_space_before.each do |char|
|
195
|
+
# Espace avant -> pas d'espace avant
|
196
|
+
fix(SPACE + char, char)
|
177
197
|
end
|
178
198
|
end
|
179
199
|
|
180
200
|
def parse_chars_with_no_space_around
|
181
201
|
chars_with_no_space_around.each do |char|
|
182
|
-
# Espace avant -> pas d'espace avant
|
202
|
+
# Espace avant -> pas d'espace avant
|
183
203
|
fix(SPACE + char, char)
|
184
|
-
# Espace après -> pas d'espace après
|
204
|
+
# Espace après -> pas d'espace après
|
185
205
|
fix(char + SPACE, char)
|
186
206
|
end
|
187
207
|
end
|
@@ -194,8 +214,8 @@ module Orthotypo
|
|
194
214
|
fix(opening + SPACE, opening + NNBSP)
|
195
215
|
fix(SPACE + closing, NNBSP + closing)
|
196
216
|
# Pas d'espace -> espace fine insécable
|
197
|
-
fix(
|
198
|
-
fix(/([^[:space:]])
|
217
|
+
fix(/#{Regexp.quote(opening)}([^[:space:]])/, opening + NNBSP + "\\1")
|
218
|
+
fix(/([^[:space:]])#{Regexp.quote(closing)}/, "\\1" + NNBSP + closing)
|
199
219
|
end
|
200
220
|
end
|
201
221
|
|
@@ -204,16 +224,15 @@ module Orthotypo
|
|
204
224
|
opening = marks.chars.first
|
205
225
|
closing = marks.chars.last
|
206
226
|
# Espace -> pas d'espace
|
207
|
-
fix(opening +
|
208
|
-
fix(SPACE + closing, closing)
|
227
|
+
fix(/#{Regexp.quote(opening)}[[:space:]](.+)[[:space:]]#{Regexp.quote(closing)}/, opening + "\\1" + closing)
|
209
228
|
end
|
210
229
|
end
|
211
230
|
|
212
231
|
def parse_chars_in_numbers
|
213
232
|
chars_in_numbers.each do |char|
|
214
|
-
fix(/([[:digit:]])[[:space:]]
|
215
|
-
fix(/([[:digit:]])[[:space:]]
|
216
|
-
fix(/([[:digit:]])
|
233
|
+
fix(/([[:digit:]])[[:space:]]#{Regexp.quote(char)}([[:digit:]])/, "\\1" + char + "\\2")
|
234
|
+
fix(/([[:digit:]])[[:space:]]#{Regexp.quote(char)}[[:space:]]([[:digit:]])/, "\\1" + char + "\\2")
|
235
|
+
fix(/([[:digit:]])#{Regexp.quote(char)}[[:space:]]([[:digit:]])/, "\\1" + char + "\\2")
|
217
236
|
end
|
218
237
|
end
|
219
238
|
|
data/lib/orthotypo/version.rb
CHANGED
data/spec/analyzer_spec.rb
CHANGED
@@ -3,6 +3,8 @@ require 'spec_helper'
|
|
3
3
|
describe Orthotypo::Analyzer do
|
4
4
|
it 'find urls' do
|
5
5
|
expect(Orthotypo::Analyzer.url?("https://unsplash.com/@lusvardi?utm_source=osuny")).to be true
|
6
|
+
expect(Orthotypo::Analyzer.url?("https://hal.science/hal-02455856")).to be true
|
7
|
+
expect(Orthotypo::Analyzer.url?("mailto:test@example.com")).to be true
|
6
8
|
expect(Orthotypo::Analyzer.url?("mot:")).to be false
|
7
9
|
end
|
8
10
|
end
|
data/spec/composer/fr_spec.rb
CHANGED
@@ -5,7 +5,7 @@ describe Orthotypo::Composer::Fr do
|
|
5
5
|
it 'adds spaces before double punctuation marks' do
|
6
6
|
expect("mot: suite".ortho).to(eq("mot : suite"))
|
7
7
|
expect("é: suite".ortho).to(eq("é : suite"))
|
8
|
-
# Pas automatisable, parce
|
8
|
+
# Pas automatisable, parce qu'on peut écrire une heure 11:20
|
9
9
|
# expect("1: suite".ortho).to(eq("1 : suite"))
|
10
10
|
expect("mot; suite".ortho).to(eq("mot ; suite"))
|
11
11
|
expect("mot!".ortho).to(eq("mot !"))
|
@@ -17,27 +17,33 @@ describe Orthotypo::Composer::Fr do
|
|
17
17
|
expect("é : suite".ortho).to(eq("é : suite"))
|
18
18
|
expect("1 : suite".ortho).to(eq("1 : suite"))
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
it 'fixes space before simple punctuation' do
|
22
22
|
expect("mot , suite".ortho).to(eq("mot, suite"))
|
23
23
|
expect("mot . suite".ortho).to(eq("mot. suite"))
|
24
24
|
expect("l 'approche".ortho).to(eq("l'approche"))
|
25
25
|
expect("l' approche".ortho).to(eq("l'approche"))
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
it 'fixes space after simple punctuation' do
|
29
29
|
expect("mot,suite".ortho).to(eq("mot, suite"))
|
30
|
+
expect("84.Paris".ortho).to(eq("84.Paris"))
|
31
|
+
expect("etudiant.gouv.fr".ortho).to(eq("etudiant.gouv.fr"))
|
30
32
|
expect("4,5".ortho).to(eq("4,5"))
|
33
|
+
expect("4.5".ortho).to(eq("4.5"))
|
34
|
+
# Le test suivant, on ne fait rien, on ne peut pas résoudre, car s'apparente au cas précédent (1984.5)
|
35
|
+
# expect("Il est né en 1984.5 maisons en paille".ortho).to(eq("Il est né en 1984. 5 maisons en paille"))
|
31
36
|
end
|
32
37
|
|
33
38
|
it 'fixes quotation marks' do
|
34
39
|
expect("«mot»".ortho).to(eq("« mot »"))
|
35
40
|
expect("« mot »".ortho).to(eq("« mot »"))
|
36
41
|
expect("“ mot ”".ortho).to(eq("“mot”"))
|
37
|
-
expect("‘ mot ’".ortho).to(eq("‘mot’"))
|
38
42
|
expect("‹ mot ›".ortho).to(eq("‹mot›"))
|
39
43
|
expect("\" mot \"".ortho).to(eq("\"mot\""))
|
40
44
|
expect("' mot '".ortho).to(eq("'mot'"))
|
45
|
+
expect("( une phrase entre parenthèses )".ortho).to(eq("(une phrase entre parenthèses)"))
|
46
|
+
expect('photos "On the Job", stock'.ortho).to(eq('photos "On the Job", stock'))
|
41
47
|
end
|
42
48
|
|
43
49
|
it 'fixes percent' do
|
@@ -55,20 +61,38 @@ describe Orthotypo::Composer::Fr do
|
|
55
61
|
|
56
62
|
it 'does well with HTML' do
|
57
63
|
expect("<p><a href=\"https://www.linkedin.com/in/marie-dewet-1397a094/\">Marie Dewet</a>, Co-fondatrice de <a href=\"https://www.linkedin.com/company/maisoncleo/\">MaisonCléo</a> nous apporte ses lumières.</p>".ortho).to(eq("<p><a href=\"https://www.linkedin.com/in/marie-dewet-1397a094/\">Marie Dewet</a>, Co-fondatrice de <a href=\"https://www.linkedin.com/company/maisoncleo/\">MaisonCléo</a> nous apporte ses lumières.</p>"))
|
64
|
+
expect("<p></p><p>Nous aimons la qualité</p><p></p>".ortho).to(eq("<p></p><p>Nous aimons la qualité</p><p></p>"))
|
65
|
+
expect('<p>Série de photos "On the Job", Death to the stock</p>'.ortho).to(eq('<p>Série de photos "On the Job", Death to the stock</p>'))
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'manages linebreaks' do
|
69
|
+
expect("A parallel between wildlife and urban ensembles.\r\rShot during summer 2014 on our trip from north to south of Portugal.".ortho).to(eq("A parallel between wildlife and urban ensembles.<br><br>Shot during summer 2014 on our trip from north to south of Portugal."))
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'preserves URLs' do
|
73
|
+
expect("https://hal.science/hal-02455856".ortho).to(eq("https://hal.science/hal-02455856"))
|
58
74
|
end
|
59
75
|
|
60
76
|
# https://www.scribbr.fr/elements-linguistiques/les-espaces/
|
61
77
|
it 'tests de Justine Debret' do
|
62
|
-
|
78
|
+
# FIXME
|
79
|
+
# expect("Elle a vu son cousin,sa tante et son oncle.Ils allaient tous très bien.".ortho).to(eq("Elle a vu son cousin, sa tante et son oncle. Ils allaient tous très bien."))
|
80
|
+
expect("Elle ne disait plus rien…jusqu’au moment du repas.".ortho).to(eq("Elle ne disait plus rien… jusqu’au moment du repas."))
|
81
|
+
|
63
82
|
expect("Elle dit: qui voudrait bien venir voir ce film? Il répond: moi; à moins qu’il ne fasse très beau!".ortho).to(eq("Elle dit : qui voudrait bien venir voir ce film ? Il répond : moi ; à moins qu’il ne fasse très beau !"))
|
83
|
+
|
64
84
|
expect("L’ hiver ne va pas durer toute l’année.".ortho).to(eq("L’hiver ne va pas durer toute l’année."))
|
65
|
-
|
85
|
+
|
66
86
|
expect("Il a dit : «J’arrive ce matin ( ou plus tard ) à Paris [ rue de la République ] pour son anniversaire.»".ortho).to(eq("Il a dit : « J’arrive ce matin (ou plus tard) à Paris [rue de la République] pour son anniversaire. »"))
|
87
|
+
|
67
88
|
# Le test suivant n'est pas automatisable, parce qu'on ne peut distinguer un Paris-Brest (le gâteau) d'un Paris - Brest (le trajet)
|
68
89
|
# expect("Nous l’avons rencontré à Saint - Martin.".ortho).to(eq("Nous l’avons rencontré à Saint-Martin."))
|
90
|
+
|
69
91
|
expect("Il roule pendant 31, 5 km.".ortho).to(eq("Il roule pendant 31,5 km."))
|
92
|
+
|
70
93
|
# Le test suivant est-il automatisable ?
|
71
94
|
# expect("Il roule pendant 31, 5km.".ortho).to(eq("Il roule pendant 31,5 km."))
|
95
|
+
|
72
96
|
# Pas automatisable, rien ne permet de distinguer s'il s'agit d'un rang ou d'un nombre
|
73
97
|
# expect("Il en compte 1,000, 10,000, 36,742, 500,000, puis 1,000,000, 25,000,000, etc.".ortho).to(eq("Il en compte 1 000, 10 000, 36 742, 500 000, puis 1 000 000, 25 000 000, etc."))
|
74
98
|
# expect("Le numéro gagnant est le 3 541 672.".ortho).to(eq("Le numéro gagnant est le 3541672."))
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: orthotypo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arnaud Levy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-02-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: htmlentities
|
@@ -140,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
140
140
|
- !ruby/object:Gem::Version
|
141
141
|
version: '0'
|
142
142
|
requirements: []
|
143
|
-
rubygems_version: 3.
|
143
|
+
rubygems_version: 3.5.5
|
144
144
|
signing_key:
|
145
145
|
specification_version: 4
|
146
146
|
summary: Pour un texte correctement typographié
|