rdoba 0.9.3 → 0.9.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,266 +1,305 @@
1
- #coding: utf-8
2
- Допустим( /ꙇє примѣнена подпримѣсь \.([^\s]+) бисера рдоба/i ) do |подпримѣсь|
3
- require 'rdoba'
4
- case подпримѣсь
5
- when 'пуздро'
6
- rdoba :mixin => [ :case ]
7
- when 'обратка'
8
- rdoba :mixin => [ :reverse ]
9
- when 'ли_пущь'
10
- rdoba :mixin => [ :empty ]
11
- when 'во_сл'
12
- rdoba :mixin => [ :to_h ]
13
- when 'сравнена'
14
- rdoba :mixin => [ :compare ]
15
- when 'режь_по'
16
- rdoba :mixin => [ :split_by ]
17
- when 'жди_ьже'
18
- rdoba :mixin => [ :wait_if ]
19
- when 'время'
20
- rdoba :mixin => [ :time ]
21
- when 'пробь'
22
- rdoba :mixin => [ :try ]
23
- else
24
- raise ; end ; end
1
+ # frozen_string_literal: true
2
+
3
+ Допустим(/ꙇє примѣнена подпримѣсь \.([^\s]+) бисера рдоба/i) do |подпримѣсь|
4
+ require 'rdoba'
5
+ case подпримѣсь
6
+ when 'пуздро'
7
+ rdoba mixin: [:case]
8
+ when 'обратка'
9
+ rdoba mixin: [:reverse]
10
+ when 'ли_пущь'
11
+ rdoba mixin: [:empty]
12
+ when 'во_сл'
13
+ rdoba mixin: [:to_h]
14
+ when 'сравнена'
15
+ rdoba mixin: [:compare]
16
+ when 'режь_по'
17
+ rdoba mixin: [:split_by]
18
+ when 'жди_ьже'
19
+ rdoba mixin: [:wait_if]
20
+ when 'время'
21
+ rdoba mixin: [:time]
22
+ when 'пробь'
23
+ rdoba mixin: [:try]
24
+ else
25
+ raise
26
+ end
27
+ end
25
28
 
26
29
  Допустим(/^у нас есть набор чисел$/) do
27
- @набор = [ 1, 2, 3, 4, 5, 6, 7, 8 ] ; end
28
-
29
- Если(/къ (кирилическу|латыньску) слову въ (верхнемъ|нижнемъ|смѣшанѣмъ) пуздрѣ ꙇє примѣненъ приꙇомъ :(ниспуздри|воспуздри)/) do | ꙇезикъ, пуздро, приꙇомъ |
30
- стр = if ꙇезикъ =~ /кирилическу/
31
- if пуздро =~ /верхнемъ/
32
- 'КИРИЛИЧЕСКЫ БУКЫ ЗРИЙ СІИ: Ѡ И Ꙍ'
33
- elsif пуздро =~ /нижнемъ/
34
- 'кирилическы букы зрий сіи: ѡ и ꙍ'
35
- else
36
- 'КиРиЛиЧеСкЫ бУкЫ зРиЙ сІи: Ѡ и Ꙍ' ; end
37
- else
38
- if пуздро =~ /верхнемъ/
39
- 'LATIN LETTERS SEE THE FOLLOWING: ÆǞ'
40
- elsif пуздро =~ /нижнемъ/
41
- 'latin letters see the following: æǟ'
42
- else
43
- 'LaTiN lEtTeRs SeE tHe FoLlOwInG: æǞ' ; end ; end
44
-
45
- @плодъ = ( приꙇомъ =~ /ниспуздри/ ) && стр.downcase || стр.upcase ; end
46
-
47
- Если(/^рассечём его на чётные и нечётные$/) do
48
- ( @чётъ, @нечётъ ) = @набор.split_by { |x| x % 2 == 0 } ; end
30
+ @набор = [1, 2, 3, 4, 5, 6, 7, 8]
31
+ end
49
32
 
