code-pages 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -1
  3. data/lib/code-pages/code_page.rb +3 -2
  4. data/lib/code-pages/importer.rb +2 -2
  5. data/lib/code-pages/version.rb +1 -1
  6. data/lib/code_pages.rb +33 -7
  7. data/resources/apple_arabic.yml +224 -0
  8. data/resources/apple_celtic.yml +224 -0
  9. data/resources/apple_central_europe.yml +224 -0
  10. data/resources/apple_corpchar.yml +1 -0
  11. data/resources/apple_croatian.yml +224 -0
  12. data/resources/apple_cyrillic.yml +224 -0
  13. data/resources/apple_devanagari.yml +193 -0
  14. data/resources/apple_dingbats.yml +203 -0
  15. data/resources/apple_farsi.yml +224 -0
  16. data/resources/apple_gaelic.yml +224 -0
  17. data/resources/apple_greek.yml +224 -0
  18. data/resources/apple_gujarati.yml +184 -0
  19. data/resources/apple_gurmukhi.yml +178 -0
  20. data/resources/apple_hebrew.yml +224 -0
  21. data/resources/apple_iceland.yml +224 -0
  22. data/resources/apple_inuit.yml +224 -0
  23. data/resources/apple_japanese.yml +164 -0
  24. data/resources/apple_keyboard.yml +73 -0
  25. data/resources/apple_korean.yml +129 -0
  26. data/resources/apple_roman.yml +224 -0
  27. data/resources/apple_romanian.yml +224 -0
  28. data/resources/apple_simplified_chinese.yml +132 -0
  29. data/resources/apple_symbol.yml +191 -0
  30. data/resources/apple_thai.yml +218 -0
  31. data/resources/apple_traditional_chinese.yml +132 -0
  32. data/resources/apple_turkish.yml +224 -0
  33. data/resources/apple_ukraine.yml +1 -0
  34. data/resources/{47451.yml → atarist.yml} +0 -0
  35. data/resources/big5.yml +13711 -0
  36. data/resources/code_page_manifest.yml +119 -0
  37. data/resources/{37.yml → cp037.yml} +0 -0
  38. data/resources/{1026.yml → cp1026.yml} +0 -0
  39. data/resources/{1250.yml → cp1250.yml} +0 -0
  40. data/resources/{1251.yml → cp1251.yml} +0 -0
  41. data/resources/{1252.yml → cp1252.yml} +0 -0
  42. data/resources/{1253.yml → cp1253.yml} +0 -0
  43. data/resources/{1254.yml → cp1254.yml} +0 -0
  44. data/resources/{1255.yml → cp1255.yml} +0 -0
  45. data/resources/{1256.yml → cp1256.yml} +0 -0
  46. data/resources/{1257.yml → cp1257.yml} +0 -0
  47. data/resources/{1258.yml → cp1258.yml} +0 -0
  48. data/resources/{437.yml → cp437.yml} +0 -0
  49. data/resources/{500.yml → cp500.yml} +0 -0
  50. data/resources/{737.yml → cp737.yml} +0 -0
  51. data/resources/{775.yml → cp775.yml} +0 -0
  52. data/resources/{850.yml → cp850.yml} +0 -0
  53. data/resources/{852.yml → cp852.yml} +0 -0
  54. data/resources/{855.yml → cp855.yml} +0 -0
  55. data/resources/{857.yml → cp857.yml} +0 -0
  56. data/resources/{860.yml → cp860.yml} +0 -0
  57. data/resources/{861.yml → cp861.yml} +0 -0
  58. data/resources/{862.yml → cp862.yml} +0 -0
  59. data/resources/{863.yml → cp863.yml} +0 -0
  60. data/resources/{864.yml → cp864.yml} +0 -0
  61. data/resources/{865.yml → cp865.yml} +0 -0
  62. data/resources/{866.yml → cp866.yml} +0 -0
  63. data/resources/{869.yml → cp869.yml} +0 -0
  64. data/resources/{874.yml → cp874.yml} +0 -0
  65. data/resources/{875.yml → cp875.yml} +0 -0
  66. data/resources/{932.yml → cp932.yml} +0 -0
  67. data/resources/{936.yml → cp936.yml} +0 -0
  68. data/resources/{949.yml → cp949.yml} +0 -0
  69. data/resources/{950.yml → cp950.yml} +0 -0
  70. data/resources/{28591.yml → iso8859_1.yml} +0 -0
  71. data/resources/{28600.yml → iso8859_10.yml} +0 -0
  72. data/resources/{28601.yml → iso8859_11.yml} +0 -0
  73. data/resources/{28603.yml → iso8859_13.yml} +0 -0
  74. data/resources/{28604.yml → iso8859_14.yml} +0 -0
  75. data/resources/{28605.yml → iso8859_15.yml} +0 -0
  76. data/resources/{28606.yml → iso8859_16.yml} +0 -0
  77. data/resources/{28592.yml → iso8859_2.yml} +0 -0
  78. data/resources/{28593.yml → iso8859_3.yml} +0 -0
  79. data/resources/{28594.yml → iso8859_4.yml} +0 -0
  80. data/resources/{28595.yml → iso8859_5.yml} +0 -0
  81. data/resources/{28596.yml → iso8859_6.yml} +0 -0
  82. data/resources/{28597.yml → iso8859_7.yml} +0 -0
  83. data/resources/{28598.yml → iso8859_8.yml} +0 -0
  84. data/resources/{28599.yml → iso8859_9.yml} +0 -0
  85. data/resources/johab.yml +1 -0
  86. data/resources/{10007.yml → mac_cyrillic.yml} +0 -0
  87. data/resources/{10006.yml → mac_greek.yml} +0 -0
  88. data/resources/{10079.yml → mac_iceland.yml} +0 -0
  89. data/resources/{10029.yml → mac_latin2.yml} +0 -0
  90. data/resources/{10000.yml → mac_roman.yml} +0 -0
  91. data/resources/{10081.yml → mac_turkish.yml} +0 -0
  92. data/resources/shift_jis.yml +7038 -0
  93. data/resources/wansung.yml +8225 -0
  94. data/spec/code_pages_spec.rb +17 -3
  95. metadata +88 -57
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f0ca7a2a70aacc32f367e85f350b57a0316e3a9a
4
- data.tar.gz: 8c545eecf87b693e25d4c9b10e4717e824f48144
3
+ metadata.gz: 926110bcbfe73914e17f83dd8ce49660a96057f9
4
+ data.tar.gz: 41fb39aae24b4d017fd5340128654ff08d379450
5
5
  SHA512:
6
- metadata.gz: e6e1c93238a27bbb973517994b16d7641dca938f1fb1f6276dcb65b3c837ede72d5cc29dab6ba33fbff1122ed34b3a37f4f9d489eefbab550c64664ab70e7269
7
- data.tar.gz: 86808b405f77afe5d6ac369922a7a6db4723b43fe1f0885759f83193915acf500148c71a43eb7ec086d4ef1fb19138b168a74ff9b369251ee9349f7f2a80453d
6
+ metadata.gz: b4a03cd2bf1077a29c9f291c0b838cff81a9da8193d8432b20477b22c1abf7bdfe5bad60fdb803c1f196439af77308e50e7bb849908503be86b136735bce51db
7
+ data.tar.gz: 369f7e8e066c9b35ea4e13a8ebe2575b5a2e49fe728750638f82cd3746d58fbacfd1f3973ad4d12b06bf5ff765ae125d7477fc80bd2995482d7667a54509a4c7
data/README.md CHANGED
@@ -23,7 +23,13 @@ Individual code pages can be accessed directly via the `CodePages` constant:
23
23
  CodePages[37] # => #<CodePages::CodePage:0x00007fcd1c374dd0 @id=37 ... >
24
24
  ```
25
25
 
26
- Once you have a code page, a mapping of code page characters to Unicode characters can be obtained via the `#unicode_mapping` method:
26
+ Get a list of all code pages via the `#all` method:
27
+
28
+ ```ruby
29
+ CodePages.all # => { 37 => #<CodePages::CodePage:0x00007fb23d1c92c8 @id=37 ... >, ... }
30
+ ```
31
+
32
+ Once you have a code page, a mapping of code page characters to Unicode code points can be obtained via the `#unicode_mapping` method:
27
33
 
28
34
  ```ruby
29
35
  CodePages[37].unicode_mapping # => { 0=>0, 1=>1, 2=>2, 3=>3, 4=>156, 5=>9, ... }
@@ -2,10 +2,11 @@ require 'yaml'
2
2
 
3
3
  module CodePages
4
4
  class CodePage
5
- attr_reader :id, :resource_file
5
+ attr_reader :id, :name, :resource_file
6
6
 
7
- def initialize(id, resource_file)
7
+ def initialize(id, name, resource_file)
8
8
  @id = id
9
+ @name = name
9
10
  @resource_file = resource_file
10
11
  end
11
12
 
@@ -16,7 +16,7 @@ module CodePages
16
16
 
17
17
  def import
18
18
  manifest.each do |props|
19
- STDOUT.write("Importing #{props['code_page']}... ")
19
+ STDOUT.write("Importing #{props['name']}... ")
20
20
  import_code_page(props)
21
21
  puts 'done.'
22
22
  end
@@ -25,7 +25,7 @@ module CodePages
25
25
  private
26
26
 
27
27
  def import_code_page(props)
28
- output_file = File.join(output_path, "#{props['code_page']}.yml")
28
+ output_file = File.join(output_path, "#{props['name']}.yml")
29
29
  code_page = get_code_page(props['url'])
30
30
  File.write(output_file, YAML.dump(code_page))
31
31
  end
@@ -1,3 +1,3 @@
1
1
  module CodePages
2
- VERSION = '1.1.0'
2
+ VERSION = '1.2.0'
3
3
  end
@@ -5,22 +5,28 @@ module CodePages
5
5
  autoload :Importer, 'code-pages/importer'
6
6
 
7
7
  class << self
8
- def [](index)
9
- all[index]
8
+ def [](name_or_id)
9
+ from_name(name_or_id) || from_id(name_or_id)
10
10
  end
11
11
 
12
12
  def supported_ids
13
- @supported_ids ||= all.keys
13
+ @supported_ids ||= all.map { |_, cp| cp.id }.compact
14
14
  end
15
15
 
16
- def supports?(id)
17
- supported_ids.include?(id)
16
+ def supported_names
17
+ @supported_names ||= all.keys
18
+ end
19
+
20
+ def supports?(id_or_name)
21
+ supported_ids.include?(id_or_name) || supported_names.include?(id_or_name)
18
22
  end
19
23
 
20
24
  def all
21
25
  @all ||= manifest.each_with_object({}) do |props, ret|
22
- ret[props['code_page']] = CodePage.new(
23
- props['code_page'], File.join(resources_dir, "#{props['code_page']}.yml")
26
+ ret[props['name']] = CodePage.new(
27
+ props['code_page'],
28
+ props['name'],
29
+ File.join(resources_dir, "#{props['name']}.yml")
24
30
  )
25
31
  end
26
32
  end
@@ -34,5 +40,25 @@ module CodePages
34
40
  def resources_dir
35
41
  @resources_dir ||= File.expand_path('../../resources', __FILE__)
36
42
  end
43
+
44
+ private
45
+
46
+ def from_name(name)
47
+ all[name]
48
+ end
49
+
50
+ def from_id(id)
51
+ id_map[id] ||= all.each do |_, cp|
52
+ if cp.id # don't allow matching on nil
53
+ return cp if cp.id == id
54
+ end
55
+ end
56
+
57
+ nil
58
+ end
59
+
60
+ def id_map
61
+ @id_map ||= {}
62
+ end
37
63
  end
38
64
  end
@@ -0,0 +1,224 @@
1
+ ---
2
+ 32: 0
3
+ 33: 0
4
+ 34: 0
5
+ 35: 0
6
+ 36: 0
7
+ 37: 0
8
+ 38: 0
9
+ 39: 0
10
+ 40: 0
11
+ 41: 0
12
+ 42: 0
13
+ 43: 0
14
+ 44: 0
15
+ 45: 0
16
+ 46: 0
17
+ 47: 0
18
+ 48: 48
19
+ 49: 49
20
+ 50: 50
21
+ 51: 51
22
+ 52: 52
23
+ 53: 53
24
+ 54: 54
25
+ 55: 55
26
+ 56: 56
27
+ 57: 57
28
+ 58: 0
29
+ 59: 0
30
+ 60: 0
31
+ 61: 0
32
+ 62: 0
33
+ 63: 0
34
+ 64: 64
35
+ 65: 65
36
+ 66: 66
37
+ 67: 67
38
+ 68: 68
39
+ 69: 69
40
+ 70: 70
41
+ 71: 71
42
+ 72: 72
43
+ 73: 73
44
+ 74: 74
45
+ 75: 75
46
+ 76: 76
47
+ 77: 77
48
+ 78: 78
49
+ 79: 79
50
+ 80: 80
51
+ 81: 81
52
+ 82: 82
53
+ 83: 83
54
+ 84: 84
55
+ 85: 85
56
+ 86: 86
57
+ 87: 87
58
+ 88: 88
59
+ 89: 89
60
+ 90: 90
61
+ 91: 0
62
+ 92: 0
63
+ 93: 0
64
+ 94: 0
65
+ 95: 0
66
+ 96: 96
67
+ 97: 97
68
+ 98: 98
69
+ 99: 99
70
+ 100: 100
71
+ 101: 101
72
+ 102: 102
73
+ 103: 103
74
+ 104: 104
75
+ 105: 105
76
+ 106: 106
77
+ 107: 107
78
+ 108: 108
79
+ 109: 109
80
+ 110: 110
81
+ 111: 111
82
+ 112: 112
83
+ 113: 113
84
+ 114: 114
85
+ 115: 115
86
+ 116: 116
87
+ 117: 117
88
+ 118: 118
89
+ 119: 119
90
+ 120: 120
91
+ 121: 121
92
+ 122: 122
93
+ 123: 0
94
+ 124: 0
95
+ 125: 0
96
+ 126: 126
97
+ 128: 196
98
+ 129: 0
99
+ 130: 199
100
+ 131: 201
101
+ 132: 209
102
+ 133: 214
103
+ 134: 220
104
+ 135: 225
105
+ 136: 224
106
+ 137: 226
107
+ 138: 228
108
+ 139: 1722
109
+ 140: 0
110
+ 141: 231
111
+ 142: 233
112
+ 143: 232
113
+ 144: 234
114
+ 145: 235
115
+ 146: 237
116
+ 147: 0
117
+ 148: 238
118
+ 149: 239
119
+ 150: 241
120
+ 151: 243
121
+ 152: 0
122
+ 153: 244
123
+ 154: 246
124
+ 155: 0
125
+ 156: 250
126
+ 157: 249
127
+ 158: 251
128
+ 159: 252
129
+ 160: 0
130
+ 161: 0
131
+ 162: 0
132
+ 163: 0
133
+ 164: 0
134
+ 165: 1642
135
+ 166: 0
136
+ 167: 0
137
+ 168: 0
138
+ 169: 0
139
+ 170: 0
140
+ 171: 0
141
+ 172: 1548
142
+ 173: 0
143
+ 174: 0
144
+ 175: 0
145
+ 176: 0
146
+ 177: 0
147
+ 178: 0
148
+ 179: 0
149
+ 180: 0
150
+ 181: 0
151
+ 182: 0
152
+ 183: 0
153
+ 184: 0
154
+ 185: 0
155
+ 186: 0
156
+ 187: 1563
157
+ 188: 0
158
+ 189: 0
159
+ 190: 0
160
+ 191: 1567
161
+ 192: 0
162
+ 193: 1569
163
+ 194: 1570
164
+ 195: 1571
165
+ 196: 1572
166
+ 197: 1573
167
+ 198: 1574
168
+ 199: 1575
169
+ 200: 1576
170
+ 201: 1577
171
+ 202: 1578
172
+ 203: 1579
173
+ 204: 1580
174
+ 205: 1581
175
+ 206: 1582
176
+ 207: 1583
177
+ 208: 1584
178
+ 209: 1585
179
+ 210: 1586
180
+ 211: 1587
181
+ 212: 1588
182
+ 213: 1589
183
+ 214: 1590
184
+ 215: 1591
185
+ 216: 1592
186
+ 217: 1593
187
+ 218: 1594
188
+ 219: 0
189
+ 220: 0
190
+ 221: 0
191
+ 222: 0
192
+ 223: 0
193
+ 224: 1600
194
+ 225: 1601
195
+ 226: 1602
196
+ 227: 1603
197
+ 228: 1604
198
+ 229: 1605
199
+ 230: 1606
200
+ 231: 1607
201
+ 232: 1608
202
+ 233: 1609
203
+ 234: 1610
204
+ 235: 1611
205
+ 236: 1612
206
+ 237: 1613
207
+ 238: 1614
208
+ 239: 1615
209
+ 240: 1616
210
+ 241: 1617
211
+ 242: 1618
212
+ 243: 1662
213
+ 244: 1657
214
+ 245: 1670
215
+ 246: 1749
216
+ 247: 1700
217
+ 248: 1711
218
+ 249: 1672
219
+ 250: 1681
220
+ 251: 0
221
+ 252: 0
222
+ 253: 0
223
+ 254: 1688
224
+ 255: 1746
@@ -0,0 +1,224 @@
1
+ ---
2
+ 32: 32
3
+ 33: 33
4
+ 34: 34
5
+ 35: 35
6
+ 36: 36
7
+ 37: 37
8
+ 38: 38
9
+ 39: 39
10
+ 40: 40
11
+ 41: 41
12
+ 42: 42
13
+ 43: 43
14
+ 44: 44
15
+ 45: 45
16
+ 46: 46
17
+ 47: 47
18
+ 48: 48
19
+ 49: 49
20
+ 50: 50
21
+ 51: 51
22
+ 52: 52
23
+ 53: 53
24
+ 54: 54
25
+ 55: 55
26
+ 56: 56
27
+ 57: 57
28
+ 58: 58
29
+ 59: 59
30
+ 60: 60
31
+ 61: 61
32
+ 62: 62
33
+ 63: 63
34
+ 64: 64
35
+ 65: 65
36
+ 66: 66
37
+ 67: 67
38
+ 68: 68
39
+ 69: 69
40
+ 70: 70
41
+ 71: 71
42
+ 72: 72
43
+ 73: 73
44
+ 74: 74
45
+ 75: 75
46
+ 76: 76
47
+ 77: 77
48
+ 78: 78
49
+ 79: 79
50
+ 80: 80
51
+ 81: 81
52
+ 82: 82
53
+ 83: 83
54
+ 84: 84
55
+ 85: 85
56
+ 86: 86
57
+ 87: 87
58
+ 88: 88
59
+ 89: 89
60
+ 90: 90
61
+ 91: 91
62
+ 92: 92
63
+ 93: 93
64
+ 94: 94
65
+ 95: 95
66
+ 96: 96
67
+ 97: 97
68
+ 98: 98
69
+ 99: 99
70
+ 100: 100
71
+ 101: 101
72
+ 102: 102
73
+ 103: 103
74
+ 104: 104
75
+ 105: 105
76
+ 106: 106
77
+ 107: 107
78
+ 108: 108
79
+ 109: 109
80
+ 110: 110
81
+ 111: 111
82
+ 112: 112
83
+ 113: 113
84
+ 114: 114
85
+ 115: 115
86
+ 116: 116
87
+ 117: 117
88
+ 118: 118
89
+ 119: 119
90
+ 120: 120
91
+ 121: 121
92
+ 122: 122
93
+ 123: 123
94
+ 124: 124
95
+ 125: 125
96
+ 126: 126
97
+ 128: 196
98
+ 129: 197
99
+ 130: 199
100
+ 131: 201
101
+ 132: 209
102
+ 133: 214
103
+ 134: 220
104
+ 135: 225
105
+ 136: 224
106
+ 137: 226
107
+ 138: 228
108
+ 139: 227
109
+ 140: 229
110
+ 141: 231
111
+ 142: 233
112
+ 143: 232
113
+ 144: 234
114
+ 145: 235
115
+ 146: 237
116
+ 147: 236
117
+ 148: 238
118
+ 149: 239
119
+ 150: 241
120
+ 151: 243
121
+ 152: 242
122
+ 153: 244
123
+ 154: 246
124
+ 155: 245
125
+ 156: 250
126
+ 157: 249
127
+ 158: 251
128
+ 159: 252
129
+ 160: 8224
130
+ 161: 176
131
+ 162: 162
132
+ 163: 163
133
+ 164: 167
134
+ 165: 8226
135
+ 166: 182
136
+ 167: 223
137
+ 168: 174
138
+ 169: 169
139
+ 170: 8482
140
+ 171: 180
141
+ 172: 168
142
+ 173: 8800
143
+ 174: 198
144
+ 175: 216
145
+ 176: 8734
146
+ 177: 177
147
+ 178: 8804
148
+ 179: 8805
149
+ 180: 165
150
+ 181: 181
151
+ 182: 8706
152
+ 183: 8721
153
+ 184: 8719
154
+ 185: 960
155
+ 186: 8747
156
+ 187: 170
157
+ 188: 186
158
+ 189: 937
159
+ 190: 230
160
+ 191: 248
161
+ 192: 191
162
+ 193: 161
163
+ 194: 172
164
+ 195: 8730
165
+ 196: 402
166
+ 197: 8776
167
+ 198: 8710
168
+ 199: 171
169
+ 200: 187
170
+ 201: 8230
171
+ 202: 160
172
+ 203: 192
173
+ 204: 195
174
+ 205: 213
175
+ 206: 338
176
+ 207: 339
177
+ 208: 8211
178
+ 209: 8212
179
+ 210: 8220
180
+ 211: 8221
181
+ 212: 8216
182
+ 213: 8217
183
+ 214: 247
184
+ 215: 9674
185
+ 216: 255
186
+ 217: 376
187
+ 218: 8260
188
+ 219: 8364
189
+ 220: 8249
190
+ 221: 8250
191
+ 222: 374
192
+ 223: 375
193
+ 224: 8225
194
+ 225: 183
195
+ 226: 7922
196
+ 227: 7923
197
+ 228: 8240
198
+ 229: 194
199
+ 230: 202
200
+ 231: 193
201
+ 232: 203
202
+ 233: 200
203
+ 234: 205
204
+ 235: 206
205
+ 236: 207
206
+ 237: 204
207
+ 238: 211
208
+ 239: 212
209
+ 240: 9827
210
+ 241: 210
211
+ 242: 218
212
+ 243: 219
213
+ 244: 217
214
+ 245: 305
215
+ 246: 221
216
+ 247: 253
217
+ 248: 372
218
+ 249: 373
219
+ 250: 7812
220
+ 251: 7813
221
+ 252: 7808
222
+ 253: 7809
223
+ 254: 7810
224
+ 255: 7811