gmt 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +5 -5
  2. data/lib/gmt.rb +41 -29
  3. metadata +17 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: c627752c3767952e0ffcf4fa5d8974091aee1ca7
4
- data.tar.gz: 744c75011fb4a4de173d3f61ff9f3f3c975c5377
2
+ SHA256:
3
+ metadata.gz: 84cd995c50a9a918aadf655f83b8be85f297f391f456cd4fe1833db79367bfb0
4
+ data.tar.gz: 7f88fb3453566749affca18d1ec2afe0242e5ff2b50edfd34795572213a798da
5
5
  SHA512:
6
- metadata.gz: 9bb70c503aea29a948bae0f133f3a1fb3259ee8521661c2b5933c0a669b35c2eadb467cc6c26bb439c4725ad7c551e91a445052ac53fa5c012ac49bdefec8584
7
- data.tar.gz: 999bbe921bf36319bccbaedf237f69216465100d5a39df8561b38d91fdfd80553cc57cfcebf7b573fe872f60821185752c2bf18b6205347dac4858ad0674dc9f
6
+ metadata.gz: c4d22fae62200c0976471c93f5b9dadbfafe7368b14e6ef5b344d0f77267d74c28e6db459e20b4740991792ed3545267870767e9048a33802736844253b0d0ec
7
+ data.tar.gz: 2f59eea2cead5e5383ebf5ffcb828a4d1e6c3f5913b44682dfcd6c52a118f24d3f111da1af9ebf9eff5c7b36f5ed74f25ce7e11e4c1adf945a4e3a6487c466a2
data/lib/gmt.rb CHANGED
@@ -56,7 +56,7 @@
56
56
  #
57
57
  # gmt = GMT.new
58
58
  # gmt.makecpt('depths.txt',
59
- # :C => 'gebco', :i => 2, :Z => nil, :E => 24, :> => 'my_depths.cpt')
59
+ # C: 'gebco', i: 2, Z: nil, E: 24, :> => 'my_depths.cpt')
60
60
  #
61
61
  # Note that
62
62
  # - the argument(s) (the input file <code>'depths.txt'</code>) preceed(s)
@@ -67,6 +67,15 @@
67
67
  # - the output redirection is _also_ treated as hash option, with key
68
68
  # <code>:></code> and value which is the output file.
69
69
  #
70
+ # The options without argument can also be specifed by a symbol
71
+ # _argument_, but recall that arguments must proceed the options hash,
72
+ # so the above would be
73
+ #
74
+ # gmt.makecpt('depths.txt',
75
+ # :Z, C: 'gebco', i: 2, E: 24, :> => 'my_depths.cpt')
76
+ #
77
+ # using this format.
78
+ #
70
79
  # == PostScript functions
71
80
  #
72
81
  # When creating complex PostScript plots one needs to make several calls to
@@ -82,10 +91,10 @@
82
91
  # So one might write
83
92
  #
84
93
  # gmt = GMT.new
85
- # gmt.psbasemap( …, :file => 'map.ps', :position => :first)
86
- # gmt.pstext( …, :file => 'map.ps', :position => :middle)
87
- # gmt.psxy( …, :file => 'map.ps', :position => :middle)
88
- # gmt.pslogo( …, :file => 'map.ps', :position => :last)
94
+ # gmt.psbasemap( …, file: 'map.ps', position: :first)
95
+ # gmt.pstext( …, file: 'map.ps', position: :middle)
96
+ # gmt.psxy( …, file: 'map.ps', position: :middle)
97
+ # gmt.pslogo( …, file: 'map.ps', position: :last)
89
98
  #
90
99
  class GMT
91
100
 
@@ -135,11 +144,11 @@ class GMT
135
144
  # @return [Boolean] +true+ on success
136
145
  # @see http://gmt.soest.hawaii.edu/doc/latest/$1.html
137
146
  def wrapper_ps(method)
138
- define_method(method) do |*args, **options|
139
- coerce_string_arguments!(args)
140
- coerce_postscript_options!(options)
141
- coerce_append_option!(options)
142
- self.send(api_function(method), *args, options_as_pairs(options))
147
+ define_method(method) do |*args, **opts|
148
+ args, opts = nilargify(args, opts)
149
+ coerce_postscript_options!(opts)
150
+ coerce_append_option!(opts)
151
+ self.send(api_function(method), *args, options_as_pairs(opts))
143
152
  end
