typograph 0.0.1.pre.2 → 0.0.1.pre.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.
- 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:
|