50
- Если(/^спробуем вызвать метод :qwer пущя$/) do
51
- @плодъ = nil.try( :qwer ) ; end
33
+ Если(
34
+ /къ (кирилическу|латыньску) слову въ (верхнемъ|нижнемъ|смѣшанѣмъ) пуздрѣ ꙇє примѣненъ приꙇомъ :(ниспуздри|воспуздри)/
35
+ ) do |ꙇезикъ, пуздро, приꙇомъ|
36
+ стр =
37
+ if /кирилическу/.match?(ꙇезикъ)
38
+ if /верхнемъ/.match?(пуздро)
39
+ 'КИРИЛИЧЕСКЫ БУКЫ ЗРИЙ СІИ: Ѡ И Ꙍ'
40
+ elsif /нижнемъ/.match?(пуздро)
41
+ 'кирилическы букы зрий сіи: ѡ и ꙍ'
42
+ else
43
+ 'КиРиЛиЧеСкЫ бУкЫ зРиЙ сІи: Ѡ и Ꙍ'
44
+ end
45
+ elsif /верхнемъ/.match?(пуздро)
46
+ 'LATIN LETTERS SEE THE FOLLOWING: ÆǞ'
47
+ elsif /нижнемъ/.match?(пуздро)
48
+ 'latin letters see the following: æǟ'
49
+ else
50
+ 'LaTiN lEtTeRs SeE tHe FoLlOwInG: æǞ'
51
+ end
52
52
 
53
- То(/^(кирилическо|латыньско) слово имаꙇє буквы въ (нижнемъ|верхнемъ) пуздрѣ$/) do | ꙇезикъ, пуздро |
54
- плодъ = if ꙇезикъ =~ /кирилическо/
55
- ( пуздро =~ /верхнемъ/ ) &&
56
- 'КИРИЛИЧЕСКЫ БУКЫ ЗРИЙ СІИ: Ѡ И Ꙍ'||
57
- 'кирилическы букы зрий сіи: ѡ и ꙍ'
58
- else
59
- ( пуздро =~ /верхнемъ/ ) &&
60
- 'LATIN LETTERS SEE THE FOLLOWING: ÆǞ' ||
61
- 'latin letters see the following: æǟ' ; end
53
+ @плодъ = (приꙇомъ =~ /ниспуздри/) && стр.downcase || стр.upcase
54
+ end
62
55
 
63
- if @плодъ != плодъ
64
- raise "Плодна Страза со значенꙇемъ '#{@плодъ}' должна имѣти значенꙇе " \
65
- "'#{плодъ}'" ; end ; end
56
+ Если(/^рассечём его на чётные и нечётные$/) do
57
+ @чётъ, @нечётъ = @набор.split_by { |x| x.even? }
58
+ end
66
59
 
60
+ Если(/^спробуем вызвать метод :qwer пущя$/) do
61
+ @плодъ = nil.try(:qwer)
62
+ end
67
63
 
64
+ То(/^(кирилическо|латыньско) слово имаꙇє буквы въ (нижнемъ|верхнемъ) пуздрѣ$/) do |ꙇезикъ, пуздро|
65
+ плодъ =
66
+ if /кирилическо/.match?(ꙇезикъ)
67
+ (пуздро =~ /верхнемъ/) && 'КИРИЛИЧЕСКЫ БУКЫ ЗРИЙ СІИ: Ѡ И Ꙍ' || 'кирилическы букы зрий сіи: ѡ и ꙍ'
68
+ else
69
+ (пуздро =~ /верхнемъ/) && 'LATIN LETTERS SEE THE FOLLOWING: ÆǞ' || 'latin letters see the following: æǟ'
70
+ end
68
71
 
72
+ if @плодъ != плодъ
73
+ raise "Плодна Страза со значенꙇемъ '#{@плодъ}' должна имѣти значенꙇе " \
74
+ "'#{плодъ}'"
75
+ end
76
+ end
69
77
 
70
- То(/^Стразовъ приꙇомъ :обратка( сѫ кракомъ| сѫ доведомъ)? повратє обратну Стразу$/) do | доведъ |
71
- требе = case доведъ
72
- when nil
73
- "акортс"
74
- when /кракомъ/u
78
+ То(/^Стразовъ приꙇомъ :обратка( сѫ кракомъ| сѫ доведомъ)? повратє обратну Стразу$/) do |доведъ|
79
+ требе =
80
+ case доведъ
81
+ when nil
82
+ 'акортс'
83
+ when /кракомъ/u
75
84
  "\xB0\xD0\xBA\xD0\xBE\xD0\x80\xD1\x82\xD1\x81\xD1"
76
- when /доведомъ/u
77
- "карост"
78
- end
85
+ when /доведомъ/u
86
+ 'карост'
87
+ end
79
88
 
