numo-gnuplot 0.1.6 → 0.1.7

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/numo/gnuplot.rb +69 -42
  3. metadata +3 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 23318f9476abeabe7f3b1cf973750b8a6e4a84b0
4
- data.tar.gz: 94534cf81c5e11030deddebfa2ff4507dc35ee2b
3
+ metadata.gz: e87eaed8bca276f54c5fe06d2e009ceeb3a5355a
4
+ data.tar.gz: 6f26b92d3cb90a633703b4392dbd0adb60ff070b
5
5
  SHA512:
6
- metadata.gz: 2f9e70d4c27142494d857a0fba1ae7c0a3bdd8d9f31095a18c8a08621d309275067224a519eac14218c168a5a8b684ea559d0c99d9405737d5b7be6bb6894632
7
- data.tar.gz: a90ac0f94296c4828317087d408b64c408233cd7c84ed9da8956ca9fc29add975712d2af9378fa3cb89340d9ea509831825f40758f1d1c12ecf6c007ccae0da6
6
+ metadata.gz: 2c6aaed522a0cdd5386afc91a40f26c3d51030d5aa31b3f9f3e535febf0abd6895aea67be8bdede43774ffae97d8b4f7590b93098b12854de12b4bb0b8a5b0b8
7
+ data.tar.gz: e6d06e0c9b00554eb7194b5284ea2c2c5f960810a2dfb3a652e6006028c95ea88f57f1b2ffd50688465cd1a1ce1517dcc308f0fc3416d219879825b31d8cc04b
data/lib/numo/gnuplot.rb CHANGED
@@ -16,7 +16,7 @@ module Numo
16
16
 
17
17
  class Gnuplot
18
18
 
19
- VERSION = "0.1.6"
19
+ VERSION = "0.1.7"
20
20
  POOL = []
21
21
  DATA_FORMAT = "%.7g"
22
22
 
@@ -116,7 +116,7 @@ class Gnuplot
116
116
  case a
117
117
  when Hash
118
118
  a.each do |k,v|
119
- run "#{cmd} #{KvItem.new(k,v)}"
119
+ run "#{cmd} #{OptArg.parse_kv(k,v)}"
120
120
  end
121
121
  else
122
122
  run "#{cmd} #{a}"
@@ -150,7 +150,7 @@ class Gnuplot
150
150
  # pause 'mouse'
151
151
  # pause mouse:%w[keypress button1 button2 button3 close any]
152
152
  def pause(*args)
153
- send_cmd("pause #{OptsToS.new(*args)}").join.chomp
153
+ send_cmd("pause #{OptArg.parse(*args)}").join.chomp
154
154
  nil
155
155
  end
156
156
 
@@ -264,6 +264,8 @@ class Gnuplot
264
264
  "gnuplot"
265
265
  end
266
266
 
267
+ # private methods
268
+
267
269
  def run(s,data=nil)
268
270
  res = send_cmd(s,data)
269
271
  if !res.empty?
@@ -327,25 +329,19 @@ class Gnuplot
327
329
 
328
330
 
329
331
  # @private
330
- class OptsToS # :nodoc: all
331
- def initialize(*opts)
332
- @opts = opts
333
- end
332
+ module OptArg # :nodoc: all
334
333
 
335
- def to_s
336
- opts_to_s(*@opts)
337
- end
334
+ module_function
338
335
 
339
- def opts_to_s(*opts)
340
- #p opts
336
+ def parse(*opts)
341
337
  sep = ","
342
338
  opts.map do |opt|
343
339
  sep = " " if !opt.kind_of?(Numeric)
344
340
  case opt
345
341
  when Array
346
- opt.map{|v| "#{opts_to_s(*v)}"}.join(sep)
342
+ opt.map{|v| "#{parse(*v)}"}.join(sep)
347
343
  when Hash
348
- opt.map{|k,v| KvItem.new(k,v).to_s}.compact.join(" ")
344
+ opt.map{|k,v| parse_kv(k,v)}.compact.join(" ")
349
345
  when Range
350
346
  "[#{opt.begin}:#{opt.end}]"
351
347
  else
@@ -353,17 +349,17 @@ class Gnuplot
353
349
  end
354
350
  end.join(sep)
355
351
  end
356
- end
357
352
 