144
153
  end
145
154
 
@@ -150,10 +159,10 @@ class GMT
150
159
  # @return [Boolean] +true+ on success
151
160
  # @see http://gmt.soest.hawaii.edu/doc/latest/$1.html
152
161
  def wrapper_other(method)
153
- define_method(method) do |*args, **options|
154
- coerce_string_arguments!(args)
155
- coerce_append_option!(options)
156
- self.send(api_function(method), *args, options_as_pairs(options))
162
+ define_method(method) do |*args, **opts|
163
+ args, opts = nilargify(args, opts)
164
+ coerce_append_option!(opts)
165
+ self.send(api_function(method), *args, options_as_pairs(opts))
157
166
  end
158
167
  end
159
168
 
@@ -176,10 +185,13 @@ class GMT
176
185
  [method.to_s, 'c'].join('_').to_sym
177
186
  end
178
187
 
179
- # convert arguments to strings
188
+ # convert symbol arguments to nil-valued options, so
189
+ # nilargify(['a', :b], {c: 'd'}) -> [['a'], {b: nil, c: 'd'}]
180
190
 
181
- def coerce_string_arguments!(arguments)
182
- arguments.map!(&:to_s)
191
+ def nilargify(args, opts)
192
+ syms, strs = args.partition { |x| x.is_a? Symbol }
193
+ syms.each { |sym| opts[sym] = nil }
194
+ [strs, opts]
183
195
  end
184
196
 
185
197
  # for GMT modules which produce PostScript, convert the
@@ -187,11 +199,11 @@ class GMT
187
199
  # equivalent of the -K, -O options, and the creation of
188
200
  # or appending to the PostScript output file
189
201
 
190
- def coerce_postscript_options!(options)
191
- file = options.delete(:file)
192
- position = options.delete(:position)
202
+ def coerce_postscript_options!(opts)
203
+ file = opts.delete(:file)
204
+ position = opts.delete(:position)
193
205
  if file && position then
194
- file_options =
206
+ file_opts =
195
207
  case position
196
208
  when :first, 'first'
197
209
  { :K => nil, :> => file }
@@ -202,28 +214,28 @@ class GMT
202
214
  else
203
215
  raise ArgumentError, 'position should be :first, :middle or :last'
204
216
  end
205
- options.merge!(file_options)
217
+ opts.merge!(file_opts)
206
218
  end
207
219
  end
208
220
 
209
221
  # handle the :>> option
210
222
 
211
- def coerce_append_option!(options)
212
- if file = options.delete(:>>) then
213
- options[:>] = '>' + file
223
+ def coerce_append_option!(opts)
224
+ if file = opts.delete(:>>) then
225
+ opts[:>] = '>' + file
214
226
  end
215
227
  end
216
228
 
217
229
  # convert non-nil argument to string
218
230
 
219
- def string_unless_nil(argument)
220
- argument.to_s unless argument.nil?
231
+ def string_unless_nil(arg)
232
+ arg.to_s unless arg.nil?
221
233
  end
222
234
 
223
235
  # convert the options hash to an array of pairs
224
236
 
225
- def options_as_pairs(options)
226
- options.each_with_object(Array.new) do |(key, values), result|
237
+ def options_as_pairs(opts)
238
+ opts.each_with_object(Array.new) do |(key, values), result|
227
239
  if values.respond_to? :each then
228
240
  values.each do |value|
229
241
  result << [key, string_unless_nil(value)]
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.1.4
4
+ version: 0.1.5
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: 2018-06-07 00:00:00.000000000 Z
11
+ date: 2018-08-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 0.2.4
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake-compiler
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1'
83
97
  description: |
84
98
  A Ruby extension for the Generic Mapping Tools (GMT5)
85
99
  cartographic toolset.
@@ -118,7 +132,7 @@ requirements:
118
132
  - GMT5 installation (test)
119
133
  - ghostscript (test)
120
134
  rubyforge_project:
121
- rubygems_version: 2.5.2.1
135
+ rubygems_version: 2.7.6
122
136
  signing_key:
123
137
  specification_version: 4
124
138
  summary: Generic Mapping Tools (GMT)