80
- исходъ = case доведъ
81
- when nil
89
+ исходъ =
90
+ case доведъ
91
+ when nil
82
92
  'строка'.reverse
83
- when /кракомъ/u
93
+ when /кракомъ/u
84
94
  'строка'.reverse :byte_by_byte
85
- when /доведомъ/u
95
+ when /доведомъ/u
86
96
  'строка'.reverse 2
87
- end
97
+ end
88
98
 
89
- if исходъ != требе
90
- raise "Ложнъ исходъ '#{исходъ}' ꙇє повратнъ отъ приꙇома :обратка#{доведъ}, требуꙇє '#{требе}'" ; end
99
+ if исходъ != требе
100
+ raise "Ложнъ исходъ '#{исходъ}' ꙇє повратнъ отъ приꙇома :обратка#{доведъ}, требуꙇє '#{требе}'"
101
+ end
91
102
  end
92
103
 
93
- То(/^приꙇомъ :ли_пущь рода (пущь|лжа|нове вещи) повратє (вѣрнъ|лжъ)$/) do | вещь, поврать |
94
- поврать = ( поврать == 'вѣрнъ' ) && true || false
95
- исходъ = case вещь
96
- when 'пущь'
104
+ То(/^приꙇомъ :ли_пущь рода (пущь|лжа|нове вещи) повратє (вѣрнъ|лжъ)$/) do |вещь, поврать|
105
+ поврать = (поврать == 'вѣрнъ') && true || false
106
+ исходъ =
107
+ case вещь
108
+ when 'пущь'
97
109
  nil.empty? == поврать
98
- when 'лжа'
110
+ when 'лжа'
99
111
  false.empty? == поврать
100
- when 'нове вещи'
112
+ when 'нове вещи'
101
113
  Object.new.empty? == поврать
102
- end
103
- if !исходъ
104
- raise "Ложнъ исходъ ꙇє повратнъ отъ приꙇома :ли_пущь рода #{вещь}" ; end
114
+ end
115
+ unless исходъ
116
+ raise "Ложнъ исходъ ꙇє повратнъ отъ приꙇома :ли_пущь рода #{вещь}"
117
+ end
105
118
  end
106
119
 
107
-
108
- Если(/^(ровнъ|двуглубнъ|триглубнъ) наборъ( сѫ одинакыми частьми)? ꙇє пречиненъ во словникъ( приꙇомомъ :во_сл сѫ клѵчемъ :кромѣ_двоꙇниковъ)?$/) do | видъ, одинакъ, клѵчь |
109
- @вещь =
110
- case видъ
111
- when 'ровнъ'
112
- [ 'aa', 0, 'bb', 1 ].to_h
113
- when 'двуглубнъ'
120
+ Если(
121
+ /^(ровнъ|двуглубнъ|триглубнъ) наборъ( сѫ одинакыми частьми)? ꙇє пречиненъ во словникъ( приꙇомомъ :во_сл сѫ клѵчемъ :кромѣ_двоꙇниковъ)?$/
122
+ ) do |видъ, одинакъ, клѵчь|
123
+ @вещь =
124
+ case видъ
125
+ when 'ровнъ'
126
+ ['aa', 0, 'bb', 1].to_h
127
+ when 'двуглубнъ'
114
128
  if одинакъ
115
- if клѵчь
116
- [ [ 'aa', 0, ], [ 'aa', 0 ] ].to_h( :save_unique => true )
117
- else
118
- [ [ 'aa', 0, ], [ 'aa', 0 ] ].to_h ; end
129
+ if клѵчь
130
+ [['aa', 0], ['aa', 0]].to_h(save_unique: true)
131
+ else
132
+ [['aa', 0], ['aa', 0]].to_h
133
+ end
119
134
  else
120
- [ [ 'aa', 0, ], [ 'bb', 1 ] ].to_h ; end
121
- when 'триглубнъ'
122
- [ [ 'aa', 0, 1, ], [ 'bb', [ 1, 0 ] ] ].to_h
123
- end
135
+ [['aa', 0], ['bb', 1]].to_h
136
+ end
137
+ when 'триглубнъ'
138
+ [['aa', 0, 1], ['bb', [1, 0]]].to_h
139
+ end
124
140
  end
125
141
 
