ruby-grads 1.0.0 → 1.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9d221bddb4c3b9dbdf46348691daac803a5194520580bb4ee0068aa1ef3aa24d
4
- data.tar.gz: 25d393d1683f63fa60857831f16209dee5105a897ca96fd4dbe86e9fb02450a6
3
+ metadata.gz: b0b6eae68b2dc36f40e411ff360d69854c620a8361df085b4e72644ea9d9656c
4
+ data.tar.gz: 30df69dc58078253b892ca61498c15149286e54ba3488b56acfbc86ee8e60b69
5
5
  SHA512:
6
- metadata.gz: fc9e107a70200bd51ef5170743fc16f6216af003bfd4f72cfa02b12ff2d1d866365fd86d7c3daeae3cd922d0f882f1cc1cf75b24e4e3dcc8f3a2b63c901d29b8
7
- data.tar.gz: d1a255347549db953a31fa9f8898b1b5551e889599600b3a525376a04a6360cc5dcf5912a3deca77e3a443093a76393d6eab08d4990d8ec870575413ddc4019e
6
+ metadata.gz: a96c6334bc2f1533563f8cb629e98e026b30ebc206ac32d9e1ebba7f59613b91a4bfc725443e4f69f8eb3527057d8e6f2a0377359d9013f7334b33e0be0af439
7
+ data.tar.gz: 926e01734a641fc5184100f2aaff85dec01295f24a133a90bab23b8f870829eb2c2fe2ae816215400219b22a838a69223028fb578a3f15e9b1ec32fc8708c125
data/README.md CHANGED
@@ -15,7 +15,6 @@ Execute grads command sequence
15
15
  GrADS#exec filename
16
16
  GrADS#exec_string text
17
17
 
18
-
19
18
  ### CArray -> GrADS variable
20
19
 
21
20
  Write block as GrADS::Gridded::Writer definition
@@ -27,5 +26,72 @@ Write block as GrADS::Gridded::Writer definition
27
26
 
28
27
  GrADS#save_image(filename, size="640", dpi=300)
29
28
 
29
+ ### parea, vpage
30
+
31
+ parea(x1, x2, y1, y2) { |area|
32
+
33
+ }
34
+
35
+ vpage(x1, x2, y1, y2) { |area|
36
+
37
+ }
38
+
39
+ ### plot
40
+
41
+ plot (expr, type) {
42
+ ... CONFIG ...
43
+ }
44
+
45
+ ### axis
46
+
47
+ axis (dummy_expr) {
48
+ ... CONFIG ...
49
+ }
50
+
51
+ #### axis_xtime
52
+
53
+ require "grads/lib/axis_xtime"
54
+ axis_xtime (dummy_expr, OPTIONS) {
55
+ ... CONFIG__
56
+ }
57
+
58
+ OPTIONS:
59
+ offset: TIME OFFSET in seconds
60
+ skip: TIME axis interval to skip labels
61
+
62
+ #### time_skip
63
+
64
+ Use with axis_xtime to calculate skip for x-time in vector plot.
65
+
66
+ skp = time_skip()
67
+ plot("skip(u,1,#{skp});v", :vector) {
68
+ ...
69
+ }
70
+
71
+ ### axis label
72
+
73
+ draw_ylabel(text, area: area, color: 1, just: "bc", thickness: 3, rot 0, offset: STRING, side: "l")
74
+ draw_xlabel(text, area: area, color: 1, just: "bc", thickness: 3, rot: 0, offset: STRING, side: "b")
75
+
76
+ ### COLOR NAMES
77
+
78
+ COLOR(COLOR_NAME)
30
79
 
80
+ "background" => 0,
81
+ "foregraound" => 1,
82
+ "red" => 2,
83
+ "green" => 3,
84
+ "dark blue" => 4,
85
+ "light blue" => 5,
86
+ "magenta" => 6,
87
+ "yellow" => 7,
88
+ "orange" => 8,
89
+ "purple" => 9,
90
+ "yellow green" => 10,
91
+ "medium blue" => 11,
92
+ "dark yellow" => 12,
93
+ "aqua" => 13,
94
+ "dark purple" => 14,
95
+ "gray" => 15,
96
+
31
97
 
