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