126
- То(/^тъꙇи имѣꙇє ровнъ словникъ сѫ (пущими |ровнѣми |двуглубнѣми )?значѣми$/) do | видъ |
127
- @схъ =
128
- if видъ =~ /пущими/u
129
- { "aa" => nil, 0 => nil, "bb" => nil, 1 => nil }
130
- elsif видъ =~ /ровнѣми/u
131
- { "aa" => 0, "bb" => 1 }
132
- else
133
- { "aa" => [ 0, 1 ], "bb" => [ 1, 0 ] } ; end
134
-
135
- if @вещь != @схъ
136
- raise "Наборъ '#{@вещь}' требуꙇє быти '#{@схъ}'" ; end
142
+ То(/^тъꙇи имѣꙇє ровнъ словникъ сѫ (пущими |ровнѣми |двуглубнѣми )?значѣми$/) do |видъ|
143
+ @схъ =
144
+ if /пущими/u.match?(видъ)
145
+ { 'aa' => nil, 0 => nil, 'bb' => nil, 1 => nil }
146
+ elsif /ровнѣми/u.match?(видъ)
147
+ { 'aa' => 0, 'bb' => 1 }
148
+ else
149
+ { 'aa' => [0, 1], 'bb' => [1, 0] }
150
+ end
151
+
152
+ if @вещь != @схъ
153
+ raise "Наборъ '#{@вещь}' требуꙇє быти '#{@схъ}'"
154
+ end
137
155
  end
138
156
 
139
- То(/^тъꙇи имѣꙇє ровнъ словникъ сѫ (однимъ|двами) двуглубн(?:ѣмъ|ѣмы) знач(?:ѣмъ|ѣмы)$/) do | видъ |
140
- @схъ =
141
- if видъ =~ /двами/
142
- { "aa" => [ 0, 0 ] }
143
- else
144
- { "aa" => [ 0 ] } ; end
157
+ То(/^тъꙇи имѣꙇє ровнъ словникъ сѫ (однимъ|двами) двуглубн(?:ѣмъ|ѣмы) знач(?:ѣмъ|ѣмы)$/) do |видъ|
158
+ @схъ =
159
+ if /двами/.match?(видъ)
160
+ { 'aa' => [0, 0] }
161
+ else
162
+ { 'aa' => [0] }
163
+ end
145
164
 
146
- if @вещь != @схъ
147
- raise "Наборъ '#{@вещь}' требуꙇє быти '#{@схъ}'" ; end
165
+ if @вещь != @схъ
166
+ raise "Наборъ '#{@вещь}' требуꙇє быти '#{@схъ}'"
167
+ end
148
168
  end
149
169
 
150
170
  Если(/^имѣмы двѣ Стразы$/) do
151
- @стры = [ 'а҆́гнецъ', 'а҆гкѵ́ра' ] ; end
171
+ @стры = %w[а҆́гнецъ а҆гкѵ́ра]
172
+ end
152
173
 
153
- То(/^приꙇомъ :сравнена двухъ Стразъ( сѫ презоромъ надъстрочниковъ( ꙇакъ словникъ)?)? повратє (безъ )?одна$/) do | доведъ, подобье, знакъ |
154
- поврать = ( знакъ =~ /безъ/u ) && -1 || 1
174
+ То(
175
+ /^приꙇомъ :сравнена двухъ Стразъ( сѫ презоромъ надъстрочниковъ( ꙇакъ словникъ)?)? повратє (безъ )?одна$/
176
+ ) do |доведъ, подобье, знакъ|
177
+ поврать = (знакъ =~ /безъ/u) && -1 || 1
155
178
 
156
- исходъ =
157
- if доведъ
179
+ исходъ =
180
+ if доведъ
158
181
  if подобье
159
- @стры[ 0 ].compare_to( @стры[ 1 ], :ignore_diacritics => true) == поврать
182
+ @стры[0].compare_to(@стры[1], ignore_diacritics: true) == поврать
160
183
  else
161
- @стры[ 0 ].compare_to( @стры[ 1 ], :ignore_diacritics) == поврать ; end
162
- else
163
- @стры[ 0 ].compare_to( @стры[ 1 ] ) == поврать ; end
184
+ @стры[0].compare_to(@стры[1], :ignore_diacritics) == поврать
185
+ end
186
+ else
187
+ @стры[0].compare_to(@стры[1]) == поврать
188
+ end
164
189
 
