exiv2 0.1.0 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7000b7708b6281fe8686a00aaff68027dbfa95023a51cfbbd651188b8b48740b
4
- data.tar.gz: 3a6c7cbbfa1b6d6a5ca44b31f93819c79687570081951aa1ee0bb9a69766d83e
3
+ metadata.gz: c62790694ad3a6cf96e9f52341343bedefc97acbc262c3e454c0582cfd53fbab
4
+ data.tar.gz: 8cc6d290fc681e9a597a5b920ecdd23521cb2bec04616c26d02efabe9716ed98
5
5
  SHA512:
6
- metadata.gz: 9267361af64e277e724f18256108f01997daa8b873cac39984e37a5e12267551ea4da29353424b6fd1afaba9a0f6afbaf63fc17143e93d75e84bfcbbb5526302
7
- data.tar.gz: 59d8a2cfebab35d5760f832420eab1cc89cbbd67dda0017512de843b4aa89bc89c176440de8df95bbc9c60d9e0bcdb36589c6995944381ed24733d5e905e3d11
6
+ metadata.gz: fc9cb80689cbff412812924041daca2c69c191689dd602f0700688a563a86191ca48d4b9fc09f6c1ac9933cd9ac463df6417bd9c4b0a4cda78f787e4435fa627
7
+ data.tar.gz: 76d9e02c5524da3741c7a46a43fc26d28558947110527e01e5191607a675123abcaa4bfe6f131a6df6a2987b4c84e8d313b35551cc27fca6892b444eeb3d7ef4
data/README.md CHANGED
@@ -17,31 +17,6 @@ Requires that the exiv2 C++ library is installed.
17
17
  gem install exiv2
18
18
  ```
19
19
 
20
- if you get errors with header could not be found below:
21
-
22
- ```
23
- exiv2.cpp:1:10: fatal error: 'exiv2/image.hpp' file not found
24
- #include "exiv2/image.hpp"
25
- ```
26
-
27
- please explicitly declare the header path
28
-
29
- ```
30
- gem install exiv2 -- --with-exiv2-include="${EXIV2_PREFIX}/include" --with-exiv2-lib="${EXIV2_PREFIX}/lib"
31
- ```
32
-
33
- on OSX with Homebrew's exiv2, the `EXIV2_PREFIX` can be set:
34
-
35
- ```
36
- export EXIV2_PREFIX=$(brew --prefix exiv2)
37
- ```
38
-
39
- If you get this error while trying to install as part of a bundle install, you can set these paths using:
40
- ```
41
- bundle config build.exiv2 --with-exiv2-include="${EXIV2_PREFIX}/include" --with-exiv2-lib="${EXIV2_PREFIX}/lib"
42
- ```
43
-
44
-
45
20
  If you are on new version of Command Line Tool (that is newer than 6.2, and bump into following error:
46
21
 
47
22
  ```
@@ -93,17 +68,17 @@ are welcome.
93
68
 
94
69
  ## Compatibility
95
70
 
96
- Tested on 2.4.x, 2.5.x and 2.6.x with Exiv2 0.27.1
71
+ Tested on 2.6.x, 2.7.x, 3.0.x, 3.1.x and 3.2.x with Exiv2 0.27.1 and 0.28.0.
97
72
 
98
73
  ## Developing
99
74
 
100
- * Fork the project.
101
- * Make your feature addition or bug fix.
102
- * Add tests for it. This is important so I don't break it in a
75
+ - Fork the project.
76
+ - Make your feature addition or bug fix.
77
+ - Add tests for it. This is important so I don't break it in a
103
78
  future version unintentionally.
104
- * Commit, do not mess with rakefile, version, or history.
79
+ - Commit, do not mess with rakefile, version, or history.
105
80
  (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
106
- * Send me a pull request. Bonus points for topic branches.
81
+ - Send me a pull request. Bonus points for topic branches.
107
82
 
108
83
  ## Status
109
84
 
data/ext/exiv2/exiv2.cpp CHANGED
@@ -1,7 +1,20 @@
1
- #include "exiv2/image.hpp"
2
- #include "exiv2/error.hpp"
1
+ #include "exiv2/exiv2.hpp"
3
2
  #include "ruby.h"
4
3
 
4
+ #if EXIV2_MAJOR_VERSION == 0 && EXIV2_MINOR_VERSION <= 27
5
+ #define ExivImagePtr Exiv2::Image::AutoPtr
6
+ #define ExivValuePtr Exiv2::Value::AutoPtr
7
+ #else
8
+ #define ExivImagePtr Exiv2::Image::UniquePtr
9
+ #define ExivValuePtr Exiv2::Value::UniquePtr
10
+ #endif
11
+
12
+ #if EXIV2_MAJOR_VERSION == 0 && EXIV2_MINOR_VERSION <= 27
13
+ #define ExivError Exiv2::BasicError<char>
14
+ #else
15
+ #define ExivError Exiv2::Error
16
+ #endif
17
+
5
18
  // Create a Ruby string from a C++ std::string.
6
19
  static VALUE to_ruby_string(const std::string& string) {
7
20
  VALUE str = rb_str_new(string.data(), string.length());
@@ -75,6 +88,7 @@ extern "C" void Init_exiv2() {
75
88
  basic_error_class = rb_define_class_under(exiv2_module, "BasicError", rb_eRuntimeError);
76
89
 
77
90
  image_class = rb_define_class_under(exiv2_module, "Image", rb_cObject);
91
+ rb_undef_alloc_func(image_class);
78
92
  rb_define_method(image_class, "read_metadata", (Method)image_read_metadata, 0);
79
93
  rb_define_method(image_class, "write_metadata", (Method)image_write_metadata, 0);
80
94
  rb_define_method(image_class, "iptc_data", (Method)image_iptc_data, 0);
@@ -85,18 +99,21 @@ extern "C" void Init_exiv2() {
85
99
  rb_define_singleton_method(image_factory_class, "open", (Method)image_factory_open, 1);
86
100
 
87
101
  exif_data_class = rb_define_class_under(exiv2_module, "ExifData", rb_cObject);
102
+ rb_undef_alloc_func(exif_data_class);
88
103
  rb_include_module(exif_data_class, enumerable_module);
89
104
  rb_define_method(exif_data_class, "each", (Method)exif_data_each, 0);
90
105
  rb_define_method(exif_data_class, "add", (Method)exif_data_add, 2);
91
106
  rb_define_method(exif_data_class, "delete", (Method)exif_data_delete, 1);
92
107
 
93
108
  iptc_data_class = rb_define_class_under(exiv2_module, "IptcData", rb_cObject);
109
+ rb_undef_alloc_func(iptc_data_class);
94
110
  rb_include_module(iptc_data_class, enumerable_module);
95
111
  rb_define_method(iptc_data_class, "each", (Method)iptc_data_each, 0);
96
112
  rb_define_method(iptc_data_class, "add", (Method)iptc_data_add, 2);
97
113
  rb_define_method(iptc_data_class, "delete", (Method)iptc_data_delete, 1);
98
114
 
99
115
  xmp_data_class = rb_define_class_under(exiv2_module, "XmpData", rb_cObject);
116
+ rb_undef_alloc_func(xmp_data_class);
100
117
  rb_include_module(xmp_data_class, enumerable_module);
101
118
  rb_define_method(xmp_data_class, "each", (Method)xmp_data_each, 0);
102
119
  rb_define_method(xmp_data_class, "add", (Method)xmp_data_add, 2);
@@ -117,7 +134,7 @@ static VALUE image_read_metadata(VALUE self) {
117
134
  try {
118
135
  image->readMetadata();
119
136
  }
120
- catch (Exiv2::BasicError<char> error) {
137
+ catch (ExivError error) {
121
138
  rb_raise(basic_error_class, "%s", error.what());
122
139
  }
123
140
 
@@ -131,7 +148,7 @@ static VALUE image_write_metadata(VALUE self) {
131
148
  try {
132
149
  image->writeMetadata();
133
150
  }
134
- catch (Exiv2::BasicError<char> error) {
151
+ catch (ExivError error) {
135
152
  rb_raise(basic_error_class, "%s", error.what());
136
153
  }
137
154
 
@@ -174,10 +191,10 @@ static VALUE image_factory_open(VALUE klass, VALUE path) {
174
191
  Exiv2::Image* image;
175
192
 
176
193
  try {
177
- Exiv2::Image::AutoPtr image_auto_ptr = Exiv2::ImageFactory::open(to_std_string(path));
178
- image = image_auto_ptr.release(); // Release the AutoPtr, so we can keep the image around.
194
+ ExivImagePtr image_ptr = Exiv2::ImageFactory::open(to_std_string(path));
195
+ image = image_ptr.release(); // Release the pointer, so we can keep the image around.
179
196
  }
180
- catch (Exiv2::BasicError<char> error) {
197
+ catch (ExivError error) {
181
198
  rb_raise(basic_error_class, "%s", error.what());
182
199
  }
183
200
 
@@ -203,7 +220,7 @@ static VALUE exif_data_add(VALUE self, VALUE key, VALUE value) {
203
220
  Exiv2::TypeId typeId = exifKey.defaultTypeId();
204
221
  #endif
205
222
 
206
- Exiv2::Value::AutoPtr v = Exiv2::Value::create(typeId);
223
+ ExivValuePtr v = Exiv2::Value::create(typeId);
207
224
  v->read(to_std_string(value));
208
225
 
209
226
  data->add(exifKey, v.get());
@@ -236,7 +253,7 @@ static VALUE iptc_data_add(VALUE self, VALUE key, VALUE value) {
236
253
  Exiv2::IptcKey iptcKey = Exiv2::IptcKey(to_std_string(key));
237
254
  Exiv2::TypeId typeId = Exiv2::IptcDataSets::dataSetType(iptcKey.tag(), iptcKey.record());
238
255
 
239
- Exiv2::Value::AutoPtr v = Exiv2::Value::create(typeId);
256
+ ExivValuePtr v = Exiv2::Value::create(typeId);
240
257
  v->read(to_std_string(value));
241
258
 
242
259
  if(data->add(iptcKey, v.get())) {
@@ -270,7 +287,7 @@ static VALUE xmp_data_add(VALUE self, VALUE key, VALUE value) {
270
287
  Exiv2::XmpKey xmpKey = Exiv2::XmpKey(to_std_string(key));
271
288
  Exiv2::TypeId typeId = Exiv2::XmpProperties::propertyType(xmpKey);
272
289
 
273
- Exiv2::Value::AutoPtr v = Exiv2::Value::create(typeId);
290
+ ExivValuePtr v = Exiv2::Value::create(typeId);
274
291
  v->read(to_std_string(value));
275
292
 
276
293
  if(data->add(xmpKey, v.get())) {
data/ext/exiv2/extconf.rb CHANGED
@@ -1,12 +1,29 @@
1
1
  require 'mkmf'
2
2
 
3
- RbConfig::MAKEFILE_CONFIG['CC'] = ENV['CC'] if ENV['CC']
4
- RbConfig::MAKEFILE_CONFIG['CCFLAGS'] = ENV['CCFLAGS'] if ENV['CCFLAGS']
5
- RbConfig::MAKEFILE_CONFIG['CXX'] = ENV['CXX'] if ENV['CXX']
6
- RbConfig::MAKEFILE_CONFIG['CXXFLAGS'] = ENV['CXXFLAGS'] if ENV['CXXFLAGS']
3
+ $CXXFLAGS += " -std=c++11"
4
+ RbConfig::CONFIG['PKG_CONFIG'] = 'pkg-config'
7
5
 
8
6
  if dir_config("exiv2") == [nil, nil]
9
7
  pkg_config("exiv2")
10
8
  end
11
9
  have_library("exiv2")
10
+
11
+ # Some extensions are optional in versions <= 0.27 and also don't exist in
12
+ # versions >= 0.28.
13
+ # Check if they're enabled in the existing exiv2 headers
14
+ # configuration and include the relevant libraries.
15
+ if have_macro("EXV_USE_SSH", "exiv2/exv_conf.h")
16
+ if dir_config("libssh") == [nil, nil]
17
+ pkg_config("libssh")
18
+ end
19
+ have_library("libssh")
20
+ end
21
+
22
+ if have_macro("EXV_USE_CURL", "exiv2/exv_conf.h")
23
+ if dir_config("libcurl") == [nil, nil]
24
+ pkg_config("libcurl")
25
+ end
26
+ have_library("libcurl")
27
+ end
28
+
12
29
  create_makefile("exiv2/exiv2")
data/lib/exiv2/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  # coding: utf-8
2
2
  module Exiv2
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.2"
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exiv2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pete Yandell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-05 00:00:00.000000000 Z
11
+ date: 1980-01-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -61,9 +61,9 @@ licenses: []
61
61
  metadata:
62
62
  bug_tracker_uri: https://github.com/envato/exiv2/issues
63
63
  changelog_uri: https://github.com/envato/exiv2/releases
64
- documentation_uri: https://www.rubydoc.info/gems/exiv2/0.1.0
64
+ documentation_uri: https://www.rubydoc.info/gems/exiv2/0.1.2
65
65
  homepage_uri: https://github.com/envato/exiv2
66
- source_code_uri: https://github.com/envato/exiv2/tree/v0.1.0
66
+ source_code_uri: https://github.com/envato/exiv2/tree/v0.1.2
67
67
  post_install_message:
68
68
  rdoc_options: []
69
69
  require_paths:
@@ -80,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
80
  - !ruby/object:Gem::Version
81
81
  version: '0'
82
82
  requirements: []
83
- rubygems_version: 3.4.6
83
+ rubygems_version: 3.3.26
84
84
  signing_key:
85
85
  specification_version: 4
86
86
  summary: A simple wrapper around Exiv2