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.
@@ -19,7 +19,7 @@ module Typograph
19
19
  # Приводим кавычки к «"»
20
20
  str.gsub!(/(„|“|")/, '"')
21
21
  #
22
- str.gsub!(/^\s+|\s+$/, '')
22
+ str.chomp(" \r\n\t")
23
23
  HTMLEntities.new.decode(str)
24
24
  end
25
25
  end
@@ -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
  # + Нельзя разрывать строку перед тире, например: Знание&nbsp;— сила, Курить&nbsp;— здоровью вредить.
131
- /\p{Zs}+(?:--?|—)(?=\p{Zs})/ => '&nbsp;—',
132
- /^(?:--?|—)(?=\p{Zs})/ => '—',
139
+ /\p{Zs}+(?:--?|—)(?=\p{Zs})/ => "&nbsp;#{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|–)(\s)/ => '&nbsp;&mdash; ',
149
+ /(\s)(&ndash;|–)(\s)/ => "&nbsp;#{mdash} ",
142
150
 
143
151
  # Знак дефиса, идущий после тэга и справа пробел — на знак длинного тире.
144
- /(?<=>)(&ndash|–|-)(\s)/ => '&mdash; ',
152
+ /(?<=>)(&ndash;|–|-)(\s)/ => "#{mdash} ",
145
153
 
146
- # Расстановка дефисов перед -ка, -де, -кась
147
- /\b(\S+)\s(ка|де|кась)\b/i => '<nobr>\1-\2</nobr>',
154
+ # Расстановка дефиса перед -ка, -де, -кась
155
+ /\b(\S+)[\s-](ка|де|кась)\b/i => "<nobr>\\1#{ndash}\\2</nobr>",
148
156
 
149
157
  # Расстановка дефиса после кое-, кой-
150
- /\b(кое|кой)[\s-](как|кого|какой)\b/i => '<nobr>\1-\2</nobr>',
158
+ /\b(кое|кой)[\s-](как|кого|какой)\b/i => "<nobr>\\1#{ndash}\\2</nobr>",
151
159
 
152
- # Расстановка дефисов перед «-либо», «-нибудь».
153
- /(кто|что|где|когда|почему|зачем|кем|чем)[\s-]?(либо|нибудь|то)/i => '<nobr>\1–\2</nobr>',
160
+ # Расстановка дефиса перед -то, -либо, -нибудь
161
+ /(кто|что|где|когда|почему|зачем|кем|чем)[\s-]?(либо|нибудь|то)/i => "<nobr>\\1#{ndash}\\2</nobr>",
154
162
 
155
163
  # Расстановка дефисов в предлогах «из-за», «из-под», «по-над», «по-под».
156
- /\b(из)[\s-]?(за|под)\b/i => '<nobr>\1–\2</nobr>',
157
- /\b(по)[\s-]?(над|под)\b/i => '<nobr>\1–\2</nobr>',
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&nbsp;',
161
169
 
162
170
  # Нельзя отрывать частицы бы, ли, же от предшествующего слова, например: как бы, вряд ли, так же.
163
- # /(?<=[^\p{Zs}])(\p{Zs}+)(ж|бы|б|же|ли|ль|либо|или)(?=<.*?>*[\p{Zs})!?.])/i => '&nbsp;\2',
164
- /(?<=\S)(\s+)(ж|бы|б|же|ли|ль|либо|или)(?=(<.*?>)*[\p{Zs})!?.…])/i => '&nbsp;\2',
171
+ /(?<=[^\p{Zs}])(\p{Zs}+)(ж|бы|б|же|ли|ль|либо|или)(?=(<.*?>)*[\p{Zs})!?.…])/i => '&nbsp;\2',
165
172
 
166
173
  # Неразрывный пробел после инициалов.
167
174
  /([А-ЯA-Z]\.)\s?([А-ЯA-Z]\.)\p{Zs}?([А-Яа-яA-Za-z]+)/m => '\1\2&nbsp;\3',
@@ -1,3 +1,3 @@
1
1
  module Typograph