165
- if !исходъ
166
- raise "Приꙇомъ :сравнена двухъ Стразъ#{доведъ}#{подобье} требуꙇє повратъти '#{поврать}'" ; end
190
+ unless исходъ
191
+ raise "Приꙇомъ :сравнена двухъ Стразъ#{доведъ}#{подобье} требуꙇє повратъти '#{поврать}'"
192
+ end
167
193
  end
168
194
 
169
195
  То(/^получим два набора чётных и нечётных чисел$/) do
170
- expect( @чётъ ).to be_eql( [ 2, 4, 6, 8 ] )
171
- expect( @нечётъ ).to be_eql( [ 1, 3, 5, 7 ] ) ; end
196
+ expect(@чётъ).to be_eql([2, 4, 6, 8])
197
+ expect(@нечётъ).to be_eql([1, 3, 5, 7])
198
+ end
172
199
 
173
200
  То(/^той вернёт пущь$/) do
174
- expect( @плодъ ).to be_nil ; end
201
+ expect(@плодъ).to be_nil
202
+ end
175
203
 
176
204
  Если(/^спробуем подождать мало, чтобы условие не выполнилось$/) do
177
- @плодъ = wait_if( 1 ) { false } ; end
205
+ @плодъ = wait_if(1) { false }
206
+ end
178
207
 
179
208
  Если(/^спробуем подождать мало, чтобы условие выполнилось$/) do
180
- @плодъ = wait_if( 1 ) { true } ; end
209
+ @плодъ = wait_if(1) { true }
210
+ end
181
211
 
182
212
  Если(/^спробуем подождать долго, чтобы условие выполнилось$/) do
183
- @плодъ =
184
- begin
185
- Timeout.timeout( 2 ) do
186
- wait_if( 10 ) { true } ; end
187
- rescue Timeout::Error
188
- nil; end ; end
213
+ @плодъ =
214
+ begin
215
+ Timeout.timeout(2) do
216
+ wait_if(10) { true }
217
+ end
218
+ rescue Timeout::Error
219
+ nil
220
+ end
221
+ end
189
222
 
190
223
  То(/^недождёмся$/) do
191
- expect( @плодъ ).to be_nil ; end
224
+ expect(@плодъ).to be_nil
225
+ end
192
226
 
193
227
  То(/^той вернёт ложно$/) do
194
- expect( @плодъ ).to be_falsey ; end
228
+ expect(@плодъ).to be_falsey
229
+ end
195
230
 
196
231
  То(/^той вернёт исте$/) do
197
- expect( @плодъ ).to be_truthy ; end
198
-
232
+ expect(@плодъ).to be_truthy
233
+ end
199
234
 
200
235
  Если(/^спробуем вызвать метод :mtime кута временного$/) do
201
- @кут = tmpfile
202
- @время = File.mtime( @кут ) ; end
236
+ @кут = tmpfile
237
+ @время = File.mtime(@кут)
238
+ end
203
239
 
204
240
  Если(/^спробуем вызвать метод :atime кута временного$/) do
205
- @кут = tmpfile
206
- @время = File.atime( @кут ) ; end
241
+ @кут = tmpfile
242
+ @время = File.atime(@кут)
243
+ end
207
244
 
208
245
  Если(/^спробуем вызвать метод :ctime кута временного$/) do
209
- @кут = tmpfile
210
- @время = File.ctime( @кут ) ; end
246
+ @кут = tmpfile
247
+ @время = File.ctime(@кут)
248
+ end
211
249
 
212
250
  То(/^той вернёт верно время/) do
213
- время = @время.strftime( "%Y-%m-%d %H:%M:%S.%N %z" )
214
- expect( время ).to be_eql( `stat -c %y #{@кут}`.strip ) ; end
251
+ время = @время.strftime('%Y-%m-%d %H:%M:%S.%N %z')
252
+ expect(время).to be_eql(`stat -c %y #{@кут}`.strip)
253
+ end
215
254
 
216
255
  Если(/^ꙇє примѣнена подпримѣсь невѣрна бисера рдоба$/) do
217
- @проц = Proc.new { rdoba :mixin => [ :false ] } ; end
256
+ @проц = proc { rdoba mixin: [:false] }
257
+ end
218
258
 
219
259
  То(/^исключение невѣрнѣ опции вызвано будетъ$/) do
