orthotypo 0.6.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +2 -2
- data/lib/orthotypo/composer.rb +38 -7
- data/lib/orthotypo/version.rb +1 -1
- data/spec/composer/fr_spec.rb +11 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fd24cbdb2c5adaa4f6ecf91acf144025549b7599aeb0f944e3f1987331448450
|
4
|
+
data.tar.gz: 6d9a7bb478c4cc0b76722128a1065fc99666f7d1f284cc82cb6f26acfe89bf70
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e51b243378c8d97df6fd3bfa7f59a7aeb7f516d3f54d82cce4eb0ae8d3c7b6a5893211c857c72f8c249a73e0333f3d187ddf4d6145a45ab6de5039633aeaf457
|
7
|
+
data.tar.gz: dc77c1043a6210122c48a8d5849d63df04247d3d957707469d9e3029ed0cf1a9bec745cd12115bb4563254abc6e227c74e13f02285fc0cada9a0d75ab0be2ad6
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -28,10 +28,10 @@ Ajout d'espace fine insécable avant les signes doubles en français.
|
|
28
28
|
## Roadmap
|
29
29
|
|
30
30
|
### v1
|
31
|
-
|
32
|
-
2. Ne pas endommager l'HTML et les HTML entities ( )
|
31
|
+
Ne pas endommager l'HTML et les HTML entities ( )
|
33
32
|
|
34
33
|
### v2
|
34
|
+
S'adapter aux locales (détecter I18n)
|
35
35
|
Permettre les configs
|
36
36
|
|
37
37
|
## Sources
|
data/lib/orthotypo/composer.rb
CHANGED
@@ -19,6 +19,12 @@ module Orthotypo
|
|
19
19
|
[]
|
20
20
|
end
|
21
21
|
|
22
|
+
def chars_with_space_before_after_digit
|
23
|
+
[
|
24
|
+
'%'
|
25
|
+
]
|
26
|
+
end
|
27
|
+
|
22
28
|
def chars_with_space_after
|
23
29
|
[
|
24
30
|
',',
|
@@ -42,6 +48,22 @@ module Orthotypo
|
|
42
48
|
[]
|
43
49
|
end
|
44
50
|
|
51
|
+
def chars_with_no_space_around_between_digits
|
52
|
+
[
|
53
|
+
'/',
|
54
|
+
':'
|
55
|
+
]
|
56
|
+
end
|
57
|
+
|
58
|
+
def chars_in_numbers
|
59
|
+
[
|
60
|
+
'.',
|
61
|
+
',',
|
62
|
+
'/',
|
63
|
+
':'
|
64
|
+
]
|
65
|
+
end
|
66
|
+
|
45
67
|
def is_html?
|
46
68
|
# TODO contains tags?
|
47
69
|
@html || contains_html_entities?
|
@@ -67,6 +89,7 @@ module Orthotypo
|
|
67
89
|
preserve_precious_things
|
68
90
|
# Chars
|
69
91
|
parse_chars_with_space_before
|
92
|
+
parse_chars_with_space_before_after_digit
|
70
93
|
parse_chars_with_space_after
|
71
94
|
parse_chars_with_space_around
|
72
95
|
parse_chars_with_no_space_around
|
@@ -74,7 +97,7 @@ module Orthotypo
|
|
74
97
|
parse_pairs_with_space_around
|
75
98
|
parse_pairs_with_no_space_around
|
76
99
|
# Numbers
|
77
|
-
|
100
|
+
parse_chars_in_numbers
|
78
101
|
#
|
79
102
|
clean_ortho
|
80
103
|
restore_precious_things
|
@@ -106,9 +129,15 @@ module Orthotypo
|
|
106
129
|
def parse_chars_with_space_before
|
107
130
|
chars_with_space_before.each do |char|
|
108
131
|
# Espace normal avant -> espace fine insécable avant
|
109
|
-
fix(SPACE +
|
132
|
+
fix(SPACE + char, NNBSP + char)
|
110
133
|
# Pas d'espace avant -> espace fine insécable avant
|
111
|
-
fix(/([[:
|
134
|
+
fix(/([[:alpha:]])[#{char}]/, "\\1" + NNBSP + char)
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
def parse_chars_with_space_before_after_digit
|
139
|
+
chars_with_space_before_after_digit.each do |char|
|
140
|
+
fix(/([[:digit:]])[#{char}]/, "\\1" + NNBSP + char)
|
112
141
|
end
|
113
142
|
end
|
114
143
|
|
@@ -117,7 +146,7 @@ module Orthotypo
|
|
117
146
|
# Espace avant -> pas d'espace avant
|
118
147
|
fix(SPACE + char, char)
|
119
148
|
# Pas d'espace après -> espace après
|
120
|
-
fix(/[#{char}]([[:
|
149
|
+
fix(/[#{char}]([[:alpha:]])/, char + SPACE + "\\1")
|
121
150
|
end
|
122
151
|
end
|
123
152
|
|
@@ -126,7 +155,7 @@ module Orthotypo
|
|
126
155
|
# Espace normal avant -> espace fine insécable avant
|
127
156
|
fix(SPACE + char, NNBSP + char)
|
128
157
|
# Pas d'espace avant -> espace fine insécable avant
|
129
|
-
fix(/([[:
|
158
|
+
fix(/([[:alpha:]])[#{char}]/, "\\1" + NNBSP + char)
|
130
159
|
end
|
131
160
|
end
|
132
161
|
|
@@ -162,8 +191,10 @@ module Orthotypo
|
|
162
191
|
end
|
163
192
|
end
|
164
193
|
|
165
|
-
def
|
166
|
-
|
194
|
+
def parse_chars_in_numbers
|
195
|
+
chars_in_numbers.each do |char|
|
196
|
+
fix(/([[:digit:]])[[:space:]][#{char}]([[:digit:]])/, "\\1" + char + "\\2")
|
197
|
+
fix(/([[:digit:]])[[:space:]][#{char}][[:space:]]([[:digit:]])/, "\\1" + char + "\\2")
|
167
198
|
fix(/([[:digit:]])[#{char}][[:space:]]([[:digit:]])/, "\\1" + char + "\\2")
|
168
199
|
end
|
169
200
|
end
|
data/lib/orthotypo/version.rb
CHANGED
data/spec/composer/fr_spec.rb
CHANGED
@@ -5,7 +5,8 @@ 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
|
-
|
8
|
+
# Pas automatisable, parce que 11:20
|
9
|
+
# expect("1: suite".ortho).to(eq("1 : suite"))
|
9
10
|
expect("mot; suite".ortho).to(eq("mot ; suite"))
|
10
11
|
expect("mot!".ortho).to(eq("mot !"))
|
11
12
|
expect("mot !".ortho).to(eq("mot !"))
|
@@ -44,6 +45,14 @@ describe Orthotypo::Composer::Fr do
|
|
44
45
|
expect("10 %".ortho).to(eq("10 %"))
|
45
46
|
end
|
46
47
|
|
48
|
+
it 'fixes dates/time' do
|
49
|
+
expect("10/01/2023 16:00".ortho).to(eq("10/01/2023 16:00"))
|
50
|
+
expect("10/01/2023 16:00:00".ortho).to(eq("10/01/2023 16:00:00"))
|
51
|
+
expect("10 / 01 / 2023 16:00".ortho).to(eq("10/01/2023 16:00"))
|
52
|
+
expect("10 / 01 / 2023 16 : 00".ortho).to(eq("10/01/2023 16:00"))
|
53
|
+
expect("10 octobre 2023 16:00".ortho).to(eq("10 octobre 2023 16:00"))
|
54
|
+
end
|
55
|
+
|
47
56
|
# https://www.scribbr.fr/elements-linguistiques/les-espaces/
|
48
57
|
it 'tests de Justine Debret' do
|
49
58
|
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."))
|
@@ -53,6 +62,7 @@ describe Orthotypo::Composer::Fr do
|
|
53
62
|
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. »"))
|
54
63
|
# 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)
|
55
64
|
# expect("Nous l’avons rencontré à Saint - Martin.".ortho).to(eq("Nous l’avons rencontré à Saint-Martin."))
|
65
|
+
expect("Il roule pendant 31, 5 km.".ortho).to(eq("Il roule pendant 31,5 km."))
|
56
66
|
# Le test suivant est-il automatisable ?
|
57
67
|
# expect("Il roule pendant 31, 5km.".ortho).to(eq("Il roule pendant 31,5 km."))
|
58
68
|
# Pas automatisable, rien ne permet de distinguer s'il s'agit d'un rang ou d'un nombre
|
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: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arnaud Levy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-10-
|
11
|
+
date: 2023-10-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: htmlentities
|