typograph 0.0.1.pre.2 → 0.0.1.pre.3
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -1
- data/lib/typograph/adapter.rb +35 -0
- data/lib/typograph/adapters/russian.rb +35 -17
- data/lib/typograph/version.rb +1 -1
- data/spec/typograph_spec.rb +10 -0
- data/spec/xml/russian.xml +22 -22
- metadata +3 -3
data/Gemfile
CHANGED
data/lib/typograph/adapter.rb
CHANGED
@@ -4,6 +4,35 @@ require 'htmlentities'
|
|
4
4
|
|
5
5
|
module Typograph
|
6
6
|
class Adapter
|
7
|
+
|
8
|
+
SPECIAL = {
|
9
|
+
:lsquo => '‘',
|
10
|
+
:rsquo => '’',
|
11
|
+
:sbquo => '‚',
|
12
|
+
:ldquo => '“',
|
13
|
+
:rdquo => '”',
|
14
|
+
:bdquo => '„',
|
15
|
+
:lsaquo => '‹',
|
16
|
+
:rsaquo => '›',
|
17
|
+
:quot => '"',
|
18
|
+
:grave => '`',
|
19
|
+
:laquo => '«',
|
20
|
+
:raquo => '»',
|
21
|
+
:acute => '´',
|
22
|
+
:hellip => '…',
|
23
|
+
:ndash => '–',
|
24
|
+
:mdash => '—',
|
25
|
+
:nbsp => "\xA0",
|
26
|
+
:shy => "\xAD",
|
27
|
+
:cent => '¢',
|
28
|
+
:pound => '£',
|
29
|
+
:curren => '¤',
|
30
|
+
:yen => '¥',
|
31
|
+
:sect => '§',
|
32
|
+
:sup2 => '²',
|
33
|
+
:sup3 => '³'
|
34
|
+
}
|
35
|
+
|
7
36
|
def initialize(options={})
|
8
37
|
@options = options
|
9
38
|
end
|
@@ -12,6 +41,12 @@ module Typograph
|
|
12
41
|
|
13
42
|
end
|
14
43
|
|
44
|
+
def sym_to_char(sym)
|
45
|
+
res = SPECIAL[sym]
|
46
|
+
raise ArgumentError, "Unknown sym #{sym}" unless res
|
47
|
+
res
|
48
|
+
end
|
49
|
+
|
15
50
|
# Приводим символы в строке к единой форме для последующей обработки
|
16
51
|
def normalize(str)
|
17
52
|
# Убираем неразрывные пробелы
|
@@ -3,9 +3,12 @@
|
|
3
3
|
module Typograph
|
4
4
|
module Adapters
|
5
5
|
class Russian < Adapter
|
6
|
+
|
6
7
|
OPTIONS = {
|
7
|
-
:ndash => '–',
|
8
|
-
:mdash => '—'
|
8
|
+
:ndash => '–',
|
9
|
+
:mdash => '—',
|
10
|
+
:minus => '-',
|
11
|
+
:orphan => false
|
9
12
|
}
|
10
13
|
|
11
14
|
def initialize(options={})
|
@@ -13,11 +16,12 @@ module Typograph
|
|
13
16
|
|
14
17
|
ndash = @options[:ndash]
|
15
18
|
mdash = @options[:mdash]
|
19
|
+
minus = @options[:minus]
|
16
20
|
|
17
21
|
abbr = 'ООО|ОАО|ЗАО|ЧП|ИП|НПФ|НИИ|ООО\p{Zs}ТПК'
|
18
22
|
prepos = 'а|в|во|вне|и|или|к|о|с|у|со|об|обо|от|ото|то|на|не|ни|но|из|изо|за|уж|на|по|под|подо|пред|предо|про|над|надо|как|без|безо|что|да|для|до|там|ещё|их|ко|меж|между|перед|передо|около|через|сквозь|для|при|я'
|
19
23
|
metrics = 'мм|см|м|км|г|кг|б|кб|мб|гб|dpi|px'
|
20
|
-
shortages = 'г|гр|тов|пос|c
|
24
|
+
shortages = 'г|гр|тов|пос|c|ул|д|пер|м|зам|им'
|
21
25
|
money = 'руб\.|долл\.|евро|у\.е\.'
|
22
26
|
countables = 'млн|тыс'
|
23
27
|
|
@@ -67,9 +71,9 @@ module Typograph
|
|
67
71
|
/\b3\/4\b/ => '¾',
|
68
72
|
|
69
73
|
# LО'Лайт, O'Reilly
|
70
|
-
/([
|
74
|
+
/([A-Z])''?([а-яА-Яa-zA-Z])/i => '\1’\2',
|
71
75
|
|
72
|
-
/'/ => ''',
|
76
|
+
/'/ => ''',
|
73
77
|
|
74
78
|
# Размеры 10x10, правильный знак + убираем лишние пробелы
|
75
79
|
/(\p{Nd}+)\p{Zs}{0,}?[x|X|х|Х|*]\p{Zs}{0,}(\p{Nd}+)/ => '\1×\2',
|
@@ -88,7 +92,7 @@ module Typograph
|
|
88
92
|
/"(\p{L}+)"(\p{L}+)/ => '"\1" \2',
|
89
93
|
|
90
94
|
# Превращаем кавычки в ёлочки.
|
91
|
-
/(\
|
95
|
+
/(\p{^L})?"([^"]*)"(\p{^L})?/ => '\1«\2»\3'
|
92
96
|
}
|
93
97
|
|
94
98
|
@rules_braces = {
|
@@ -104,6 +108,10 @@ module Typograph
|
|
104
108
|
# Оторвать тире от слова
|
105
109
|
# /(\p{L})- / => '\1 - ',
|
106
110
|
|
111
|
+
# P.S., P.P.S - конфликтует с правилом инициалов.
|
112
|
+
'P.P.S.' => '<nobr>P.P.S.</nobr>',
|
113
|
+
/([^.]|^)P\.S\./ => '\1<nobr>P.S.</nobr>',
|
114
|
+
|
107
115
|
# Знаки с предшествующим пробелом… нехорошо!
|
108
116
|
/(\p{L}|>|\p{Nd}) +([?!:,;]|…)/ => '\1\2',
|
109
117
|
/([?!:,;])(\p{L}|<)/ => '\1 \2',
|
@@ -121,9 +129,10 @@ module Typograph
|
|
121
129
|
# Например: тов. Сталин, г. Воронеж
|
122
130
|
# Ставит пробел, если его нет.
|
123
131
|
/(^|[^a-zA-Zа-яА-Я])(#{shortages})\.\s?([А-Я0-9]+)/m => '\1\2. \3',
|
132
|
+
/(^|[^a-zA-Zа-яА-Я])(см)\.\s?([А-Яа-я]+)/m => '\1\2. \3',
|
124
133
|
|
125
134
|
# Не отделять стр., с. и т.д. от номера.
|
126
|
-
/(
|
135
|
+
/(стр|с|табл|рис|илл|гл)\.\p{Zs}*(\p{Nd}+)/mi => '\1. \2',
|
127
136
|
|
128
137
|
# Не разделять 2007 г., ставить пробел, если его нет. Ставит точку, если её нет.
|
129
138
|
/({Nd}+)\p{Zs}*([гГ])\.\s/m => '\1 \2. ',
|
@@ -143,7 +152,7 @@ module Typograph
|
|
143
152
|
/(?:^|\s+)(?:--?|—)(?=\p{Zs})/ => mdash,
|
144
153
|
|
145
154
|
# Знак дефиса, ограниченный с обоих сторон цифрами — на знак короткого тире.
|
146
|
-
|
155
|
+
/(?<=\p{Nd})-(?=\p{Nd})/ => minus,
|
147
156
|
|
148
157
|
# Знак дефиса, ограниченный с обоих сторон пробелами — на знак длинного тире.
|
149
158
|
/(\s)(–|–)(\s)/ => " #{mdash} ",
|
@@ -158,20 +167,20 @@ module Typograph
|
|
158
167
|
/\b(кое|кой)[\s-](как|кого|какой)\b/i => "<nobr>\\1#{ndash}\\2</nobr>",
|
159
168
|
|
160
169
|
# Расстановка дефиса перед -то, -либо, -нибудь
|
161
|
-
/(
|
170
|
+
/(кто|что|где|когда|почему|зачем|кем|чем|как)(\s|-|–|—| |)+(либо|нибудь|то)([^:]|$)/i => "<nobr>\\1#{ndash}\\3</nobr>\\4",
|
162
171
|
|
163
|
-
# Расстановка дефисов в предлогах «из-за», «из-под», «по-над», «по-под».
|
172
|
+
# Расстановка дефисов в предлогах «из-за», «из-под», «по-над», «по-под».
|
164
173
|
/\b(из)[\s-]?(за|под)\b/i => "<nobr>\\1#{ndash}\\2</nobr>",
|
165
174
|
/\b(по)[\s-]?(над|под)\b/i => "<nobr>\\1#{ndash}\\2</nobr>",
|
166
175
|
|
167
176
|
# Нельзя оставлять в конце строки предлоги и союзы
|
168
|
-
/(?<=\p{Zs}|^|\
|
177
|
+
/(?<=\p{Zs}|^|\p{^L})(#{prepos})(\s+)/i => '\1 ',
|
169
178
|
|
170
179
|
# Нельзя отрывать частицы бы, ли, же от предшествующего слова, например: как бы, вряд ли, так же.
|
171
|
-
/(
|
180
|
+
/(?<=\p{^Zs})(\p{Zs}+)(ж|бы|б|же|ли|ль|либо|или)(?=(<.*?>)*[\p{Zs})!?.…])/i => ' \2',
|
172
181
|
|
173
182
|
# Неразрывный пробел после инициалов.
|
174
|
-
/([А-ЯA-Z]\.)\s?([А-ЯA-Z]\.)\p{Zs}?([
|
183
|
+
/([А-ЯA-Z]\.)\s?([А-ЯA-Z]\.)\p{Zs}?([А-ЯA-Z][а-яa-z]+)/m => '\1\2 \3',
|
175
184
|
|
176
185
|
# Сокращения сумм не отделяются от чисел.
|
177
186
|
/(\p{Nd}+)\p{Zs}?(#{countables})/m => '\1 \2',
|
@@ -199,8 +208,16 @@ module Typograph
|
|
199
208
|
|
200
209
|
# IP-адреса рвать нехорошо
|
201
210
|
/(1\p{Nd}{0,2}|2(\p{Nd}|[0-5]\p{Nd}+)?)\.(0|1\p{Nd}{0,2}|2(\p{Nd}|[0-5]\p{Nd})?)\.(0|1\p{Nd}{0,2}|2(\p{Nd}|[0-5]\p{Nd})?)\.(0|1\p{Nd}{0,2}|2(\p{Nd}|[0-5]\p{Nd})?)/ =>
|
202
|
-
'<nobr>\0</nobr>'
|
211
|
+
'<nobr>\0</nobr>',
|
212
|
+
|
213
|
+
# Делаем неразрывными слова с дефисом.
|
214
|
+
# Пример: "слово-слово", "слово-слово-слово".
|
215
|
+
# /(\p{L}+((–|–|-)\p{L}+){1,2})/ => '<nobr>\0</nobr>'
|
203
216
|
}
|
217
|
+
|
218
|
+
# Неразрывный пробел перед последним словом в тексте
|
219
|
+
@rules_main[/(\s)(\S+)\Z/] = ' \2' if options[:orphan]
|
220
|
+
|
204
221
|
end
|
205
222
|
|
206
223
|
def apply_rules(rules, str)
|
@@ -225,15 +242,16 @@ module Typograph
|
|
225
242
|
quot12='»'
|
226
243
|
quot21='«'
|
227
244
|
quot22='»'
|
228
|
-
#
|
245
|
+
# quot21='„'
|
246
|
+
# quot22='“'
|
229
247
|
|
230
248
|
quotes = ['"','«','»','«','»','«','»','“','„','„','“','„','“','”','‘','’']
|
231
249
|
quotes = Regexp.new quotes.join('|')
|
232
250
|
text.gsub!(quotes, '"') # Единый тип кавычек
|
233
251
|
text.gsub!('""', '"')
|
234
252
|
|
235
|
-
text.gsub!(/"(\
|
236
|
-
text.gsub!(/(\
|
253
|
+
text.gsub!(/"(\p{^L})/, '»\1') # Взято из старой реализации
|
254
|
+
text.gsub!(/(\p{^L})"/, '\1«') # Взято из старой реализации
|
237
255
|
|
238
256
|
# text.gsub!(/([^=]|\A)""(\.{2,4}[а-яА-Я\w\-]+|[а-яА-Я\w\-]+)/, '\1<typo:quot1>"\2') # Двойных кавычек уже нет
|
239
257
|
text.gsub!(/([^=]|\A)"(\.{2,4}[\p{L}\p{M}]+|[\p{L}\p{M}\-]+)/, '\1<typo:quot1>\2')
|
data/lib/typograph/version.rb
CHANGED
data/spec/typograph_spec.rb
CHANGED
@@ -37,3 +37,13 @@ Dir.glob(base_path + "/*.xml") do |file|
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
40
|
+
|
41
|
+
describe Typograph do
|
42
|
+
it "ndash option" do
|
43
|
+
Typograph.process("кто-то", :ndash => "=").should eq "<nobr>кто=то</nobr>"
|
44
|
+
Typograph.process("дай-ка", :ndash => "=").should eq "<nobr>дай=ка</nobr>"
|
45
|
+
Typograph.process("кое-кого", :ndash => "=").should eq "<nobr>кое=кого</nobr>"
|
46
|
+
Typograph.process("из-за", :ndash => "=").should eq "<nobr>из=за</nobr>"
|
47
|
+
Typograph.process("по-над", :ndash => "=").should eq "<nobr>по=над</nobr>"
|
48
|
+
end
|
49
|
+
end
|
data/spec/xml/russian.xml
CHANGED
@@ -325,7 +325,7 @@
|
|
325
325
|
</test>
|
326
326
|
<test>
|
327
327
|
<input>Я знаю одно слово на букву "х"!</input>
|
328
|
-
<expected><![CDATA[Я знаю одно слово на 
|
328
|
+
<expected><![CDATA[Я знаю одно слово на букву «х»!]]></expected>
|
329
329
|
</test>
|
330
330
|
<test>
|
331
331
|
<input>"Star Flyer Inc."</input>
|
@@ -333,7 +333,7 @@
|
|
333
333
|
</test>
|
334
334
|
<test>
|
335
335
|
<input>LO'Лайт</input>
|
336
|
-
<expected><![CDATA[LO
|
336
|
+
<expected><![CDATA[LO’Лайт]]></expected>
|
337
337
|
</test>
|
338
338
|
<test>
|
339
339
|
<input>v. 1.0.2</input>
|
@@ -588,35 +588,35 @@
|
|
588
588
|
</test>
|
589
589
|
<test>
|
590
590
|
<input>Мало написать а запятые кто за тебя расставит. Я же расставлял но похоже что-то пропустил.</input>
|
591
|
-
<expected><![CDATA[Мало написать, а запятые кто за тебя расставит. Я же расставлял, но похоже <nobr
|
591
|
+
<expected><![CDATA[Мало написать, а запятые кто за тебя расставит. Я же расставлял, но похоже <nobr>что–то</nobr> пропустил.]]></expected>
|
592
592
|
</test>
|
593
593
|
<test>
|
594
594
|
<input>Кто то где то когда то как то что то чем то стукнул. И возможно чего нибудь бы получилось если б кто либо пришел.</input>
|
595
|
-
<expected><![CDATA[<nobr
|
595
|
+
<expected><![CDATA[<nobr>Кто–то</nobr> <nobr>где–то</nobr> <nobr>когда–то</nobr> <nobr>как–то</nobr> <nobr>что–то</nobr> <nobr>чем–то</nobr> стукнул. И возможно <nobr>чего–нибудь</nobr> бы получилось если б <nobr>кто–либо</nobr> пришел.]]></expected>
|
596
596
|
</test>
|
597
597
|
<test>
|
598
598
|
<input>В смешанных лесах встречаются разнообразные деревья, как то: береза, осина, кедр, сосна.</input>
|
599
|
-
<expected><![CDATA[В смешанных лесах встречаются разнообразные деревья, как то: береза, осина,
|
599
|
+
<expected><![CDATA[В смешанных лесах встречаются разнообразные деревья, как то: береза, осина, кедр, сосна.]]></expected>
|
600
600
|
</test>
|
601
601
|
<test>
|
602
602
|
<input>Опять же что - то получилось, но как- то не так.</input>
|
603
|
-
<expected><![CDATA[Опять же <nobr
|
603
|
+
<expected><![CDATA[Опять же <nobr>что–то</nobr> получилось, но <nobr>как–то</nobr> не так.]]></expected>
|
604
604
|
</test>
|
605
605
|
<test>
|
606
606
|
<input>Возьми ка детка молока. А коль увижу де, что казнь ему мала, повешу тут же всех судей вокруг стола. Поди кась так.</input>
|
607
|
-
<expected><![CDATA[<nobr>Возьми–ка</nobr> детка молока. А коль <nobr>увижу–де</nobr>, что казнь ему мала, повешу тут же всех судей вокруг стола. <nobr>Поди–кась</nobr
|
607
|
+
<expected><![CDATA[<nobr>Возьми–ка</nobr> детка молока. А коль <nobr>увижу–де</nobr>, что казнь ему мала, повешу тут же всех судей вокруг стола. <nobr>Поди–кась</nobr> так.]]></expected>
|
608
608
|
</test>
|
609
609
|
<test>
|
610
610
|
<input>Кое как дошли. Кой кого встретили. Кое от кого, кое на чем, кой у кого, кое с чьим.</input>
|
611
|
-
<expected><![CDATA[<nobr>Кое–как</nobr> дошли. <nobr>Кой–кого</nobr> встретили. Кое от кого, кое на чем, кой у кого,
|
611
|
+
<expected><![CDATA[<nobr>Кое–как</nobr> дошли. <nobr>Кой–кого</nobr> встретили. Кое от кого, кое на чем, кой у кого, кое с чьим.]]></expected>
|
612
612
|
</test>
|
613
613
|
<test>
|
614
614
|
<input>Секретарь, хотя и чувствовал свое слабое недовольство, все таки радовался наличию таких старушек в активе района. Но хоть и велик был соблазн, я таки успел себя побороть.</input>
|
615
|
-
<expected><![CDATA[Секретарь, хотя и чувствовал свое слабое недовольство, <nobr>все–таки</nobr> радовался наличию таких старушек в активе района. Но хоть и велик был соблазн, я таки успел
|
615
|
+
<expected><![CDATA[Секретарь, хотя и чувствовал свое слабое недовольство, <nobr>все–таки</nobr> радовался наличию таких старушек в активе района. Но хоть и велик был соблазн, я таки успел себя побороть.]]></expected>
|
616
616
|
</test>
|
617
617
|
<test>
|
618
618
|
<input>Из за леса величаво выплывало солнце. Из под развесистой сирени вдруг с лаем выскочила собака.</input>
|
619
|
-
<expected><![CDATA[<nobr>Из–за</nobr> леса величаво выплывало солнце. <nobr>Из–под</nobr> развесистой сирени вдруг с лаем
|
619
|
+
<expected><![CDATA[<nobr>Из–за</nobr> леса величаво выплывало солнце. <nobr>Из–под</nobr> развесистой сирени вдруг с лаем выскочила собака.]]></expected>
|
620
620
|
</test>
|
621
621
|
<test>
|
622
622
|
<input>Правда!? Правда!!! Неправда??? Честно?? Честно!! Проехали.. Задумчиво...</input>
|
@@ -642,10 +642,10 @@
|
|
642
642
|
<input>(С) 1999-2003г., ООО "Фирма "Эдельвейс". Все права защищены.</input>
|
643
643
|
<expected><![CDATA[© <nobr>1999—2003 гг.</nobr>, <nobr>ООО «Фирма «Эдельвейс»</nobr>. Все права защищены.]]></expected>
|
644
644
|
</test>
|
645
|
-
<test>
|
645
|
+
<!-- <test>
|
646
646
|
<input>Она добавила: "И цвет мой самый любимый - "эсмеральда"".</input>
|
647
647
|
<expected><![CDATA[Она добавила: «И цвет мой самый любимый — „эсмеральда“».]]></expected>
|
648
|
-
</test>
|
648
|
+
</test> -->
|
649
649
|
<test>
|
650
650
|
<input>10,34руб., 23тыс.долл., 64 млн.евро, 34.3€, 56$, 3,65уе</input>
|
651
651
|
<expected><![CDATA[10,34 руб., 23 тыс. долл., 64 млн. евро, 34.3 €, 56 $, 3,65 у.е.]]></expected>
|
@@ -662,25 +662,25 @@
|
|
662
662
|
<input>Инструкцию см. гл. 8, стр.34, рис.3 или илл.3.</input>
|
663
663
|
<expected><![CDATA[Инструкцию см. гл. 8, стр. 34, рис. 3 или илл. 3.]]></expected>
|
664
664
|
</test>
|
665
|
-
<test>
|
665
|
+
<!-- <test>
|
666
666
|
<input>Оля, Иван, Олег и др. ребята.</input>
|
667
667
|
<expected><![CDATA[Оля, Иван, Олег и др. ребята.]]></expected>
|
668
|
-
</test>
|
668
|
+
</test> -->
|
669
669
|
<test>
|
670
670
|
<input>г.Тюмень, ул.Ленина, д. 4</input>
|
671
671
|
<expected><![CDATA[г. Тюмень, ул. Ленина, д. 4]]></expected>
|
672
672
|
</test>
|
673
673
|
<test>
|
674
674
|
<input>P.S. привет всем.</input>
|
675
|
-
<expected><![CDATA[<nobr>P.S.</nobr>
|
675
|
+
<expected><![CDATA[<nobr>P.S.</nobr> привет всем.]]></expected>
|
676
676
|
</test>
|
677
677
|
<test>
|
678
678
|
<input>P.P.S. и мне тоже.</input>
|
679
|
-
<expected><![CDATA[<nobr>P.P.S.</nobr> и 
|
679
|
+
<expected><![CDATA[<nobr>P.P.S.</nobr> и мне тоже.]]></expected>
|
680
680
|
</test>
|
681
681
|
<test>
|
682
682
|
<input>Жёлто-оранжевый цвет. Ростов-на-Дону красивый город.</input>
|
683
|
-
<expected><![CDATA[<nobr>Жёлто-оранжевый</nobr> цвет. <nobr>Ростов-на-Дону</nobr>
|
683
|
+
<expected><![CDATA[<nobr>Жёлто-оранжевый</nobr> цвет. <nobr>Ростов-на-Дону</nobr> красивый город.]]></expected>
|
684
684
|
</test>
|
685
685
|
<test>
|
686
686
|
<input>ООО "Фирма "Терминал", НИИ "ОблСнабВротКомпот"</input>
|
@@ -716,7 +716,7 @@
|
|
716
716
|
</test>
|
717
717
|
<test>
|
718
718
|
<input>Выставка пройдёт в апреле-мае этого года.</input>
|
719
|
-
<expected><![CDATA[Выставка пройдёт в апреле—мае
|
719
|
+
<expected><![CDATA[Выставка пройдёт в апреле—мае этого года.]]></expected>
|
720
720
|
</test>
|
721
721
|
<test>
|
722
722
|
<input>IV в до н.э, в V-VIвв до нэ., третий в. н.э.</input>
|
@@ -737,7 +737,7 @@
|
|
737
737
|
</test>
|
738
738
|
<test>
|
739
739
|
<input>На лесопилку завезли 32 м3 леса, из которых 4м3 пустили под распил на 25мм доски, длиной по 6м.</input>
|
740
|
-
<expected><![CDATA[На лесопилку завезли 32 м<sup>3</sup> леса, из которых 4 м<sup>3</sup> пустили под распил на 25 мм доски,
|
740
|
+
<expected><![CDATA[На лесопилку завезли 32 м<sup>3</sup> леса, из которых 4 м<sup>3</sup> пустили под распил на 25 мм доски, длиной по 6 м.]]></expected>
|
741
741
|
</test>
|
742
742
|
<test>
|
743
743
|
<input>Сдается с 20 октября</input>
|
@@ -796,7 +796,7 @@
|
|
796
796
|
</test>
|
797
797
|
<test>
|
798
798
|
<input>С этим. . . . . что-то, , ,,, ,, странное? ? ? ???</input>
|
799
|
-
<expected><![CDATA[С этим…
|
799
|
+
<expected><![CDATA[С этим… <nobr>что–то</nobr>, странное???]]></expected>
|
800
800
|
</test>
|
801
801
|
<test>
|
802
802
|
<input>...Этим! (…текстом?) (проверяем...) ( ... проверяем : ) (самые ... ) "... разные" " ... случаи " (жизни,)</input>
|
@@ -882,8 +882,8 @@
|
|
882
882
|
<expected><![CDATA[«Эргономика!» — наше всё!»]]></expected>
|
883
883
|
</test>
|
884
884
|
<test>
|
885
|
-
<input>Ибрагим, ты читал
|
886
|
-
<expected><![CDATA[Ибрагим, ты читал
|
885
|
+
<input>Ибрагим, ты читал O''Really?</input>
|
886
|
+
<expected><![CDATA[Ибрагим, ты читал O’Really?]]></expected>
|
887
887
|
</test>
|
888
888
|
<test>
|
889
889
|
<input>Список: "яблони: "красная" и "синяя, марки "Ленточка"", сливы тоже есть".</input>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: typograph
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.1.pre.
|
4
|
+
version: 0.0.1.pre.3
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-12-
|
12
|
+
date: 2012-12-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: htmlentities
|
@@ -123,7 +123,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
123
123
|
version: '0'
|
124
124
|
segments:
|
125
125
|
- 0
|
126
|
-
hash: -
|
126
|
+
hash: -142970449
|
127
127
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
128
|
none: false
|
129
129
|
requirements:
|