220
- expect{ @проц.call }.to raise_error( Rdoba::Mixin::InvalidOption ) ; end
221
-
222
-
223
- =begin
224
- #!/usr/bin/ruby -KU
225
-
226
- if $0 == __FILE__
227
- p s.to_res
228
- [1,2,3,4,5].each_comby do |c|
229
- p c
230
- end
231
-
232
- len = 4
233
- value = 100
234
- p sprintf("%.*X", len, value )
235
-
236
- s = ' 1221 eeee 4564 wwww ' + 258.to_p
237
- ppp = s.scanf(' %d %s %d %s %.2+c')
238
- p ppp
239
- p 258.to_p.to_i(String::BE)
240
-
241
- null = nil
242
- p null.class, null
243
- null <<= 'qweqweqweqwe'
244
- p null.class, null
245
- null << 'qweqweqweqwe'
246
- p null.class, null
247
- i = 12
248
- p sprintf("0x%X", i)
249
- p sprintf("%.3X", i)
250
-
251
- p '----------'
252
-
253
- str = <<STR
254
- <font size="4" face="Irmologion Ucs">и3зhде
255
- повелёніе t кeсарz ѓvгуста, написaти всю2
256
- вселeнную</font>
257
- STR
258
-
259
-
260
- str = '/font><font size="4">III</font><i> </i>греч.<font size="4"><i></i> </font><font size="4" face="Irmologion Ucs">Мёсzца ѓvгуста въ Gi-й дeнь. Слyжба с™и1телю и3 чудотв0рцу тЂхwну, є3пcкпу вор0нежскому.</font>13 августа, Тихона Воронежского, заголовок службы m_aug\13p.hip'
261
- re = /<font size="4" face="Irmologion Ucs">([ -"'-\?A-BD-HJ-\[\]`-hj-\}¤¦-§©«-®±µ-·»Ё-ЌЎ-яё-ќў-џҐ-ґ–-—‘-‚“-„†-•…‰‹-›€№™∙]+?)<\/font>/
262
-
263
- p(str.match re)
260
+ expect { @проц.call }.to raise_error(Rdoba::Mixin::InvalidOption)
264
261
  end
265
262
 
266
- =end
263
+ # #!/usr/bin/ruby -KU
264
+ #
265
+ # if $0 == __FILE__
266
+ # p s.to_res
267
+ # [1,2,3,4,5].each_comby do |c|
268
+ # p c
269
+ # end
270
+ #
271
+ # len = 4
272
+ # value = 100
273
+ # p sprintf("%.*X", len, value )
274
+ #
275
+ # s = ' 1221 eeee 4564 wwww ' + 258.to_p
276
+ # ppp = s.scanf(' %d %s %d %s %.2+c')
277
+ # p ppp
278
+ # p 258.to_p.to_i(String::BE)
279
+ #
280
+ # null = nil
281
+ # p null.class, null
282
+ # null <<= 'qweqweqweqwe'
283
+ # p null.class, null
284
+ # null << 'qweqweqweqwe'
285
+ # p null.class, null
286
+ # i = 12
287
+ # p sprintf("0x%X", i)
288
+ # p sprintf("%.3X", i)
289
+ #
290
+ # p '----------'
291
+ #
292
+ # str = <<STR
293
+ # <font size="4" face="Irmologion Ucs">и3зhде
294
+ # повелёніе t кeсарz ѓvгуста, написaти всю2
295
+ # вселeнную</font>
296
+ # STR
297
+ #
298
+
299
+ #
300
+ # str = '/font><font size="4">III</font><i> </i>греч.<font size="4"><i></i> </font><font size="4" face="Irmologion Ucs">Мёсzца ѓvгуста въ Gi-й дeнь. Слyжба с™и1телю и3 чудотв0рцу тЂхwну, є3пcкпу вор0нежскому.</font>13 августа, Тихона Воронежского, заголовок службы m_aug\13p.hip'
301
+ # re = /<font size="4" face="Irmologion Ucs">([ -"'-\?A-BD-HJ-\[\]`-hj-\}¤¦-§©«-®±µ-·»Ё-ЌЎ-яё-ќў-џҐ-ґ–-—‘-‚“-„†-•…‰‹-›€№™∙]+?)<\/font>/
302
+ #
303
+ # p(str.match re)
304
+ # end
305
+ #