data/Rakefile ADDED
@@ -0,0 +1,14 @@
1
+
2
+ GEMSPEC = "ruby-grads.gemspec"
3
+
4
+ # gem install #{spec.full_name}.gem -- --with-gnuplotting-palette
5
+
6
+ task :install do
7
+ spec = eval File.read(GEMSPEC)
8
+ system %{
9
+ gem build #{GEMSPEC}; gem install --no-document #{spec.full_name}.gem
10
+ }
11
+ end
12
+
13
+ require 'rspec/core/rake_task'
14
+ RSpec::Core::RakeTask.new
data/bin/ncdef2ctl ADDED
@@ -0,0 +1,107 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "grads"
4
+ require "stringio"
5
+
6
+ def scan_vars (vars)
7
+ items = {:namelist=>[]}
8
+ nvars = nil
9
+ vars.each_line do |line|
10
+ case line
11
+ when /\A\s*\*/, /\A\s*\Z/
12
+ next
13
+ when /\A\s*vars\s+(\d+)/i
14
+ nvars = $1.to_i
15
+ when /\A\s*endvars/i
16
+ break
17
+ when /\A\s*(\w+)\s*(.*)\Z/
18
+ name = $1
19
+ items[:namelist].push(name)
20
+ items[name] = line
21
+ end
22
+ end
23
+ if items[:namelist].size != nvars
24
+ raise "invalid vars number"
25
+ end
26
+ return items
27
+ end
28
+
29
+ def scan_control_file (ctltxt)
30
+ io = StringIO.new(ctltxt)
31
+ items = {}
32
+ buffer = ""
33
+ while line = io.gets
34
+ case line
35
+ when /\A\s*\*/, /\A\s*\Z/
36
+ next
37
+ when /\A\s*(dtype|dset|title|undef|options|pdef|xdef|ydef|zdef|tdef|vectorpairs)\s*(.*)\Z/i
38
+ name = $1.downcase
39
+ if items[name]
40
+ items[name] = [items[name]]
41
+ items[name] << $2.rstrip
42
+ buffer = items[name].last
43
+ else
44
+ items[name] = $2.rstrip
45
+ buffer = items[name]
46
+ end
47
+ when /\A\s*(chsub|fileheader|theader|tailerbyts|xyheader)\s*(.*)\Z/i
48
+ raise "#{$1} entry is not supported, sorry"
49
+ when /\A\s*vars/
50
+ vars = scan_vars(line + io.read)
51
+ break
52
+ else
53
+ line = line.chomp.sub(/\\\z/,'').rstrip
54
+ buffer.replace(buffer + " " + line)
55
+ end
56
+ end
57
+ return items, vars
58
+ end
59
+
60
+
61
+ def levels2linear (axis, line)
62
+ list = line.split(/\s+/)
63
+ num = list.shift.to_i
64
+ type = list.shift
65
+ data = list
66
+ case type
67
+ when "levels"
68
+ case axis
69
+ when "tdef"
70
+ return axis + " " + line
71
+ else
72
+ data = data.to_ca.double
73
+ diff = (data[1..-1]-data[0..-2]).mean
74
+ return format("%s %i %s %f %f", axis, num, "linear", data[0], diff)
75
+ end
76
+ when "linear"
77
+ return axis + " " + line
78
+ else
79
+ raise "invalid #{defname} definition"
80
+ end
81
+
82
+ end
83
+
84
+ GrADS.start("grads -b") {
85
+
86
+ sdfopen(ARGV[0])
87
+
88
+ ctl = query(:ctlinfo)
89
+
90
+ header, var = scan_control_file(ctl)
91
+
92
+ header.keys.each do |key|
93
+ case key
94
+ when "xdef", "ydef", "zdef", "tdef"
95
+ puts levels2linear(key, header[key])
96
+ else
97
+ puts "#{key} #{header[key]}"
98
+ end
99
+ end
100
+
101
+ puts "vars #{var[:namelist].size}"
102
+ var[:namelist].each do |name|
103
+ puts var[name]
104
+ end
105
+ puts "endvars"
106
+
107
+ }