2
- VERSION = "0.0.1.pre.1"
2
+ VERSION = "0.0.1.pre.2"
3
3
  end
data/spec/xml/russian.xml CHANGED
@@ -604,19 +604,19 @@
604
604
  </test>
605
605
  <test>
606
606
  <input>Возьми ка детка молока. А коль увижу де, что казнь ему мала, повешу тут же всех судей вокруг стола. Поди кась так.</input>
607
- <expected><![CDATA[<nobr>Возьми-ка</nobr> детка молока. А&nbsp;коль <nobr>увижу-де</nobr>, что казнь ему мала, повешу тут&nbsp;же всех судей вокруг стола. <nobr>Поди-кась</nobr>&nbsp;так.]]></expected>
607
+ <expected><![CDATA[<nobr>Возьми–ка</nobr> детка молока. А&nbsp;коль <nobr>увижу–де</nobr>, что казнь ему мала, повешу тут&nbsp;же всех судей вокруг стола. <nobr>Поди–кась</nobr>&nbsp;так.]]></expected>
608
608
  </test>
609
609
  <test>
610
610
  <input>Кое как дошли. Кой кого встретили. Кое от кого, кое на чем, кой у кого, кое с чьим.</input>
611
- <expected><![CDATA[<nobr>Кое-как</nobr> дошли. <nobr>Кой-кого</nobr> встретили. Кое от&nbsp;кого, кое на&nbsp;чем, кой у&nbsp;кого, кое&nbsp;с&nbsp;чьим.]]></expected>
611
+ <expected><![CDATA[<nobr>Кое–как</nobr> дошли. <nobr>Кой–кого</nobr> встретили. Кое от&nbsp;кого, кое на&nbsp;чем, кой у&nbsp;кого, кое&nbsp;с&nbsp;чьим.]]></expected>
612
612
  </test>
613
613
  <test>
614
614
  <input>Секретарь, хотя и чувствовал свое слабое недовольство, все таки радовался наличию таких старушек в активе района. Но хоть и велик был соблазн, я таки успел себя побороть.</input>
615
- <expected><![CDATA[Секретарь, хотя и&nbsp;чувствовал свое слабое недовольство, <nobr>все-таки</nobr> радовался наличию таких старушек в&nbsp;активе района. Но&nbsp;хоть и&nbsp;велик был соблазн, я&nbsp;таки успел себя&nbsp;побороть.]]></expected>
615
+ <expected><![CDATA[Секретарь, хотя и&nbsp;чувствовал свое слабое недовольство, <nobr>все–таки</nobr> радовался наличию таких старушек в&nbsp;активе района. Но&nbsp;хоть и&nbsp;велик был соблазн, я&nbsp;таки успел себя&nbsp;побороть.]]></expected>
616
616
  </test>
617
617
  <test>
618
618
  <input>Из за леса величаво выплывало солнце. Из под развесистой сирени вдруг с лаем выскочила собака.</input>
619
- <expected><![CDATA[<nobr>Из-за</nobr> леса величаво выплывало солнце. <nobr>Из-под</nobr> развесистой сирени вдруг с&nbsp;лаем выскочила&nbsp;собака.]]></expected>
619
+ <expected><![CDATA[<nobr>Из–за</nobr> леса величаво выплывало солнце. <nobr>Из–под</nobr> развесистой сирени вдруг с&nbsp;лаем выскочила&nbsp;собака.]]></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>12332</expected>
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>В, , этом,, тексте. .. много;;;;;; лишних?? знаков : : припенания?!!! !!!! Мы .. иx? ? ? ?должны:::: убрать!!!!!!!!!</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>кое-какой</nobr>]]></expected>
894
+ <expected><![CDATA[<nobr>кое–какой</nobr>]]></expected>
895
895
  </test>
896
896
  <test>
897
897
  <input>давай ка</input>
898
- <expected><![CDATA[<nobr>давай-ка</nobr>]]></expected>
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.1
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: 617037441
126
+ hash: -358560141
127
127
  required_rubygems_version: !ruby/object:Gem::Requirement
128
128
  none: false
129
129
  requirements: