priehlazx 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/bin/priehlahq CHANGED
@@ -4,7 +4,7 @@
4
4
  require 'optparse'
5
5
  # check if priehlazx is available as not-a-gem
6
6
  begin
7
- $: << '../lib'
7
+ $: << '../lib' << './lib'
8
8
  require 'priehlazx'
9
9
  rescue LoadError
10
10
  begin require 'rubygems'; rescue LoadError; end
@@ -22,6 +22,7 @@ begin
22
22
  цѣль = nil
23
23
  истокъ = nil
24
24
  debug = nil
25
+ list = false
25
26
 
26
27
  ARGV.options do |o|
27
28
  script_name = File.basename($0)
@@ -50,6 +51,8 @@ begin
50
51
  "Acquire RegExp for the code page") { |i| re_cp_w = i }
51
52
  o.on("-r", "--acquire-regexp=val", String,
52
53
  "Acquire RegExp for the code page") { |i| re_cp = i }
54
+ o.on("-l", "--list-codepages", String,
55
+ "List available codepages and exit") { |i| list = true }
53
56
  o.on("-d", "--set-debug-info-level=val", String,
54
57
  "Set debug information log level") { |i| $debug_Priehlazx = i.to_i(16) }
55
58
 
@@ -59,13 +62,45 @@ begin
59
62
 
60
63
  o.parse!
61
64
 
62
- unless re_cp or re_cp_w or istring or ifile
65
+ unless re_cp or re_cp_w or istring or ifile or list
63
66
  $stderr.puts o; exit 1
64
67
  end
65
68
  end
66
69
 
67
70
  pl = Priehlazx.new
68
71
 
72
+ if list
73
+ puts "Available codepages are:"
74
+ pl.кодачицы.keys.sort.each do |име|
75
+ описаніе_н = pl.кодачицы[име].unpack("U*")
76
+ # ѯ = ((описаніе_н.size - 1) / 56) * 56
77
+ описаніе_н_дл = описаніе_н.size
78
+ ѯ = 55
79
+ while ѯ < описаніе_н_дл
80
+ if (ѯ.downto(ѯ - 55) do |ѱ|
81
+ зн = [ описаніе_н[ѱ] ].pack('U*')
82
+ if зн =~ /[\.,!?:;\(\)@#\$%\^&\*"'\|\\\/\[\]]/
83
+ описаніе_н.insert(ѱ, [ 0xA ] + Array.new(24, 0x20))
84
+ описаніе_н_дл += 1
85
+ ѯ += 57
86
+ break nil
87
+ elsif зн == " "
88
+ описаніе_н[ѱ] = [ 0xA ] + Array.new(24, 0x20)
89
+ ѯ += 56 # 80 - 2 - 20 - 2
90
+ break nil
91
+ end
92
+ end)
93
+ # не найден пробел или знаки препинания
94
+ описаніе_н.insert(ѯ, [ 0xA ] + Array.new(24, 0x20))
95
+ описаніе_н_дл += 1
96
+ ѯ += 57
97
+ end
98
+ end
99
+ printf " %-20s #{описаніе_н.flatten.pack("U*")}\n", име
100
+ end
101
+ exit
102
+ end
103
+
69
104
  if re_cp
70
105
  puts pl.пръ(re_cp)
71
106
  elsif re_cp_w
@@ -4,7 +4,7 @@
4
4
  require 'optparse'
5
5
  # check if priehlazx is available as not-a-gem
6
6
  begin
7
- $: << '../lib'
7
+ $: << '../lib' << './lib'
8
8
  require 'priehlazx'
9
9
  rescue LoadError
10
10
  begin require 'rubygems'; rescue LoadError; end
@@ -22,6 +22,7 @@ begin
22
22
  цѣль = nil
23
23
  истокъ = nil
24
24
  debug = nil
25
+ list = false
25
26
 
26
27
  ARGV.options do |o|
27
28
  script_name = File.basename($0)
@@ -50,6 +51,8 @@ begin
50
51
  "Acquire RegExp for the code page") { |i| re_cp_w = i }
51
52
  o.on("-r", "--acquire-regexp=val", String,
52
53
  "Acquire RegExp for the code page") { |i| re_cp = i }
