iptcr 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/iptcr.rb +5 -3
- data/lib/iptcr/iptc.rb +7 -6
- data/lib/iptcr/version.rb +1 -1
- data/test/iptc_test.rb +6 -0
- metadata +3 -4
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a41336d23d8fbd12a7106d88009508ae869357e7
|
4
|
+
data.tar.gz: ad2db1e2b64427ffafed283b9580fefa99524471
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c514478623a9dd1c8f475de25ef93fbe03202b4275c09534bfa0c2885ae59b06bd486de529802521410e4855e709e8fc781b17184762f973e027fa3afdde710
|
7
|
+
data.tar.gz: d03b0e1117cdd200827a9dfa99a879950c4ea8b2b8562de065657cc098af7d4cc732cdc64c9ce7520ccbd08407bdc232e85d8bf2fcf52ce3244f4e09b3905c92
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/iptcr.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
require "iptcr/version"
|
2
2
|
|
3
3
|
module IPTCR
|
4
|
-
|
4
|
+
class Malformed < RuntimeError; end
|
5
|
+
|
6
|
+
def self.parse(value, length: nil, **kwargs)
|
5
7
|
if value.is_a? String
|
6
8
|
require "stringio"
|
7
9
|
length ||= value.bytesize
|
8
|
-
IPTC.new(StringIO.new(value), length: length)
|
10
|
+
IPTC.new(StringIO.new(value), length: length, **kwargs)
|
9
11
|
else
|
10
|
-
IPTC.new(value, length: length)
|
12
|
+
IPTC.new(value, length: length, **kwargs)
|
11
13
|
end
|
12
14
|
end
|
13
15
|
|
data/lib/iptcr/iptc.rb
CHANGED
@@ -2,8 +2,6 @@ require "iptcr"
|
|
2
2
|
require "iptcr/records"
|
3
3
|
|
4
4
|
module IPTCR
|
5
|
-
class Malformed < RuntimeError; end
|
6
|
-
|
7
5
|
# # IPTC
|
8
6
|
#
|
9
7
|
# ## Notes
|
@@ -24,7 +22,8 @@ module IPTCR
|
|
24
22
|
# IPTC IIM specifics the default encoding is ISO646/4873, which is roughly ASCII
|
25
23
|
DEFAULT_ENCODING = Encoding::ASCII
|
26
24
|
|
27
|
-
def initialize(io, length:)
|
25
|
+
def initialize(io, length: nil, default_encoding: nil)
|
26
|
+
@encoding = default_encoding
|
28
27
|
@fields = []
|
29
28
|
read_fields(io, length: length)
|
30
29
|
end
|
@@ -95,8 +94,10 @@ module IPTCR
|
|
95
94
|
case field.value
|
96
95
|
when "\x1b%G"
|
97
96
|
@encoding = Encoding::UTF_8
|
97
|
+
when "\x1b\xe2\x80\xa2A"
|
98
|
+
@encoding = Encoding::ISO_8859_1 # Latin 1
|
98
99
|
else
|
99
|
-
|
100
|
+
warn "IPTC: Unknown encoding: #{field.value.inspect}, using default #{encoding}"
|
100
101
|
end
|
101
102
|
end
|
102
103
|
|
@@ -176,10 +177,10 @@ module IPTCR
|
|
176
177
|
when "string"
|
177
178
|
# Record number 1 is always the default encoding
|
178
179
|
if record_number == 1
|
179
|
-
@data.force_encoding(DEFAULT_ENCODING)
|
180
|
+
@data.force_encoding(DEFAULT_ENCODING) unless @data.nil?
|
180
181
|
# Records 2-6 and 8 respect tagged encoding
|
181
182
|
elsif (2..6).include?(record_number) || record_number == 8
|
182
|
-
@data.force_encoding(encoding)
|
183
|
+
@data.force_encoding(encoding) unless @data.nil?
|
183
184
|
# Other behaviour is undefined
|
184
185
|
else
|
185
186
|
@data
|
data/lib/iptcr/version.rb
CHANGED
data/test/iptc_test.rb
CHANGED
@@ -83,6 +83,12 @@ class IPTCTest < Minitest::Test
|
|
83
83
|
assert_equal("☃".force_encoding("UTF-8"), iptc["ObjectName"])
|
84
84
|
end
|
85
85
|
|
86
|
+
def test_iptc_default_encoding_string
|
87
|
+
iptc = IPTCR.parse("\x1c\x02\x05\x00\x01\x80".b, default_encoding: "windows-1252")
|
88
|
+
assert_equal(Encoding::Windows_1252, iptc["ObjectName"].encoding)
|
89
|
+
assert_equal("€", iptc["ObjectName"].encode("utf-8"))
|
90
|
+
end
|
91
|
+
|
86
92
|
def test_iptc_string_list
|
87
93
|
iptc = IPTCR.parse("\x1c\x01\x05\x00\x05Hello\x1c\x01\x05\x00\x05World".b)
|
88
94
|
assert_equal(2, iptc.fields.size)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iptcr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Cochran
|
@@ -28,7 +28,7 @@ cert_chain:
|
|
28
28
|
52G9HuhbVSTgE/I10H9qZBOE3qdP8ka/Fk0PUrux/DuUanNZgSKJokrQvRA4H9Au
|
29
29
|
WpPA7HJYV6msWQiukoBEhfQ2l6Fl2HUwntvX3MCcFNHeJJ5ETERp9alo88E=
|
30
30
|
-----END CERTIFICATE-----
|
31
|
-
date:
|
31
|
+
date: 2016-01-05 00:00:00.000000000 Z
|
32
32
|
dependencies:
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: bundler
|
@@ -107,11 +107,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
107
107
|
version: '0'
|
108
108
|
requirements: []
|
109
109
|
rubyforge_project:
|
110
|
-
rubygems_version: 2.
|
110
|
+
rubygems_version: 2.5.1
|
111
111
|
signing_key:
|
112
112
|
specification_version: 4
|
113
113
|
summary: Parse IPTC data
|
114
114
|
test_files:
|
115
115
|
- test/iptc_test.rb
|
116
116
|
- test/test_helper.rb
|
117
|
-
has_rdoc:
|
metadata.gz.sig
CHANGED
Binary file
|