encoding-codepage 0.1 → 0.2
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.
- data/README.md +9 -1
- data/lib/encoding-codepage.rb +30 -2
- metadata +41 -24
data/README.md
CHANGED
@@ -37,7 +37,7 @@ For seeing whether code-pages exist:
|
|
37
37
|
Encoding.codepage?(37)
|
38
38
|
# => nil
|
39
39
|
|
40
|
-
|
40
|
+
It also makes all supported Code Pages available as object with a `CP` prefix:
|
41
41
|
|
42
42
|
Encoding::CP28591
|
43
43
|
# => #<Encoding:CP28591>
|
@@ -45,6 +45,14 @@ Also makes all supported Code Pages available with a `CP` prefix:
|
|
45
45
|
Encoding.find("CP28591")
|
46
46
|
# => #<Encoding:CP28591>
|
47
47
|
|
48
|
+
And adds a method to `Encoding` objects for discovering their Code Page Identifier:
|
49
|
+
|
50
|
+
Encoding::UTF_8.codepage_id
|
51
|
+
# => 65001
|
52
|
+
|
53
|
+
Encoding::ISO_8859_1.codepage_id
|
54
|
+
# => 28591
|
55
|
+
|
48
56
|
Encodings
|
49
57
|
=========
|
50
58
|
|
data/lib/encoding-codepage.rb
CHANGED
@@ -54,8 +54,10 @@ class Encoding
|
|
54
54
|
number, original, comment = line.split("\t", 3)
|
55
55
|
number = Integer(number, 10)
|
56
56
|
|
57
|
-
if
|
58
|
-
|
57
|
+
if encoding = exist?(original.upcase)
|
58
|
+
encoding.replicate "CP#{number}" unless codepage?(number)
|
59
|
+
|
60
|
+
CodePage.reverse_lookup[encoding] = codepage(number)
|
59
61
|
end
|
60
62
|
}
|
61
63
|
end
|
@@ -63,8 +65,34 @@ class Encoding
|
|
63
65
|
def codepage_file
|
64
66
|
File.join(File.dirname(__FILE__), "codepages.tsv")
|
65
67
|
end
|
68
|
+
|
69
|
+
# A Hash from <non-codepage-encoding> to <codepage-encoding> to facilitate running
|
70
|
+
# codepage_id in the case where Ruby has both the CodePage encoding and its alias, but
|
71
|
+
# thinks they are different Encodings.
|
72
|
+
#
|
73
|
+
def self.reverse_lookup
|
74
|
+
@reverse_lookup ||= {}
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
module CodePageMethods
|
79
|
+
# Find the code-page id that corresponds to this encoding.
|
80
|
+
#
|
81
|
+
# @return Integer The Code Page Identifier
|
82
|
+
# @raise ArgumentError There is no Code Page Identifier for that Encoding.
|
83
|
+
#
|
84
|
+
def codepage_id
|
85
|
+
if names.detect{ |x| x =~ /\ACP([0-9]+)\z/ }
|
86
|
+
Integer($1, 10)
|
87
|
+
elsif codepage_encoding = CodePage.reverse_lookup[self]
|
88
|
+
codepage_encoding.codepage_id
|
89
|
+
else
|
90
|
+
raise ArgumentError, "No Code Page Idenfier found for: #{self}"
|
91
|
+
end
|
92
|
+
end
|
66
93
|
end
|
67
94
|
|
68
95
|
extend CodePage
|
96
|
+
include CodePageMethods
|
69
97
|
load_codepages!
|
70
98
|
end
|
metadata
CHANGED
@@ -1,53 +1,70 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: encoding-codepage
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 15
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 2
|
9
|
+
version: "0.2"
|
6
10
|
platform: ruby
|
7
|
-
authors:
|
11
|
+
authors:
|
8
12
|
- Conrad Irwin
|
9
13
|
autorequire:
|
10
14
|
bindir: bin
|
11
15
|
cert_chain: []
|
12
|
-
|
16
|
+
|
17
|
+
date: 2012-04-02 00:00:00 -07:00
|
18
|
+
default_executable:
|
13
19
|
dependencies: []
|
14
|
-
|
15
|
-
|
16
|
-
content
|
20
|
+
|
21
|
+
description: Provides aliases for Encodings that have Code Page Identifiers to make it easier to interface with Microsoft APIs that use Code Page Identifiers to describe content
|
17
22
|
email: conrad.irwin@gmail.com
|
18
23
|
executables: []
|
24
|
+
|
19
25
|
extensions: []
|
26
|
+
|
20
27
|
extra_rdoc_files: []
|
21
|
-
|
28
|
+
|
29
|
+
files:
|
22
30
|
- lib/encoding-codepage.rb
|
23
31
|
- lib/codepages.tsv
|
24
32
|
- README.md
|
25
33
|
- LICENSE.MIT
|
26
34
|
- LICENSE.MLPL
|
35
|
+
has_rdoc: true
|
27
36
|
homepage: https://github.com/ConradIrwin/encoding-codepage
|
28
|
-
licenses:
|
37
|
+
licenses:
|
29
38
|
- MIT, Microsoft Limited Public License
|
30
39
|
post_install_message:
|
31
40
|
rdoc_options: []
|
32
|
-
|
41
|
+
|
42
|
+
require_paths:
|
33
43
|
- lib
|
34
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
44
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
35
45
|
none: false
|
36
|
-
requirements:
|
37
|
-
- -
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
|
40
|
-
|
46
|
+
requirements:
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
hash: 3
|
50
|
+
segments:
|
51
|
+
- 0
|
52
|
+
version: "0"
|
53
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
41
54
|
none: false
|
42
|
-
requirements:
|
43
|
-
- -
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
hash: 3
|
59
|
+
segments:
|
60
|
+
- 0
|
61
|
+
version: "0"
|
46
62
|
requirements: []
|
63
|
+
|
47
64
|
rubyforge_project:
|
48
|
-
rubygems_version: 1.
|
65
|
+
rubygems_version: 1.3.7
|
49
66
|
signing_key:
|
50
67
|
specification_version: 3
|
51
68
|
summary: Allow looking up Encodings by their Code Page Identifier
|
52
69
|
test_files: []
|
53
|
-
|
70
|
+
|