358
- # @private
359
- class KvItem # :nodoc: all
360
353
  NEED_QUOTE = %w[
361
354
  background
362
355
  cblabel
363
356
  clabel
357
+ commentschars
364
358
  dashtype
359
+ decimalsign
365
360
  dt
366
361
  font
362
+ fontpath
367
363
  format
368
364
  format_cb
369
365
  format_x
@@ -372,8 +368,14 @@ class Gnuplot
372
368
  format_y
373
369
  format_y2
374
370
  format_z
371
+ locale
372
+ logfile
373
+ missing
375
374
  output
375
+ print
376
376
  rgb
377
+ separator
378
+ table
377
379
  timefmt
378
380
  title
379
381
  x2label
@@ -381,30 +383,54 @@ class Gnuplot
381
383
  y2label
382
384
  ylabel
383
385
  zlabel
384
- ].map{|x| x.to_sym}
385
-
386
- def initialize(k,v)
387
- @k = k
388
- @v = v
389
- end
390
-
391
- def need_quote?(k)
392
- NEED_QUOTE.any? do |q|
393
- /^#{k}/ =~ q
394
- end
395
- end
396
-
397
- def to_s
398
- kv_to_s(@k,@v)
399
- end
400
-
401
- def kv_to_s(k,v)
402
- if need_quote?(k)
386
+ cb
387
+ x
388
+ xy
389
+ x2
390
+ y
391
+ y2
392
+ z
393
+ ]
394
+
395
+ def NEED_QUOTE.===(k)
396
+ re = /^#{k}/
397
+ any?{|q| re =~ q}
398
+ end
399
+
400
+ def parse_kv(k,v)
401
+ case k.to_sym
402
+ when :at
403
+ case v
404
+ when String
405
+ "#{k} #{v}" # not quote
406
+ when Array
407
+ "#{k} #{v.map{|x|(x.kind_of? String) ? x.inspect : x.to_s}.join(",")}"
408
+ else
409
+ "#{k} #{parse(v)}"
410
+ end
411
+ when :label
403
412
  case v
404
413
  when String
405
414
  "#{k} #{v.inspect}"
406
415
  when Array
407
- "#{k} #{v[0].inspect} #{OptsToS.new(*v[1..-1])}"
416
+ if v[0].kind_of?(Integer) && v[1].kind_of?(String)
417
+ "#{k} #{parse(v[0],v[1].inspect,*v[2..-1])}"
418
+ elsif v[0].kind_of?(String)
419
+ "#{k} #{parse(v[0].inspect,*v[1..-1])}"
420
+ else
421
+ "#{k} #{parse(*v)}"
422
+ end
423
+ else
424
+ "#{k} #{parse(v)}"
425
+ end
426
+ when NEED_QUOTE
427
+ case v
428
+ when String
429
+ "#{k.to_s.sub(/_/,' ')} #{v.inspect}"
430
+ when Array
431
+ "#{k} #{v[0].inspect} #{parse(*v[1..-1])}"
432
+ else
433
+ "#{k} #{parse(v)}"
408
434
  end
409
435
  else
410
436
  case v
@@ -420,14 +446,15 @@ class Gnuplot
420
446
  if /^#{k}/ =~ "using"
421
447
  "#{k} #{v.join(':')}"
422
448
  else
423
- "#{k} #{OptsToS.new(*v)}"
449
+ "#{k} #{parse(*v)}"
424
450
  end
425
451
  else
426
- "#{k} #{OptsToS.new(v)}"
452
+ "#{k} #{parse(v)}"
427
453
  end
428
454
  end
429
455
  end
430
- end # KvItem
456
+
457
+ end # OptArg
431
458
 
432
459
 
433
460
  # @private
@@ -499,9 +526,9 @@ class Gnuplot
499
526
  def cmd_str
500
527
  parse_items
501
528
  if @function
502
- "%s %s" % [@function, OptsToS.new(*@options)]
529
+ "%s %s" % [@function, OptArg.parse(*@options)]
503
530
  else
504
- "%s %s" % [@data.cmd_str, OptsToS.new(*@options)]
531
+ "%s %s" % [@data.cmd_str, OptArg.parse(*@options)]
505
532
  end
506
533
  end
507
534
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: numo-gnuplot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masahiro TANAKA
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-11-28 00:00:00.000000000 Z
11
+ date: 2016-12-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -82,9 +82,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
82
82
  version: '0'
83
83
  requirements: []
84
84
  rubyforge_project:
85
- rubygems_version: 2.5.1
85
+ rubygems_version: 2.6.8
86
86
  signing_key:
87
87
  specification_version: 4
88
88
  summary: Gnuplot interface for Ruby.
89
89
  test_files: []
90
- has_rdoc: