code-pages 1.1.0 → 1.2.0

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