54
+ o.on("-l", "--list-codepages", String,
55
+ "List available codepages and exit") { |i| list = true }
53
56
  o.on("-d", "--set-debug-info-level=val", String,
54
57
  "Set debug information log level") { |i| $debug_Priehlazx = i.to_i(16) }
55
58
 
@@ -59,13 +62,45 @@ begin
59
62
 
60
63
  o.parse!
61
64
 
62
- unless re_cp or re_cp_w or istring or ifile
65
+ unless re_cp or re_cp_w or istring or ifile or list
63
66
  $stderr.puts o; exit 1
64
67
  end
65
68
  end
66
69
 
67
70
  pl = Priehlazx.new
68
71
 
72
+ if list
73
+ puts "Available codepages are:"
74
+ pl.кодачицы.keys.sort.each do |име|
75
+ описаніе_н = pl.кодачицы[име].unpack("U*")
76
+ # ѯ = ((описаніе_н.size - 1) / 56) * 56
77
+ описаніе_н_дл = описаніе_н.size
78
+ ѯ = 55
79
+ while ѯ < описаніе_н_дл
80
+ if (ѯ.downto(ѯ - 55) do |ѱ|
81
+ зн = [ описаніе_н[ѱ] ].pack('U*')
82
+ if зн =~ /[\.,!?:;\(\)@#\$%\^&\*"'\|\\\/\[\]]/
83
+ описаніе_н.insert(ѱ, [ 0xA ] + Array.new(24, 0x20))
84
+ описаніе_н_дл += 1
85
+ ѯ += 57
86
+ break nil
87
+ elsif зн == " "
88
+ описаніе_н[ѱ] = [ 0xA ] + Array.new(24, 0x20)
89
+ ѯ += 56 # 80 - 2 - 20 - 2
90
+ break nil
91
+ end
92
+ end)
93
+ # не найден пробел или знаки препинания
94
+ описаніе_н.insert(ѯ, [ 0xA ] + Array.new(24, 0x20))
95
+ описаніе_н_дл += 1
96
+ ѯ += 57
97
+ end
98
+ end
99
+ printf " %-20s #{описаніе_н.flatten.pack("U*")}\n", име
100
+ end
101
+ exit
102
+ end
103
+
69
104
  if re_cp
70
105
  puts pl.пръ(re_cp)
71
106
  elsif re_cp_w
data/lib/priehlazx.rb CHANGED
@@ -210,6 +210,17 @@ private
210
210
  nil
211
211
  end
212
212
 
213
+ def язы
214
+ case ENV['LANG'] || ENV['LC_CTYPE']
215
+ when /^ru/
216
+ :ру
217
+ when /^en/
218
+ :ан
219
+ else
220
+ :ру
221
+ end
222
+ end
223
+
213
224
  def initialize
214
225
  кс_i = 0
215
226
  сѣтка = {}
@@ -221,6 +232,7 @@ private
221
232
  :сѣтка => сѣтка, :имяна => [],
222
233
  :буквы => буквы, :знаци => знаци,
223
234
  :правило => {}, :правило_б => {},
235
+ :свойства => {},
224
236
  }
225
237
 
226
238
  home = begin
@@ -247,6 +259,10 @@ private
247
259
  dbp14 "#{кс_имя}"
248
260
 
249
261
  @кс[:имяна] << кс_имя
262
+ @кс[:свойства][кс_имя] = {}
263
+ [ 'описаніе' ].each do |свойство|
264
+ @кс[:свойства][кс_имя][свойство.to_sym] = кс[свойство] if кс[свойство]
265
+ end
250
266
 
251
267
  ширь_б_н = []
252
268
  ширь_н = []
@@ -399,6 +415,15 @@ public
399
415
  end
400
416
  end
401
417
 
418
+ def кодачицы
419
+ пл = {}
420
+ @кс[:имяна].each do |име|
421
+ о = @кс[:свойства][име][:описаніе]
422
+ пл[име] = о[язы.to_s].to_s if о
423
+ end
424
+ пл
425
+ end
426
+
402
427
  def кака_кода(писмя)
403
428
  писмя = писмя.to_s
404
429
  вѣса_сл = {}
@@ -1,3 +1,3 @@
1
1
  class Priehlazx
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -210,6 +210,17 @@ private
210
210
  nil
211
211
  end
212
212
 
213
+ def язы
214
+ case ENV['LANG'] || ENV['LC_CTYPE']
215
+ when /^ru/
216
+ :ру
217
+ when /^en/
218
+ :ан
219
+ else
220
+ :ру
221
+ end
222
+ end
223
+
213
224
  def initialize
214
225
  кс_i = 0
215
226
  сѣтка = {}
@@ -221,6 +232,7 @@ private
221
232
  :сѣтка => сѣтка, :имяна => [],
222
233
  :буквы => буквы, :знаци => знаци,
223
234
  :правило => {}, :правило_б => {},
235
+ :свойства => {},
224
236
  }
225
237
 
226
238
  home = begin
@@ -247,6 +259,10 @@ private
247
259
  dbp14 "#{кс_имя}"
248
260
 
249
261
  @кс[:имяна] << кс_имя
262
+ @кс[:свойства][кс_имя] = {}
263
+ [ 'описаніе' ].each do |свойство|
264
+ @кс[:свойства][кс_имя][свойство.to_sym] = кс[свойство] if кс[свойство]
265
+ end
250
266
 
251
267
  ширь_б_н = []
252
268
  ширь_н = []
@@ -399,6 +415,15 @@ public
399
415
  end
400
416
  end
401
417
 
418
+ def кодачицы
419
+ пл = {}
420
+ @кс[:имяна].each do |име|
421
+ о = @кс[:свойства][име][:описаніе]
422
+ пл[име] = о[язы.to_s].to_s if о
423
+ end
424
+ пл
425
+ end
426
+
402
427
  def кака_кода(писмя)
403
428
  писмя = писмя.to_s
404
429
  вѣса_сл = {}
@@ -1,4 +1,7 @@
1
1
  имя: UTF8/HIP
2
+ описаніе:
3
+ ру: Независимое представленіе церковныхъ, древнеславянскихъ и древнегрѣческихъ текстовъ на основѣ 8-битной обобщенной кодировки
4
+ ан: Invariant representation of church, old-slavic, and old-greek texts, based on UTF 8-bit coding
2
5
  знаци:
3
6
  въводъ: ѯA
4
7
  пробѣлъ: ѯ20
@@ -1,4 +1,7 @@
1
1
  имя: UTF8/TR-CYR-S
2
+ описаніе:
3
+ ру: Упрощённое представленіе кириллическихъ знаковъ латиницею на основѣ 8-битной обобщенной кодировки
4
+ ан: Simplified russian translit coding, based on UTF 8-bit coding
2
5
  знаци:
3
6
  въводъ: ѯA
4
7
  пробѣлъ: ѯ20
@@ -1,4 +1,7 @@
1
- имя: UTF8
1
+ имя: UTF8/TR-CYR
2
+ описаніе:
3
+ ру: Представленіе кириллическихъ знаковъ латиницею на основѣ 8-битной обобщенной кодировки
4
+ ан: Russian translit coding, based on UTF 8-bit coding
2
5
  знаци:
3
6
  въводъ: ѯA
4
7
  пробѣлъ: ѯ20
@@ -65,38 +68,38 @@
65
68
  Иже,чажесь: Ѝ,Ѝ
66
69
  Икъ,кратьцо: Ў,Ў
67
70
  Дже: Џ
68
- Азъ:
69
- Буки:
70
- Вѣдѣ:
71
- Глаголь:
72
- Добро:
73
- Есть:
74
- Живете:
75
- Земля:
76
- Иже:
77
- Иже,кратьцо:
78
- Како:
79
- Люди:
80
- Мыслете:
81
- Нашъ:
82
- Онъ:
83
- Покои:
84
- Рьцы:
85
- Слово:
86
- Твердо:
87
- Икъ:
88
- Фертъ:
89
- Хѣръ:
90
- Цы:
91
- Червь:
92
- Ша:
93
- Ща:
94
- Еръ:
95
- Еры:
96
- Ерь:
97
- Это:
98
- Юсъ:
99
- Я:
71
+ Азъ: A
72
+ Буки: B
73
+ Вѣдѣ: V
74
+ Глаголь: Hq,HQ
75
+ Добро: D
76
+ Есть: E
77
+ Живете: Zx,ZX
78
+ Земля: Z
79
+ Иже: I
80
+ Иже,кратьцо: J
81
+ Како: K
82
+ Люди: L
83
+ Мыслете: M
84
+ Нашъ: N
85
+ Онъ: O
86
+ Покои: P
87
+ Рьцы: R
88
+ Слово: S
89
+ Твердо: T
90
+ Икъ: U
91
+ Фертъ: F
92
+ Хѣръ: H
93
+ Цы: C
94
+ Червь: Cx,CX
95
+ Ша: Sx,SX
96
+ Ща: Wx, WX
97
+ Еръ: Au,Au
98
+ Еры: Y
99
+ Ерь: Ei,EI
100
+ Это: Ex,EX
101
+ Юсъ: Ju,Ju
102
+ Я: Q
100
103
  азъ: a
101
104
  буки: b
102
105
  вѣдѣ: v
@@ -123,41 +126,18 @@
123
126
  червь: cx
124
127
  ша: sx
125
128
  шта: wx
126
- еръ:
129
+ еръ: au
127
130
  еры: y
128
- ерь: "'"
129
- это:
130
- юсъ:
131
- я: ja
132
- есть,чажесь:
131
+ ерь: ei
132
+ это: ex
133
+ юсъ: ju
134
+ я: q
135
+ Я: Aq,AQ
133
136
  есть,двокрапка: jo
134
137
  дже: gx
135
- гье:
136
- есть шыръ:
137
- ѕело:
138
- і,крапка:
139
- і,двокрапка:
140
- ꙇі:
141
- лье:
142
- нье:
143
- тше:
144
- кье:
145
- иже,чажесь:
146
- икъ,кратьцо:
147
- дже:
148
138
  Ѣдь: Ie,IE
149
139
  ѣдь: ie
150
- Ꙇесть:
151
- ꙇесть:
152
- Юсъ малъ:
153
- юсъ малъ:
154
- Ꙇюсъ малъ:
155
- ꙇюсъ малъ:
156
- Юсъ вель:
157
- юсъ вель:
158
- Ꙇюсъ вель:
159
- ꙇюсъ вель:
160
- Ксы: X
161
- ксы: x
140
+ Ксы: XX,Xx
141
+ ксы: xx
162
142
  Глаголь твердъ: G
163
143
  глаголь твердъ: g
@@ -1,4 +1,7 @@
1
1
  имя: UCS8
2
+ описаніе:
3
+ ру: Обобщённая 8-битная церковнославянская кодировка
4
+ ан: Unified 8-bit church-slavonic codepage
2
5
  знаци:
3
6
  въводъ: ѯA
4
7
  пробѣлъ: ѯ20
@@ -1,4 +1,7 @@
1
1
  имя: UTF8
2
+ описаніе:
3
+ ру: 8-битная обобщенная кодировка, использующая многобайтныя послѣдовательности
4
+ ан: 8-bit coding that uses multi-byte sequences
2
5
  знаци:
3
6
  въводъ: ѯA
4
7
  пробѣлъ: ѯ20
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: priehlazx
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,12 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-03-30 00:00:00.000000000 +04:00
12
+ date: 2011-03-31 00:00:00.000000000 +04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rdoba
17
- requirement: &69571850 !ruby/object:Gem::Requirement
17
+ requirement: &69572160 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *69571850
25
+ version_requirements: *69572160
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: bundler
28
- requirement: &69571620 !ruby/object:Gem::Requirement
28
+ requirement: &69571930 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 1.0.0
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *69571620
36
+ version_requirements: *69571930
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rspec
39
- requirement: &69571390 !ruby/object:Gem::Requirement
39
+ requirement: &69571700 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
@@ -44,7 +44,7 @@ dependencies:
44
44
  version: 2.0.1
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *69571390
47
+ version_requirements: *69571700
48
48
  description: priehlazx is utility and ruby library to convert a char and text to a
49
49
  specific codepage
50
50
  email: