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.
@@ -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: