gmt 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/gmt/option.c +10 -2
- data/lib/gmt.rb +44 -42
- metadata +5 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 83004af94b065d8ed5dcc96880f9f92eb24d9587
|
4
|
+
data.tar.gz: c3c3b8a34eecbe5d65fdd434a9d79ed4fe3a2ebf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 203784ecd104c0412a2c327c10457c1508754574e9a5dfb6224cf708ef8f438e4460b1a2118e76f49d0f63cb5378949aacfab5074e9800e5070357f9818fe1f1
|
7
|
+
data.tar.gz: db221c721995a317e2dc78eb0e18247dc58c78006769715ded65aaea10ca96e24a5a7c1ecfffb86133983d3df027686f4997a007d4134515207e068af3375663
|
data/ext/gmt/option.c
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
option.c
|
3
3
|
|
4
4
|
GMT expects arguments to be in a linked-list format and provides
|
5
|
-
some library support for creating these. We here convert a
|
6
|
-
to this linked-list format.
|
5
|
+
some library support for creating these. We here convert a Ruby
|
6
|
+
array-of-pairs to this linked-list format.
|
7
7
|
*/
|
8
8
|
|
9
9
|
#include "option.h"
|
@@ -42,14 +42,18 @@ extern gmt_option_t* ruby_array_to_gmt_options(VALUE opts, void *session)
|
|
42
42
|
for (size_t i = 0 ; i < RARRAY_LEN(opts) ; i++)
|
43
43
|
{
|
44
44
|
VALUE opt = RARRAY_PTR(opts)[i];
|
45
|
+
|
45
46
|
if (TYPE(opt) != T_ARRAY)
|
46
47
|
rb_raise(rb_eArgError, "each option should be a array");
|
47
48
|
if (RARRAY_LEN(opt) != 2)
|
48
49
|
rb_raise(rb_eArgError, "each option should be a pair");
|
50
|
+
|
49
51
|
VALUE key = RARRAY_PTR(opt)[0];
|
50
52
|
char option_name = char_of_key(key);
|
53
|
+
|
51
54
|
VALUE arg = RARRAY_PTR(opt)[1];
|
52
55
|
const char *option_arg;
|
56
|
+
|
53
57
|
switch (TYPE(arg))
|
54
58
|
{
|
55
59
|
case T_STRING:
|
@@ -63,6 +67,7 @@ extern gmt_option_t* ruby_array_to_gmt_options(VALUE opts, void *session)
|
|
63
67
|
default:
|
64
68
|
rb_raise(rb_eArgError, "option argument should be string or nil");
|
65
69
|
}
|
70
|
+
|
66
71
|
gmt_opts = append_option(session, option_name, option_arg, gmt_opts);
|
67
72
|
}
|
68
73
|
|
@@ -79,9 +84,12 @@ extern gmt_option_t* append_inputs_to_gmt_options(VALUE files,
|
|
79
84
|
for (size_t i = 0 ; i < RARRAY_LEN(files) ; i++)
|
80
85
|
{
|
81
86
|
VALUE file = RARRAY_PTR(files)[i];
|
87
|
+
|
82
88
|
if (TYPE(file) != T_STRING)
|
83
89
|
rb_raise(rb_eArgError, "each input should be a string");
|
90
|
+
|
84
91
|
const char *option_arg = StringValueCStr(file);
|
92
|
+
|
85
93
|
gmt_opts = append_option(session, '<', option_arg, gmt_opts);
|
86
94
|
}
|
87
95
|
|
data/lib/gmt.rb
CHANGED
@@ -99,11 +99,10 @@ class GMT
|
|
99
99
|
# @see http://gmt.soest.hawaii.edu/doc/latest/$1.html
|
100
100
|
def wrapper_ps(method)
|
101
101
|
define_method(method) do |*args, options|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
array_options(options))
|
102
|
+
coerce_string_arguments!(args)
|
103
|
+
coerce_postscript_options!(options)
|
104
|
+
coerce_append_option!(options)
|
105
|
+
self.send(api_function(method), *args, options_as_pairs(options))
|
107
106
|
end
|
108
107
|
end
|
109
108
|
|
@@ -115,10 +114,9 @@ class GMT
|
|
115
114
|
# @see http://gmt.soest.hawaii.edu/doc/latest/$1.html
|
116
115
|
def wrapper_other(method)
|
117
116
|
define_method(method) do |*args, options|
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
array_options(options))
|
117
|
+
coerce_string_arguments!(args)
|
118
|
+
coerce_append_option!(options)
|
119
|
+
self.send(api_function(method), *args, options_as_pairs(options))
|
122
120
|
end
|
123
121
|
end
|
124
122
|
|
@@ -132,62 +130,66 @@ class GMT
|
|
132
130
|
[method.to_s, 'c'].join('_').to_sym
|
133
131
|
end
|
134
132
|
|
135
|
-
# convert
|
133
|
+
# convert arguments to strings
|
136
134
|
|
137
|
-
def
|
138
|
-
|
135
|
+
def coerce_string_arguments!(arguments)
|
136
|
+
arguments.map!(&:to_s)
|
137
|
+
end
|
138
|
+
|
139
|
+
# for GMT modules which produce PostScript, convert the
|
140
|
+
# convenience options (:position, :file) to the hash
|
141
|
+
# equivalent of the -K, -O options, and the creation of
|
142
|
+
# or appending to the PostScript output file
|
143
|
+
|
144
|
+
def coerce_postscript_options!(options)
|
145
|
+
file = options.delete(:file)
|
146
|
+
position = options.delete(:position)
|
147
|
+
if file && position then
|
148
|
+
file_options =
|
149
|
+
case position
|
150
|
+
when :first, 'first'
|
151
|
+
{ :K => nil, :> => file }
|
152
|
+
when :middle, 'middle'
|
153
|
+
{ :O => nil, :K => nil, :>> => file }
|
154
|
+
when :last, 'last'
|
155
|
+
{ :O => nil, :>> => file }
|
156
|
+
else
|
157
|
+
raise ArgumentError, 'position should be :first, :middle or :last'
|
158
|
+
end
|
159
|
+
options.merge!(file_options)
|
160
|
+
end
|
139
161
|
end
|
140
162
|
|
141
163
|
# handle the :>> option
|
142
164
|
|
143
|
-
def
|
165
|
+
def coerce_append_option!(options)
|
144
166
|
if file = options.delete(:>>) then
|
145
167
|
options[:>] = '>' + file
|
146
168
|
end
|
147
169
|
end
|
148
170
|
|
171
|
+
# convert non-nil argument to string
|
172
|
+
|
173
|
+
def string_unless_nil(argument)
|
174
|
+
argument.to_s unless argument.nil?
|
175
|
+
end
|
176
|
+
|
149
177
|
# convert the options hash to an array of pairs
|
150
178
|
|
151
|
-
def
|
179
|
+
def options_as_pairs(options)
|
152
180
|
options.inject(Array.new) do |result, pair|
|
153
181
|
key, values = pair
|
154
182
|
if values.respond_to? :each then
|
155
183
|
values.each do |value|
|
156
|
-
result << [key, value]
|
184
|
+
result << [key, string_unless_nil(value)]
|
157
185
|
end
|
158
186
|
else
|
159
|
-
result << [key, values]
|
187
|
+
result << [key, string_unless_nil(values)]
|
160
188
|
end
|
161
189
|
result
|
162
190
|
end
|
163
191
|
end
|
164
192
|
|
165
|
-
# for GMT modules which produce PostScript, convert the
|
166
|
-
# convenience options (:position, :file) to the hash
|
167
|
-
# equivalent of the -K, -O options, and the creation of
|
168
|
-
# or appending to the PostScript output file
|
169
|
-
|
170
|
-
def postscript_options(options)
|
171
|
-
file = options.delete(:file)
|
172
|
-
position = options.delete(:position)
|
173
|
-
if file && position then
|
174
|
-
file_options =
|
175
|
-
case position
|
176
|
-
when :first
|
177
|
-
{ :K => nil, :> => file }
|
178
|
-
when :middle
|
179
|
-
{ :O => nil, :K => nil, :>> => file }
|
180
|
-
when :last
|
181
|
-
{ :O => nil, :>> => file }
|
182
|
-
else
|
183
|
-
raise ArguemntError, 'position should be :first, :middle or :last'
|
184
|
-
end
|
185
|
-
options.merge(file_options)
|
186
|
-
else
|
187
|
-
options
|
188
|
-
end
|
189
|
-
end
|
190
|
-
|
191
193
|
public
|
192
194
|
|
193
195
|
# @!group Filtering of 1-D and 2-D Data
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gmt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- J.J. Green
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-06-
|
11
|
+
date: 2016-06-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -67,10 +67,8 @@ dependencies:
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0.8'
|
69
69
|
description: |
|
70
|
-
A Ruby extension for the Generic Mapping Tools (
|
70
|
+
A Ruby extension for the Generic Mapping Tools (GMT5)
|
71
71
|
cartographic toolset (work-in-progress).
|
72
|
-
|
73
|
-
Requires the GMT5 development libraries.
|
74
72
|
email: j.j.green@gmx.co.uk
|
75
73
|
executables: []
|
76
74
|
extensions:
|
@@ -102,7 +100,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
102
100
|
- !ruby/object:Gem::Version
|
103
101
|
version: '0'
|
104
102
|
requirements:
|
105
|
-
-
|
103
|
+
- GMT5 development libraries
|
104
|
+
- ghostscript (for tests)
|
106
105
|
rubyforge_project:
|
107
106
|
rubygems_version: 2.2.2
|
108
107
|
signing_key:
|