exif 1.0.0 → 1.0.1

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
  SHA1:
3
- metadata.gz: d039e9781e3484977eaa1f57d34d5fdeb3c7422a
4
- data.tar.gz: 36d459ec69a08973f845931d827bf690dd494ae0
3
+ metadata.gz: 62ee375b5a2f547b733036b6d45e9f07f9157a7f
4
+ data.tar.gz: 1777637e0b478a47d4008a0953addbbc1b24f73b
5
5
  SHA512:
6
- metadata.gz: 6b5c9f0d2a64c4d345512dd50476d32231be8fa1cb4aaed0e7f9c350b26f0c4c1d38a2ad172f25644243cb4ae59e6051aa31b1f0b682e983722456afe8343eae
7
- data.tar.gz: 0da8b96a388e365dfeee2d9d0bca6cd24f761a3018a6d91299b957f6831281c1acaa367df87570821f815709fdab0ac3ec7dc31f29578d61b1928b6924e1347e
6
+ metadata.gz: 47983ae0fb7a3ad48c5b01d973da975c0d74bd1e50abb1db4ff310a4296b29c9ee435286c80a5280f45f804524f82e2f118bce0e8b0219f5674913206e09741d
7
+ data.tar.gz: f026ead2e3e8c67a13cec1093bba58c7c162d7c67e347c967362ee8c19fe992eba2a077ea91ccd3130004451a1b97d72742a05bc3dcc8a73861a762d91aec272
@@ -0,0 +1,6 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.0
4
+ - 2.1.5
5
+ - 2.0.0
6
+ - 1.9.3
data/Gemfile CHANGED
@@ -1,4 +1,2 @@
1
1
  source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in exif.gemspec
4
- gemspec
2
+ gemspec
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- Ruby EXIF reader written in C extension.
1
+ Ruby EXIF reader written in C extension. [![Build Status](https://travis-ci.org/tonytonyjan/exif.svg?branch=master)](https://travis-ci.org/tonytonyjan/exif)
2
2
 
3
3
  # Installation
4
4
 
data/Rakefile CHANGED
@@ -1,7 +1,11 @@
1
1
  require "bundler/gem_tasks"
2
-
3
2
  require "rake/extensiontask"
3
+ require 'rspec/core/rake_task'
4
4
 
5
5
  Rake::ExtensionTask.new("exif") do |ext|
6
6
  ext.lib_dir = "lib/exif"
7
7
  end
8
+
9
+ RSpec::Core::RakeTask.new(:spec)
10
+
11
+ task default: [:compile, :spec]
@@ -22,4 +22,5 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency "bundler", "~> 1.7"
23
23
  spec.add_development_dependency "rake", "~> 10.0"
24
24
  spec.add_development_dependency "rake-compiler"
25
+ spec.add_development_dependency "rspec"
25
26
  end
@@ -22,7 +22,7 @@ void init_data(){
22
22
  rb_define_method(rb_cData, "[]", rb_value, 1);
23
23
  }
24
24
 
25
- static VALUE rb_new(VALUE self, VALUE file_path){
25
+ VALUE rb_new(VALUE self, VALUE file_path){
26
26
  Check_Type(file_path, T_STRING);
27
27
  ExifData *ed = exif_data_new_from_file(StringValueCStr(file_path));
28
28
  if(!ed) rb_raise(rb_eRuntimeError, "File not readable or no EXIF data in file.");
@@ -32,19 +32,19 @@ static VALUE rb_new(VALUE self, VALUE file_path){
32
32
  return rb_data;
33
33
  }
34
34
 
35
- static VALUE rb_dump(VALUE self){
35
+ VALUE rb_dump(VALUE self){
36
36
  ExifData *ed;
37
37
  Data_Get_Struct(self, ExifData, ed);
38
38
  exif_data_dump(ed);
39
39
  return Qnil;
40
40
  }
41
41
 
42
- static VALUE rb_value(VALUE self, VALUE key){
42
+ VALUE rb_value(VALUE self, VALUE key){
43
43
  VALUE rb_contents = rb_iv_get(self, "@contents");
44
44
  return rb_hash_aref(rb_contents, key);
45
45
  }
46
46
 
47
- static void each_content(ExifContent *ec, void *self_ptr){
47
+ void each_content(ExifContent *ec, void *self_ptr){
48
48
  VALUE *self = (VALUE*)self_ptr;
49
49
  VALUE rb_contents = rb_iv_get(*self, "@contents");
50
50
  Check_Type(rb_contents, T_HASH);
@@ -55,11 +55,11 @@ static void each_content(ExifContent *ec, void *self_ptr){
55
55
  exif_content_foreach_entry(ec, each_entry, self);
56
56
  }
57
57
 
58
- static void each_entry(ExifEntry *ee, void *self_ptr){
58
+ void each_entry(ExifEntry *ee, void *self_ptr){
59
59
  VALUE *self = (VALUE*)self_ptr;
60
60
  VALUE rb_contents = rb_iv_get(*self, "@contents");
61
61
  ExifIfd ifd = exif_entry_get_ifd(ee);
62
- char *attr_name = attr_string(ifd, ee->tag);
62
+ const char *attr_name = attr_string(ifd, ee->tag);
63
63
  VALUE tag_name = ID2SYM(rb_intern(attr_name + 1));
64
64
  char buf[500];
65
65
  exif_entry_get_value(ee, buf, sizeof(buf));
@@ -101,7 +101,7 @@ static void each_entry(ExifEntry *ee, void *self_ptr){
101
101
  rb_iv_set(*self, attr_name, value);
102
102
  }
103
103
 
104
- static VALUE process_value(VALUE *self_ptr, ExifIfd ifd, ExifTag tag, char *buf){
104
+ VALUE process_value(VALUE *self_ptr, ExifIfd ifd, ExifTag tag, char *buf){
105
105
  ExifData *ed;
106
106
  Data_Get_Struct(*self_ptr, ExifData, ed);
107
107
  switch((int)tag){
@@ -146,7 +146,7 @@ static VALUE process_value(VALUE *self_ptr, ExifIfd ifd, ExifTag tag, char *buf)
146
146
  return rb_str_new_cstr(buf);
147
147
  }
148
148
 
149
- static char* attr_string(ExifIfd ifd, ExifTag tag){
149
+ const char* attr_string(ExifIfd ifd, ExifTag tag){
150
150
  switch((int)tag){
151
151
  case EXIF_TAG_INTEROPERABILITY_INDEX: /* EXIF_TAG_GPS_LATITUDE_REF */
152
152
  return ifd == EXIF_IFD_GPS ? "@gps_latitude_ref" : "@interoperability_index";
@@ -4,17 +4,17 @@
4
4
  #include <libexif/exif-data.h>
5
5
  #include "ruby.h"
6
6
 
7
- static char *attrs[] = {"aperture_value", "artist", "battery_level", "bits_per_sample", "brightness_value", "cfa_pattern", "cfa_repeat_pattern_dim", "color_space", "components_configuration", "compressed_bits_per_pixel", "compression", "contrast", "copyright", "custom_rendered", "date_time", "date_time_digitized", "date_time_original", "device_setting_description", "digital_zoom_ratio", "document_name", "exif_ifd_pointer", "exif_version", "exposure_bias_value", "exposure_index", "exposure_mode", "exposure_program", "exposure_time", "file_source", "fill_order", "flash", "flash_energy", "flash_pix_version", "fnumber", "focal_length", "focal_length_in_35mm_film", "focal_plane_resolution_unit", "focal_plane_x_resolution", "focal_plane_y_resolution", "gain_control", "gamma", "gps_altitude", "gps_altitude_ref", "gps_area_information", "gps_date_stamp", "gps_dest_bearing", "gps_dest_bearing_ref", "gps_dest_distance", "gps_dest_distance_ref", "gps_dest_latitude", "gps_dest_latitude_ref", "gps_dest_longitude", "gps_dest_longitude_ref", "gps_differential", "gps_dop", "gps_img_direction", "gps_img_direction_ref", "gps_info_ifd_pointer", "gps_latitude", "gps_latitude_ref", "gps_longitude", "gps_longitude_ref", "gps_map_datum", "gps_measure_mode", "gps_processing_method", "gps_satellites", "gps_speed", "gps_speed_ref", "gps_status", "gps_time_stamp", "gps_track", "gps_track_ref", "gps_version_id", "image_description", "image_length", "image_resources", "image_unique_id", "image_width", "inter_color_profile", "interoperability_ifd_pointer", "interoperability_index", "interoperability_version", "iptc_naa", "iso_speed_ratings", "jpeg_interchange_format", "jpeg_interchange_format_length", "jpeg_proc", "light_source", "make", "maker_note", "max_aperture_value", "metering_mode", "model", "new_cfa_pattern", "new_subfile_type", "oecf", "orientation", "padding", "photometric_interpretation", "pixel_x_dimension", "pixel_y_dimension", "planar_configuration", "primary_chromaticities", "print_image_matching", "reference_black_white", "related_image_file_format", "related_image_length", "related_image_width", "related_sound_file", "resolution_unit", "rows_per_strip", "samples_per_pixel", "saturation", "scene_capture_type", "scene_type", "sensing_method", "sharpness", "shutter_speed_value", "software", "spatial_frequency_response", "spectral_sensitivity", "strip_byte_counts", "strip_offsets", "sub_ifds", "sub_sec_time", "sub_sec_time_digitized", "sub_sec_time_original", "subject_area", "subject_distance", "subject_distance_range", "subject_location", "tiff_ep_standard_id", "time_zone_offset", "transfer_function", "transfer_range", "user_comment", "white_balance", "white_point", "x_resolution", "xml_packet", "xp_author", "xp_comment", "xp_keywords", "xp_subject", "xp_title", "y_resolution", "ycbcr_coefficients", "ycbcr_positioning", "ycbcr_sub_sampling"};
7
+ static const char *attrs[] = {"aperture_value", "artist", "battery_level", "bits_per_sample", "brightness_value", "cfa_pattern", "cfa_repeat_pattern_dim", "color_space", "components_configuration", "compressed_bits_per_pixel", "compression", "contrast", "copyright", "custom_rendered", "date_time", "date_time_digitized", "date_time_original", "device_setting_description", "digital_zoom_ratio", "document_name", "exif_ifd_pointer", "exif_version", "exposure_bias_value", "exposure_index", "exposure_mode", "exposure_program", "exposure_time", "file_source", "fill_order", "flash", "flash_energy", "flash_pix_version", "fnumber", "focal_length", "focal_length_in_35mm_film", "focal_plane_resolution_unit", "focal_plane_x_resolution", "focal_plane_y_resolution", "gain_control", "gamma", "gps_altitude", "gps_altitude_ref", "gps_area_information", "gps_date_stamp", "gps_dest_bearing", "gps_dest_bearing_ref", "gps_dest_distance", "gps_dest_distance_ref", "gps_dest_latitude", "gps_dest_latitude_ref", "gps_dest_longitude", "gps_dest_longitude_ref", "gps_differential", "gps_dop", "gps_img_direction", "gps_img_direction_ref", "gps_info_ifd_pointer", "gps_latitude", "gps_latitude_ref", "gps_longitude", "gps_longitude_ref", "gps_map_datum", "gps_measure_mode", "gps_processing_method", "gps_satellites", "gps_speed", "gps_speed_ref", "gps_status", "gps_time_stamp", "gps_track", "gps_track_ref", "gps_version_id", "image_description", "image_length", "image_resources", "image_unique_id", "image_width", "inter_color_profile", "interoperability_ifd_pointer", "interoperability_index", "interoperability_version", "iptc_naa", "iso_speed_ratings", "jpeg_interchange_format", "jpeg_interchange_format_length", "jpeg_proc", "light_source", "make", "maker_note", "max_aperture_value", "metering_mode", "model", "new_cfa_pattern", "new_subfile_type", "oecf", "orientation", "padding", "photometric_interpretation", "pixel_x_dimension", "pixel_y_dimension", "planar_configuration", "primary_chromaticities", "print_image_matching", "reference_black_white", "related_image_file_format", "related_image_length", "related_image_width", "related_sound_file", "resolution_unit", "rows_per_strip", "samples_per_pixel", "saturation", "scene_capture_type", "scene_type", "sensing_method", "sharpness", "shutter_speed_value", "software", "spatial_frequency_response", "spectral_sensitivity", "strip_byte_counts", "strip_offsets", "sub_ifds", "sub_sec_time", "sub_sec_time_digitized", "sub_sec_time_original", "subject_area", "subject_distance", "subject_distance_range", "subject_location", "tiff_ep_standard_id", "time_zone_offset", "transfer_function", "transfer_range", "user_comment", "white_balance", "white_point", "x_resolution", "xml_packet", "xp_author", "xp_comment", "xp_keywords", "xp_subject", "xp_title", "y_resolution", "ycbcr_coefficients", "ycbcr_positioning", "ycbcr_sub_sampling"};
8
8
 
9
9
  void init_data();
10
10
 
11
- static VALUE rb_new(VALUE self, VALUE file_path);
12
- static VALUE rb_dump(VALUE self);
13
- static VALUE rb_value(VALUE self, VALUE key);
11
+ VALUE rb_new(VALUE self, VALUE file_path);
12
+ VALUE rb_dump(VALUE self);
13
+ VALUE rb_value(VALUE self, VALUE key);
14
14
 
15
- static void each_content(ExifContent *ec, void *user_data);
16
- static void each_entry(ExifEntry *, void *user_data);
17
- static VALUE process_value(VALUE *self_ptr, ExifIfd ifd, ExifTag tag, char *buf);
18
- static char* attr_string(ExifIfd ifd, ExifTag tag);
15
+ void each_content(ExifContent *ec, void *user_data);
16
+ void each_entry(ExifEntry *, void *user_data);
17
+ VALUE process_value(VALUE *self_ptr, ExifIfd ifd, ExifTag tag, char *buf);
18
+ const char* attr_string(ExifIfd ifd, ExifTag tag);
19
19
 
20
20
  #endif /* DATA_H */
@@ -1,3 +1,3 @@
1
1
  module Exif
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
@@ -5,10 +5,6 @@ describe Exif do
5
5
  @data = Exif::Data.new(File.expand_path('../sample.jpg', __FILE__))
6
6
  end
7
7
 
8
- # it '#dump' do
9
- # expect { @data.dump }.not_to raise_error
10
- # end
11
-
12
8
  it 'works' do
13
9
  expect(@data.model).to eq 'NIKON D600'
14
10
  expect(@data.image_width).to eq 4000
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exif
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jian Weihang
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-02 00:00:00.000000000 Z
11
+ date: 2015-01-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  description: Ruby EXIF reader written in C extension.
56
70
  email:
57
71
  - tonytonyjan@gmail.com
@@ -62,6 +76,7 @@ extra_rdoc_files: []
62
76
  files:
63
77
  - ".gitignore"
64
78
  - ".rspec"
79
+ - ".travis.yml"
65
80
  - Gemfile
66
81
  - LICENSE.txt
67
82
  - README.md
@@ -98,7 +113,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
98
113
  version: '0'
99
114
  requirements: []
100
115
  rubyforge_project:
101
- rubygems_version: 2.4.2
116
+ rubygems_version: 2.4.5
102
117
  signing_key:
103
118
  specification_version: 4
104
119
  summary: Ruby EXIF reader written in C extension.
@@ -106,3 +121,4 @@ test_files:
106
121
  - spec/exif_spec.rb
107
122
  - spec/sample.jpg
108
123
  - spec/spec_helper.rb
124
+ has_rdoc: