typefactory 0.0.11 → 0.0.12
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +1 -0
- data/README.md +2 -0
- data/lib/typefactory.rb +35 -31
- data/lib/typefactory/processor.rb +39 -30
- data/lib/typefactory/version.rb +1 -1
- data/spec/typefactory_spec.rb +13 -5
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2fe21cb2ab6aa014e67f167bfe81b267ef4c40c
|
4
|
+
data.tar.gz: d73ee014c70f97d1c22c2a15fb1a19308e524241
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6a003ce61ed456fcc81d4d7c9fc25f0c91429995c01e37975c3af3545be14f8a047060107ea0480deb14616716afe60e6924889fe1e7f09d8c0c1dbc96e25a6a
|
7
|
+
data.tar.gz: f419813e8aca8619caae749a68c93fd2c531963ecd5294e2234d1bd07a38ae6455b9cdb2847c848d56b2803425775f261d6c98766faff691e21740ef64640c02
|
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
-- color
|
data/README.md
CHANGED
@@ -27,7 +27,9 @@ Typefactory adds method `prepare` for standard Ruby class `String`. You can use
|
|
27
27
|
## Customize
|
28
28
|
|
29
29
|
Need customization? Please use generator:
|
30
|
+
|
30
31
|
$ rails generate typefactory config
|
32
|
+
|
31
33
|
Now you can modify `config/initializers/typefactory.rb`
|
32
34
|
|
33
35
|
## Help to improve
|
data/lib/typefactory.rb
CHANGED
@@ -5,40 +5,44 @@ module Typefactory
|
|
5
5
|
|
6
6
|
autoload :Processor, 'typefactory/processor'
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
8
|
+
MODE = :entity
|
9
|
+
|
10
|
+
LOCALE = :ru
|
11
|
+
|
12
|
+
QUOTES = {
|
13
|
+
ru: [
|
14
|
+
{
|
15
|
+
left: { mark: '"', symbol: '«', entity: '«', decimal: '«' },
|
16
|
+
right: { mark: '"', symbol: '»', entity: '»', decimal: '»' }
|
17
|
+
},
|
18
|
+
{
|
19
|
+
left: { mark: '"', symbol: '„', entity: '„', decimal: '„' },
|
20
|
+
right: { mark: '"', symbol: '“', entity: '“', decimal: '“' }
|
21
|
+
},
|
22
|
+
{
|
23
|
+
left: { mark: '"', symbol: '‘', entity: '‘', decimal: '‘' },
|
24
|
+
right: { mark: '"', symbol: '’', entity: '’', decimal: '’' }
|
25
|
+
}
|
26
|
+
],
|
27
|
+
en: [
|
28
|
+
{
|
29
|
+
left: { mark: '"', symbol: '“', entity: '“', decimal: '“' },
|
30
|
+
right: { mark: '"', symbol: '”', entity: '”', decimal: '”' }
|
31
|
+
},
|
32
|
+
{
|
33
|
+
left: { mark: '"', symbol: '‘', entity: '‘', decimal: '‘' },
|
34
|
+
right: { mark: '"', symbol: '’', entity: '’', decimal: '’' }
|
35
|
+
}
|
36
|
+
]
|
34
37
|
}
|
35
|
-
mattr_accessor :glyphs
|
36
38
|
|
37
|
-
|
38
|
-
|
39
|
-
|
39
|
+
GLYPHS = {
|
40
|
+
nbsp: { mark: ' ', symbol: ' ', entity: ' ', decimal: ' ' },
|
41
|
+
quot: { mark: '"', symbol: '"', entity: '"', decimal: '"' },
|
42
|
+
mdash: { mark: '-', symbol: '—', entity: '—', decimal: '—' },
|
43
|
+
copy: { mark: '(c)', symbol: '©', entity: '©', decimal: '©' }
|
44
|
+
}
|
40
45
|
|
41
|
-
# @note In next versions here will be `settings`
|
42
46
|
def self.prepare(text)
|
43
47
|
Processor.new(text).prepare
|
44
48
|
end
|
@@ -4,51 +4,54 @@ module Typefactory
|
|
4
4
|
|
5
5
|
@buffer = nil
|
6
6
|
|
7
|
-
# @param original [String] a text for preparing
|
8
7
|
def initialize(original)
|
9
8
|
@buffer = original
|
10
9
|
end
|
11
10
|
|
12
|
-
# @return [String] web-prepared text
|
13
11
|
def prepare
|
14
12
|
cleanup
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
13
|
+
preserve_html
|
14
|
+
process_quotes
|
15
|
+
revive_html
|
16
|
+
process_emdaches
|
17
|
+
process_short_words
|
18
|
+
|
20
19
|
@buffer
|
21
20
|
end
|
22
21
|
|
23
22
|
private
|
24
23
|
|
25
|
-
# Purging text from already replaced glyphs (includes quotation marks of whole levels)
|
26
24
|
def cleanup
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
25
|
+
GLYPHS.each do |key, glyph|
|
26
|
+
@buffer.gsub!(/#{glyph[:entity]}|#{glyph[:decimal]}|#{glyph[:symbol]}/) do
|
27
|
+
glyph[:mark]
|
28
|
+
end
|
31
29
|
end
|
32
30
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
31
|
+
expression = ''
|
32
|
+
QUOTES.each_pair do |locale, quotes|
|
33
|
+
quotes.each do |level|
|
34
|
+
level.each do |side, glyph|
|
35
|
+
expression += "#{glyph[:symbol]}|#{glyph[:entity]}|#{glyph[:decimal]}|"
|
36
|
+
end
|
37
|
+
end
|
37
38
|
end
|
38
|
-
@buffer.gsub!(/#{expression[0..-2]}/,
|
39
|
-
|
39
|
+
@buffer.gsub!(/#{expression[0..-2]}/, GLYPHS[:quot][:mark])
|
40
40
|
end
|
41
41
|
|
42
|
-
def
|
43
|
-
@buffer.gsub!(/<([^\/].*?)>/)
|
42
|
+
def preserve_html
|
43
|
+
@buffer.gsub!(/<([^\/].*?)>/) do |tag|
|
44
|
+
tag.gsub(/"/, '\'')
|
45
|
+
end
|
44
46
|
end
|
45
47
|
|
46
|
-
def
|
47
|
-
@buffer.gsub!(/<([^\/].*?)>/)
|
48
|
+
def revive_html
|
49
|
+
@buffer.gsub!(/<([^\/].*?)>/) do |tag|
|
50
|
+
tag.gsub(/'/, '"')
|
51
|
+
end
|
48
52
|
end
|
49
53
|
|
50
|
-
|
51
|
-
def quotes
|
54
|
+
def process_quotes
|
52
55
|
result = String.new
|
53
56
|
level = -1
|
54
57
|
@buffer.split('').each_with_index do |character, index|
|
@@ -56,10 +59,12 @@ module Typefactory
|
|
56
59
|
side = quote_mark_side(index)
|
57
60
|
if side == :left
|
58
61
|
level += 1
|
59
|
-
|
62
|
+
level = QUOTES[LOCALE].length - 1 if level > QUOTES[LOCALE].length - 1
|
63
|
+
result += QUOTES[LOCALE][level][side][MODE]
|
60
64
|
else
|
61
|
-
result +=
|
65
|
+
result += QUOTES[LOCALE][level][side][MODE]
|
62
66
|
level -= 1
|
67
|
+
level = -1 if level < -1
|
63
68
|
end
|
64
69
|
else
|
65
70
|
result += character
|
@@ -104,12 +109,16 @@ module Typefactory
|
|
104
109
|
end
|
105
110
|
end
|
106
111
|
|
107
|
-
def
|
108
|
-
@buffer.gsub!(
|
112
|
+
def process_short_words
|
113
|
+
@buffer.gsub!(/(\s)([a-z,A-Z,а-я,А-Я]{1,2})\s(\S)/) do
|
114
|
+
"#{$1}#{$2}#{GLYPHS[:nbsp][MODE]}#{$3}"
|
115
|
+
end
|
109
116
|
end
|
110
117
|
|
111
|
-
def
|
112
|
-
@buffer.gsub!(/\s\-\s
|
118
|
+
def process_emdaches
|
119
|
+
@buffer.gsub!(/\s\-\s/) do
|
120
|
+
"#{GLYPHS[:nbsp][MODE]}#{GLYPHS[:mdash][MODE]} "
|
121
|
+
end
|
113
122
|
end
|
114
123
|
|
115
124
|
end
|
data/lib/typefactory/version.rb
CHANGED
data/spec/typefactory_spec.rb
CHANGED
@@ -5,11 +5,12 @@ RSpec.describe 'Typefactory' do
|
|
5
5
|
describe 'Core' do
|
6
6
|
it 'Parameters can be updated successfully' do
|
7
7
|
Typefactory.setup do |config|
|
8
|
-
config.
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
8
|
+
config.locale = :ru
|
9
|
+
# config.quote_marks = [
|
10
|
+
# { :left => '«', :right => '»' },
|
11
|
+
# { :left => '„', :right => '“' },
|
12
|
+
# { :left => '‘', :right => '’' }
|
13
|
+
# ]
|
13
14
|
expect(config.quote_marks.class).to eq(Array)
|
14
15
|
expect(config.quote_marks[2][:right]).to eq('’')
|
15
16
|
end
|
@@ -52,6 +53,13 @@ RSpec.describe 'Typefactory' do
|
|
52
53
|
example = 'Едет Санта на оленях'
|
53
54
|
expect(example.prepare).to eq('Едет Санта на оленях')
|
54
55
|
end
|
56
|
+
|
57
|
+
it 'Processing demo paragraph' do
|
58
|
+
example = <<eot
|
59
|
+
<p>«Можем "Демо" однозначно констатировать, что, по данным Системы контроля космического пространства Российской Федерации, в период с 10:00 до 13:00 мск (09:00 до 12:00 укр) 12, 16, 17, и 18 июля украинские спутники „Сич-1“ и „Сич-2“ над указанными территориями не пролетали. В обозначенное на снимках время над зоной катастрофы находился американский спутник оптико-электронной разведки типа „Кихоул“ (KeyHole). Таким образом, источник получения фотоосновы для дальнейшей обработки СБУ не должен вызывать ни у кого сомнений», — замечает Минобороны.</p>
|
60
|
+
eot
|
61
|
+
puts example.prepare
|
62
|
+
end
|
55
63
|
end
|
56
64
|
|
57
65
|
describe 'Glyphs' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: typefactory
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Evgeny Boyko
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-08-
|
12
|
+
date: 2014-08-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -93,6 +93,7 @@ extensions: []
|
|
93
93
|
extra_rdoc_files: []
|
94
94
|
files:
|
95
95
|
- ".gitignore"
|
96
|
+
- ".rspec"
|
96
97
|
- ".yardopts"
|
97
98
|
- Gemfile
|
98
99
|
- LICENSE.txt
|