typograph 0.0.1.pre.1 → 0.0.1.pre.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/typograph/adapter.rb +1 -1
- data/lib/typograph/adapters/russian.rb +23 -16
- data/lib/typograph/version.rb +1 -1
- data/spec/xml/russian.xml +8 -8
- metadata +2 -2
data/lib/typograph/adapter.rb
CHANGED
@@ -3,8 +3,16 @@
|
|
3
3
|
module Typograph
|
4
4
|
module Adapters
|
5
5
|
class Russian < Adapter
|
6
|
+
OPTIONS = {
|
7
|
+
:ndash => '–', # [8211].pack('U')
|
8
|
+
:mdash => '—' # [8211].pack('U')
|
9
|
+
}
|
10
|
+
|
6
11
|
def initialize(options={})
|
7
|
-
@options = options
|
12
|
+
@options = OPTIONS.dup.merge(options)
|
13
|
+
|
14
|
+
ndash = @options[:ndash]
|
15
|
+
mdash = @options[:mdash]
|
8
16
|
|
9
17
|
abbr = 'ООО|ОАО|ЗАО|ЧП|ИП|НПФ|НИИ|ООО\p{Zs}ТПК'
|
10
18
|
prepos = 'а|в|во|вне|и|или|к|о|с|у|со|об|обо|от|ото|то|на|не|ни|но|из|изо|за|уж|на|по|под|подо|пред|предо|про|над|надо|как|без|безо|что|да|для|до|там|ещё|их|ко|меж|между|перед|передо|около|через|сквозь|для|при|я'
|
@@ -128,40 +136,39 @@ module Typograph
|
|
128
136
|
|
129
137
|
# Знак дефиса или два знака дефиса подряд — на знак длинного тире.
|
130
138
|
# + Нельзя разрывать строку перед тире, например: Знание — сила, Курить — здоровью вредить.
|
131
|
-
/\p{Zs}+(?:--?|—)(?=\p{Zs})/ =>
|
132
|
-
/^(?:--?|—)(?=\p{Zs})/ =>
|
139
|
+
/\p{Zs}+(?:--?|—)(?=\p{Zs})/ => " #{mdash}",
|
140
|
+
/^(?:--?|—)(?=\p{Zs})/ => mdash,
|
133
141
|
|
134
142
|
# Прямая речь
|
135
|
-
/(?:^|\s+)(?:--?|—)(?=\p{Zs})/ =>
|
143
|
+
/(?:^|\s+)(?:--?|—)(?=\p{Zs})/ => mdash,
|
136
144
|
|
137
145
|
# Знак дефиса, ограниченный с обоих сторон цифрами — на знак короткого тире.
|
138
|
-
/(?<=\p{Nd})-(?=\p{Nd})/ => '–',
|
146
|
+
# /(?<=\p{Nd})-(?=\p{Nd})/ => '–',
|
139
147
|
|
140
148
|
# Знак дефиса, ограниченный с обоих сторон пробелами — на знак длинного тире.
|
141
|
-
/(\s)(&ndash
|
149
|
+
/(\s)(–|–)(\s)/ => " #{mdash} ",
|
142
150
|
|
143
151
|
# Знак дефиса, идущий после тэга и справа пробел — на знак длинного тире.
|
144
|
-
/(?<=>)(&ndash
|
152
|
+
/(?<=>)(–|–|-)(\s)/ => "#{mdash} ",
|
145
153
|
|
146
|
-
# Расстановка
|
147
|
-
/\b(\S+)\s(ка|де|кась)\b/i =>
|
154
|
+
# Расстановка дефиса перед -ка, -де, -кась
|
155
|
+
/\b(\S+)[\s-](ка|де|кась)\b/i => "<nobr>\\1#{ndash}\\2</nobr>",
|
148
156
|
|
149
157
|
# Расстановка дефиса после кое-, кой-
|
150
|
-
/\b(кое|кой)[\s-](как|кого|какой)\b/i =>
|
158
|
+
/\b(кое|кой)[\s-](как|кого|какой)\b/i => "<nobr>\\1#{ndash}\\2</nobr>",
|
151
159
|
|
152
|
-
# Расстановка
|
153
|
-
/(кто|что|где|когда|почему|зачем|кем|чем)[\s-]?(либо|нибудь|то)/i =>
|
160
|
+
# Расстановка дефиса перед -то, -либо, -нибудь
|
161
|
+
/(кто|что|где|когда|почему|зачем|кем|чем)[\s-]?(либо|нибудь|то)/i => "<nobr>\\1#{ndash}\\2</nobr>",
|
154
162
|
|
155
163
|
# Расстановка дефисов в предлогах «из-за», «из-под», «по-над», «по-под».
|
156
|
-
/\b(из)[\s-]?(за|под)\b/i =>
|
157
|
-
/\b(по)[\s-]?(над|под)\b/i =>
|
164
|
+
/\b(из)[\s-]?(за|под)\b/i => "<nobr>\\1#{ndash}\\2</nobr>",
|
165
|
+
/\b(по)[\s-]?(над|под)\b/i => "<nobr>\\1#{ndash}\\2</nobr>",
|
158
166
|
|
159
167
|
# Нельзя оставлять в конце строки предлоги и союзы
|
160
168
|
/(?<=\p{Zs}|^|\P{L})(#{prepos})(\s+)/i => '\1 ',
|
161
169
|
|
162
170
|
# Нельзя отрывать частицы бы, ли, же от предшествующего слова, например: как бы, вряд ли, так же.
|
163
|
-
|
164
|
-
/(?<=\S)(\s+)(ж|бы|б|же|ли|ль|либо|или)(?=(<.*?>)*[\p{Zs})!?.…])/i => ' \2',
|
171
|
+
/(?<=[^\p{Zs}])(\p{Zs}+)(ж|бы|б|же|ли|ль|либо|или)(?=(<.*?>)*[\p{Zs})!?.…])/i => ' \2',
|
165
172
|
|
166
173
|
# Неразрывный пробел после инициалов.
|
167
174
|
/([А-ЯA-Z]\.)\s?([А-ЯA-Z]\.)\p{Zs}?([А-Яа-яA-Za-z]+)/m => '\1\2 \3',
|
data/lib/typograph/version.rb
CHANGED
data/spec/xml/russian.xml
CHANGED
@@ -604,19 +604,19 @@
|
|
604
604
|
</test>
|
605
605
|
<test>
|
606
606
|
<input>Возьми ка детка молока. А коль увижу де, что казнь ему мала, повешу тут же всех судей вокруг стола. Поди кась так.</input>
|
607
|
-
<expected><![CDATA[<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
|
611
|
+
<expected><![CDATA[<nobr>Кое–как</nobr> дошли. <nobr>Кой–кого</nobr> встретили. Кое от кого, кое на чем, кой у кого, кое с чьим.]]></expected>
|
612
612
|
</test>
|
613
613
|
<test>
|
614
614
|
<input>Секретарь, хотя и чувствовал свое слабое недовольство, все таки радовался наличию таких старушек в активе района. Но хоть и велик был соблазн, я таки успел себя побороть.</input>
|
615
|
-
<expected><![CDATA[Секретарь, хотя и чувствовал свое слабое недовольство, <nobr
|
615
|
+
<expected><![CDATA[Секретарь, хотя и чувствовал свое слабое недовольство, <nobr>все–таки</nobr> радовался наличию таких старушек в активе района. Но хоть и велик был соблазн, я таки успел себя побороть.]]></expected>
|
616
616
|
</test>
|
617
617
|
<test>
|
618
618
|
<input>Из за леса величаво выплывало солнце. Из под развесистой сирени вдруг с лаем выскочила собака.</input>
|
619
|
-
<expected><![CDATA[<nobr
|
619
|
+
<expected><![CDATA[<nobr>Из–за</nobr> леса величаво выплывало солнце. <nobr>Из–под</nobr> развесистой сирени вдруг с лаем выскочила собака.]]></expected>
|
620
620
|
</test>
|
621
621
|
<test>
|
622
622
|
<input>Правда!? Правда!!! Неправда??? Честно?? Честно!! Проехали.. Задумчиво...</input>
|
@@ -636,7 +636,7 @@
|
|
636
636
|
</test>
|
637
637
|
<test>
|
638
638
|
<input>123-32</input>
|
639
|
-
<expected>123
|
639
|
+
<expected>123-32</expected>
|
640
640
|
</test>
|
641
641
|
<test>
|
642
642
|
<input>(С) 1999-2003г., ООО "Фирма "Эдельвейс". Все права защищены.</input>
|
@@ -791,7 +791,7 @@
|
|
791
791
|
<expected>В: этом. тексте, перед; знаками… препинания! пробелы?</expected>
|
792
792
|
</test>
|
793
793
|
<test>
|
794
|
-
<input>В, , этом,, тексте. .. много;;;;;; лишних?? знаков : : припенания?!!! !!!! Мы ..
|
794
|
+
<input>В, , этом,, тексте. .. много;;;;;; лишних?? знаков : : припенания?!!! !!!! Мы .. их? ? ? ?должны:::: убрать!!!!!!!!!</input>
|
795
795
|
<expected>В, этом, тексте… много; лишних? знаков: припенания?!! Мы. их??? должны: убрать!!!</expected>
|
796
796
|
</test>
|
797
797
|
<test>
|
@@ -891,11 +891,11 @@
|
|
891
891
|
</test>
|
892
892
|
<test>
|
893
893
|
<input>кое какой</input>
|
894
|
-
<expected><![CDATA[<nobr
|
894
|
+
<expected><![CDATA[<nobr>кое–какой</nobr>]]></expected>
|
895
895
|
</test>
|
896
896
|
<test>
|
897
897
|
<input>давай ка</input>
|
898
|
-
<expected><![CDATA[<nobr
|
898
|
+
<expected><![CDATA[<nobr>давай–ка</nobr>]]></expected>
|
899
899
|
</test>
|
900
900
|
</group>
|
901
901
|
<group>
|
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.2
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -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: -358560141
|
127
127
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
128
|
none: false
|
129
129
|
requirements:
|