ctioga2 0.0 → 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.
- data/Changelog +25 -1
- data/lib/ctioga2/commands/commands.rb +13 -2
- data/lib/ctioga2/commands/doc/doc.rb +13 -17
- data/lib/ctioga2/commands/doc/documentation-commands.rb +14 -1
- data/lib/ctioga2/commands/doc/help.rb +136 -25
- data/lib/ctioga2/commands/doc/html.rb +56 -4
- data/lib/ctioga2/commands/doc/introspection.rb +45 -9
- data/lib/ctioga2/commands/doc/man.rb +7 -5
- data/lib/ctioga2/commands/doc/markup.rb +39 -12
- data/lib/ctioga2/commands/doc/wordwrap.rb +70 -0
- data/lib/ctioga2/commands/general-commands.rb +7 -4
- data/lib/ctioga2/commands/general-types.rb +27 -12
- data/lib/ctioga2/commands/interpreter.rb +2 -2
- data/lib/ctioga2/commands/parsers/command-line.rb +9 -5
- data/lib/ctioga2/commands/parsers/file.rb +5 -3
- data/lib/ctioga2/commands/type.rb +10 -3
- data/lib/ctioga2/commands/variables.rb +2 -2
- data/lib/ctioga2/data/backends/backend.rb +17 -15
- data/lib/ctioga2/data/backends/backends.rb +2 -2
- data/lib/ctioga2/data/backends/backends/gnuplot.rb +20 -5
- data/lib/ctioga2/data/backends/backends/math.rb +2 -2
- data/lib/ctioga2/data/backends/backends/text.rb +112 -17
- data/lib/ctioga2/data/backends/description.rb +10 -11
- data/lib/ctioga2/data/datacolumn.rb +73 -14
- data/lib/ctioga2/data/dataset.rb +305 -9
- data/lib/ctioga2/data/filters.rb +49 -1
- data/lib/ctioga2/data/indexed-dtable.rb +137 -0
- data/lib/ctioga2/data/point.rb +98 -7
- data/lib/ctioga2/data/stack.rb +98 -21
- data/lib/ctioga2/graphics/coordinates.rb +19 -2
- data/lib/ctioga2/graphics/elements.rb +12 -2
- data/lib/ctioga2/graphics/elements/containers.rb +14 -2
- data/lib/ctioga2/graphics/elements/contour.rb +67 -0
- data/lib/ctioga2/graphics/elements/curve2d.rb +103 -42
- data/lib/ctioga2/graphics/elements/element.rb +12 -2
- data/lib/ctioga2/graphics/elements/gradient-region.rb +94 -0
- data/lib/ctioga2/graphics/elements/parametric2d.rb +172 -0
- data/lib/ctioga2/graphics/elements/primitive.rb +37 -21
- data/lib/ctioga2/graphics/elements/region.rb +143 -0
- data/lib/ctioga2/graphics/elements/subplot.rb +92 -32
- data/lib/ctioga2/graphics/elements/tangent.rb +99 -0
- data/lib/ctioga2/graphics/elements/xyz-map.rb +126 -0
- data/lib/ctioga2/graphics/generator.rb +91 -6
- data/lib/ctioga2/graphics/legends.rb +26 -21
- data/lib/ctioga2/graphics/legends/area.rb +8 -8
- data/lib/ctioga2/graphics/legends/items.rb +5 -5
- data/lib/ctioga2/graphics/legends/storage.rb +4 -2
- data/lib/ctioga2/graphics/root.rb +24 -2
- data/lib/ctioga2/graphics/styles.rb +8 -0
- data/lib/ctioga2/graphics/styles/axes.rb +49 -23
- data/lib/ctioga2/graphics/styles/base.rb +2 -2
- data/lib/ctioga2/graphics/styles/carrays.rb +9 -2
- data/lib/ctioga2/graphics/styles/colormap.rb +272 -0
- data/lib/ctioga2/graphics/styles/curve.rb +64 -4
- data/lib/ctioga2/graphics/styles/drawable.rb +68 -9
- data/lib/ctioga2/graphics/styles/errorbar.rb +73 -0
- data/lib/ctioga2/graphics/styles/factory.rb +133 -17
- data/lib/ctioga2/graphics/styles/gradients.rb +60 -0
- data/lib/ctioga2/graphics/styles/location.rb +64 -0
- data/lib/ctioga2/graphics/styles/map-axes.rb +164 -0
- data/lib/ctioga2/graphics/styles/plot.rb +165 -62
- data/lib/ctioga2/graphics/styles/sets.rb +14 -1
- data/lib/ctioga2/graphics/styles/texts.rb +44 -34
- data/lib/ctioga2/graphics/subplot-commands.rb +94 -6
- data/lib/ctioga2/graphics/types.rb +113 -35
- data/lib/ctioga2/graphics/types/bijection.rb +3 -3
- data/lib/ctioga2/graphics/types/boundaries.rb +120 -1
- data/lib/ctioga2/graphics/types/dimensions.rb +8 -1
- data/lib/ctioga2/graphics/types/grid.rb +196 -0
- data/lib/ctioga2/graphics/types/location.rb +228 -0
- data/lib/ctioga2/graphics/types/point.rb +2 -2
- data/lib/ctioga2/log.rb +18 -18
- data/lib/ctioga2/metabuilder/type.rb +15 -3
- data/lib/ctioga2/metabuilder/types.rb +2 -2
- data/lib/ctioga2/metabuilder/types/coordinates.rb +13 -1
- data/lib/ctioga2/metabuilder/types/data.rb +50 -0
- data/lib/ctioga2/metabuilder/types/generic.rb +60 -0
- data/lib/ctioga2/metabuilder/types/lists.rb +53 -16
- data/lib/ctioga2/metabuilder/types/styles.rb +26 -45
- data/lib/ctioga2/plotmaker.rb +91 -20
- data/lib/ctioga2/postprocess.rb +8 -8
- data/lib/ctioga2/utils.rb +23 -4
- metadata +107 -75
- data/lib/ctioga2/data/merge.rb +0 -43
|
@@ -16,24 +16,41 @@ require 'ctioga2/commands/commands'
|
|
|
16
16
|
|
|
17
17
|
module CTioga2
|
|
18
18
|
|
|
19
|
-
Version::register_svn_info('$Revision:
|
|
19
|
+
Version::register_svn_info('$Revision: 238 $', '$Date: 2011-01-23 21:58:08 +0100 (Sun, 23 Jan 2011) $')
|
|
20
20
|
|
|
21
21
|
module Commands
|
|
22
22
|
|
|
23
|
-
# The base of the 'self-documentation' of CTioga2
|
|
24
23
|
module Documentation
|
|
25
24
|
|
|
26
25
|
# This class provides facilities to display information
|
|
27
26
|
class Introspection
|
|
28
27
|
|
|
29
28
|
# Display all known commands, along with their definition place
|
|
30
|
-
def list_commands(
|
|
31
|
-
puts "Known commands:" unless raw
|
|
29
|
+
def list_commands(format = :pretty)
|
|
32
30
|
cmds = Interpreter::commands
|
|
33
31
|
names = cmds.keys.sort
|
|
34
|
-
|
|
32
|
+
case format
|
|
33
|
+
when :list
|
|
35
34
|
puts names
|
|
35
|
+
when :yaml
|
|
36
|
+
require 'yaml'
|
|
37
|
+
commands = {}
|
|
38
|
+
for n in names
|
|
39
|
+
cmd = cmds[n]
|
|
40
|
+
command = {}
|
|
41
|
+
command['name'] = n
|
|
42
|
+
f,l = cmd.context
|
|
43
|
+
command['file'] = f
|
|
44
|
+
command['line'] = l.to_i
|
|
45
|
+
command['long_option'] = cmd.long_option
|
|
46
|
+
command['short_option'] = cmd.short_option
|
|
47
|
+
command['short_description'] = cmd.short_description
|
|
48
|
+
command['long_description'] = cmd.long_description
|
|
49
|
+
commands[n] = command
|
|
50
|
+
end
|
|
51
|
+
puts YAML.dump(commands)
|
|
36
52
|
else
|
|
53
|
+
puts "Known commands:"
|
|
37
54
|
max = names.inject(0) {|m,x| [m,x.size].max}
|
|
38
55
|
max2 = names.inject(0) {|m,x| [m,cmds[x].long_option.size].max}
|
|
39
56
|
for n in names
|
|
@@ -112,17 +129,36 @@ module CTioga2
|
|
|
112
129
|
|
|
113
130
|
end
|
|
114
131
|
|
|
132
|
+
InternalFormatRE = {
|
|
133
|
+
/list|raw/i => :list,
|
|
134
|
+
/default|pretty/i => :pretty,
|
|
135
|
+
/yaml/i => :yaml
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
InternalFormatType = CmdType.new('internal-format',
|
|
140
|
+
{ :type => :re_list,
|
|
141
|
+
:list => InternalFormatRE}, <<EOD)
|
|
142
|
+
Output format for internals.
|
|
143
|
+
EOD
|
|
144
|
+
|
|
145
|
+
|
|
115
146
|
IntrospectionGroup =
|
|
116
147
|
CmdGroup.new('introspection', "Introspection",
|
|
117
|
-
|
|
118
|
-
|
|
148
|
+
<<EOD, 100)
|
|
149
|
+
Commands displaying information about the internals of ctioga2, such
|
|
150
|
+
as known types/commands/backends...
|
|
151
|
+
EOD
|
|
119
152
|
|
|
153
|
+
TypeOption = {'format' => CmdArg.new('internal-format')}
|
|
120
154
|
RawOption = {'raw' => CmdArg.new('boolean')}
|
|
121
155
|
|
|
122
156
|
ListCommandsCmd =
|
|
123
157
|
Cmd.new('list-commands', nil, '--list-commands',
|
|
124
|
-
[], RawOption) do |p, opts|
|
|
125
|
-
|
|
158
|
+
[], RawOption.dup.update(TypeOption)) do |p, opts|
|
|
159
|
+
opts['format'] = :list if opts['raw']
|
|
160
|
+
|
|
161
|
+
Introspection.new.list_commands(opts['format'])
|
|
126
162
|
end
|
|
127
163
|
|
|
128
164
|
ListCommandsCmd.describe("List known commands",
|
|
@@ -18,7 +18,7 @@ require 'ctioga2/commands/parsers/command-line'
|
|
|
18
18
|
|
|
19
19
|
module CTioga2
|
|
20
20
|
|
|
21
|
-
Version::register_svn_info('$Revision:
|
|
21
|
+
Version::register_svn_info('$Revision: 213 $', '$Date: 2010-12-31 02:50:00 +0100 (Fri, 31 Dec 2010) $')
|
|
22
22
|
|
|
23
23
|
module Commands
|
|
24
24
|
|
|
@@ -45,6 +45,7 @@ module CTioga2
|
|
|
45
45
|
#
|
|
46
46
|
# NO... We should *input* a manual page, and spit out
|
|
47
47
|
# replacement texts.
|
|
48
|
+
#
|
|
48
49
|
def write_manual_page(version, input, out = STDOUT)
|
|
49
50
|
passed_header = false
|
|
50
51
|
if input.is_a? String
|
|
@@ -67,12 +68,13 @@ module CTioga2
|
|
|
67
68
|
passed_header = true
|
|
68
69
|
when /^#{RoffCommentRE}\s*write-commands\s*$/
|
|
69
70
|
write_commands(out)
|
|
71
|
+
# \todo add a write-backends command....
|
|
70
72
|
when /^#{RoffCommentRE}\s*write-group:\s*(.*)\s*$/
|
|
71
73
|
id = $1
|
|
72
74
|
if @groups[id]
|
|
73
75
|
write_group(out, g)
|
|
74
76
|
else
|
|
75
|
-
warn "Unkown group: #{id}"
|
|
77
|
+
warn { "Unkown group: #{id}" }
|
|
76
78
|
end
|
|
77
79
|
when /^#{RoffCommentRE}\s*write-types\s*$/
|
|
78
80
|
write_types(out)
|
|
@@ -97,12 +99,12 @@ module CTioga2
|
|
|
97
99
|
# equivalent in roff format. Alternativelely, it can take a
|
|
98
100
|
# String and feed it to MarkedUpText.
|
|
99
101
|
#
|
|
100
|
-
#
|
|
102
|
+
# \todo make sure things are escaped the way they should be.
|
|
101
103
|
#
|
|
102
104
|
# if _inside_cmds_ is true, additional indentation is added
|
|
103
105
|
# for the lists, so that is looks neat in the end.
|
|
104
106
|
#
|
|
105
|
-
#
|
|
107
|
+
# \todo try to be more clever about spaces in the target
|
|
106
108
|
# file. (does not matter too much for the output of man)
|
|
107
109
|
def markup_to_man(items, inside_cmds = true)
|
|
108
110
|
if items.is_a? String
|
|
@@ -242,7 +244,7 @@ module CTioga2
|
|
|
242
244
|
def write_type(out, type, indent = "")
|
|
243
245
|
out.puts ".TP #{indent}"
|
|
244
246
|
out.puts ".I #{type.name}"
|
|
245
|
-
out.puts
|
|
247
|
+
out.puts markup_to_man(type.description)
|
|
246
248
|
end
|
|
247
249
|
|
|
248
250
|
# Returns the header string
|
|
@@ -16,14 +16,18 @@ require 'ctioga2/log'
|
|
|
16
16
|
|
|
17
17
|
module CTioga2
|
|
18
18
|
|
|
19
|
-
Version::register_svn_info('$Revision:
|
|
19
|
+
Version::register_svn_info('$Revision: 216 $', '$Date: 2010-12-31 16:18:17 +0100 (Fri, 31 Dec 2010) $')
|
|
20
20
|
|
|
21
21
|
module Commands
|
|
22
22
|
|
|
23
23
|
module Documentation
|
|
24
24
|
|
|
25
25
|
# The documentation strings are written in a simple markup
|
|
26
|
-
# language.
|
|
26
|
+
# language.
|
|
27
|
+
#
|
|
28
|
+
# \todo we should provide tags to specifically mark TODO items
|
|
29
|
+
# in documentation, in such a way that it would be easy to make
|
|
30
|
+
# a list of them, and possibly ignore it for output.
|
|
27
31
|
class MarkedUpText
|
|
28
32
|
|
|
29
33
|
# Do we really need logging ?
|
|
@@ -48,16 +52,18 @@ module CTioga2
|
|
|
48
52
|
end
|
|
49
53
|
|
|
50
54
|
# A markup item representing plain text.
|
|
51
|
-
#
|
|
52
|
-
# TODO: in to_s a simple word-wrapping algorithm could be
|
|
53
|
-
# used.
|
|
54
55
|
class MarkupText < MarkupItem
|
|
55
56
|
# The text
|
|
56
57
|
attr_accessor :text
|
|
57
58
|
|
|
58
|
-
|
|
59
|
+
# The kind of markup, nil means no markup
|
|
60
|
+
attr_accessor :kind
|
|
61
|
+
|
|
62
|
+
def initialize(doc, text = "", strip = true,
|
|
63
|
+
kind = nil)
|
|
59
64
|
super(doc)
|
|
60
65
|
@text = text
|
|
66
|
+
@kind = kind
|
|
61
67
|
if strip
|
|
62
68
|
@text.gsub!(/\n/, " ")
|
|
63
69
|
end
|
|
@@ -104,15 +110,23 @@ module CTioga2
|
|
|
104
110
|
attr_accessor :target
|
|
105
111
|
|
|
106
112
|
# _target_ is the name of the target, which can be of _type_
|
|
107
|
-
# 'group', 'command'
|
|
113
|
+
# 'group', 'command', 'backend', 'type' and 'url'
|
|
108
114
|
def initialize(doc, target, type)
|
|
109
115
|
super(doc)
|
|
110
|
-
|
|
116
|
+
if type =~ /url/
|
|
117
|
+
@target = target
|
|
118
|
+
else
|
|
119
|
+
@target = doc.send("#{type}s")[target]
|
|
120
|
+
end
|
|
111
121
|
end
|
|
112
122
|
|
|
113
123
|
def to_s
|
|
114
|
-
if @target
|
|
115
|
-
|
|
124
|
+
if @target
|
|
125
|
+
begin
|
|
126
|
+
return @target.name
|
|
127
|
+
rescue NoMethodError
|
|
128
|
+
return @target
|
|
129
|
+
end
|
|
116
130
|
else
|
|
117
131
|
return "unknown"
|
|
118
132
|
end
|
|
@@ -215,6 +229,9 @@ module CTioga2
|
|
|
215
229
|
# * a {group: ...} or {type: ...} or {command: ...} is a link
|
|
216
230
|
# to the element.
|
|
217
231
|
# * a blank line marks a paragraph break.
|
|
232
|
+
#
|
|
233
|
+
# \todo Add elements to do some inline markup (such as bold,
|
|
234
|
+
# code, italics; mostly code for now will do very fine)
|
|
218
235
|
def parse_from_string(string)
|
|
219
236
|
@last_type = nil
|
|
220
237
|
@last_string = ""
|
|
@@ -263,15 +280,25 @@ module CTioga2
|
|
|
263
280
|
|
|
264
281
|
protected
|
|
265
282
|
|
|
283
|
+
# A few constants to help writing out the paragraph markup
|
|
284
|
+
LinkRE = /\{(group|type|command|backend|url):\s*([^}]+?)\s*\}/
|
|
285
|
+
|
|
286
|
+
MarkOnceRE = /@([^@]+)@/
|
|
287
|
+
|
|
288
|
+
|
|
266
289
|
# Parses the markup found within a paragraph (ie: links and
|
|
267
290
|
# other text attributes, but not verbatim, list or other
|
|
268
291
|
# markings) and returns an array containing the MarkupItem
|
|
269
292
|
# elements.
|
|
270
293
|
def parse_paragraph_markup(doc, string)
|
|
271
294
|
els = []
|
|
272
|
-
while string =~
|
|
295
|
+
while string =~ /#{LinkRE}|#{MarkOnceRE}/
|
|
273
296
|
els << MarkupText.new(doc, $`)
|
|
274
|
-
|
|
297
|
+
if $1
|
|
298
|
+
els << MarkupLink.new(doc, $2, $1)
|
|
299
|
+
elsif $3
|
|
300
|
+
els << MarkupText.new(doc, $3, true, :code)
|
|
301
|
+
end
|
|
275
302
|
string = $'
|
|
276
303
|
end
|
|
277
304
|
els << MarkupText.new(doc, string)
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
## \file wordwrap.rb small word-wrapping utility
|
|
2
|
+
# copyright (c) 2009 by Vincent Fourmond
|
|
3
|
+
|
|
4
|
+
# This program is free software; you can redistribute it and/or modify
|
|
5
|
+
# it under the terms of the GNU General Public License as published by
|
|
6
|
+
# the Free Software Foundation; either version 2 of the License, or
|
|
7
|
+
# (at your option) any later version.
|
|
8
|
+
|
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
# GNU General Public License for more details (in the COPYING file).
|
|
13
|
+
|
|
14
|
+
require 'ctioga2/utils'
|
|
15
|
+
require 'ctioga2/commands/commands'
|
|
16
|
+
require 'ctioga2/commands/parsers/command-line'
|
|
17
|
+
|
|
18
|
+
module CTioga2
|
|
19
|
+
|
|
20
|
+
Version::register_svn_info('$Revision: 131 $', '$Date: 2010-01-14 22:51:09 +0100 (Thu, 14 Jan 2010) $')
|
|
21
|
+
|
|
22
|
+
module Commands
|
|
23
|
+
|
|
24
|
+
module Documentation
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
# A small utility class to do word wrapping.
|
|
28
|
+
#
|
|
29
|
+
# \todo Maybe this belongs in Utils ?
|
|
30
|
+
class WordWrapper
|
|
31
|
+
|
|
32
|
+
# A regex matching word separation.
|
|
33
|
+
attr_accessor :word_sep
|
|
34
|
+
|
|
35
|
+
# What to replace the separator with
|
|
36
|
+
attr_accessor :new_sep
|
|
37
|
+
|
|
38
|
+
def initialize(ws = /\s+/, ns = " ")
|
|
39
|
+
@word_sep = ws
|
|
40
|
+
@new_sep = ns
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Split strings into an array of string whose length is each
|
|
44
|
+
# less than _cols_
|
|
45
|
+
def wrap(str, cols)
|
|
46
|
+
words = str.split(@word_sep)
|
|
47
|
+
lines = [words.shift]
|
|
48
|
+
while w = words.shift
|
|
49
|
+
if (lines.last.size + w.size + @new_sep.size) <= cols
|
|
50
|
+
lines.last.concat("#{@new_sep}#{w}")
|
|
51
|
+
else
|
|
52
|
+
lines << w
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
return lines
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Calls #wrap for default values of the parameters
|
|
59
|
+
def self.wrap(str, cols)
|
|
60
|
+
return WordWrapper.new.wrap(str, cols)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
end
|
|
@@ -17,7 +17,7 @@ require 'ctioga2/commands/parsers/file'
|
|
|
17
17
|
|
|
18
18
|
module CTioga2
|
|
19
19
|
|
|
20
|
-
Version::register_svn_info('$Revision:
|
|
20
|
+
Version::register_svn_info('$Revision: 155 $', '$Date: 2010-06-21 21:41:32 +0200 (Mon, 21 Jun 2010) $')
|
|
21
21
|
|
|
22
22
|
module Commands
|
|
23
23
|
|
|
@@ -27,12 +27,15 @@ module CTioga2
|
|
|
27
27
|
"General scope commands", 1000)
|
|
28
28
|
|
|
29
29
|
|
|
30
|
+
CommandLineHelpOptions = {
|
|
31
|
+
'pager' => CmdArg.new('boolean')
|
|
32
|
+
}
|
|
30
33
|
|
|
31
34
|
# Display help on the command-line
|
|
32
35
|
CommandLineHelpCommand =
|
|
33
36
|
Cmd.new("command-line-help", 'h',
|
|
34
|
-
"--help", [ ]) do |plotmaker|
|
|
35
|
-
plotmaker.interpreter.doc.display_command_line_help
|
|
37
|
+
"--help", [ ], CommandLineHelpOptions) do |plotmaker, options|
|
|
38
|
+
plotmaker.interpreter.doc.display_command_line_help(options)
|
|
36
39
|
exit
|
|
37
40
|
end
|
|
38
41
|
|
|
@@ -85,7 +88,7 @@ EOH
|
|
|
85
88
|
|
|
86
89
|
# Write debugging information.
|
|
87
90
|
#
|
|
88
|
-
#
|
|
91
|
+
# \todo this should be the place where a lot of customization of
|
|
89
92
|
# the debug output could go - including channels or things like
|
|
90
93
|
# that. To be seen later on...
|
|
91
94
|
DebugLogging =
|
|
@@ -15,7 +15,7 @@ require 'ctioga2/utils'
|
|
|
15
15
|
|
|
16
16
|
module CTioga2
|
|
17
17
|
|
|
18
|
-
Version::register_svn_info('$Revision:
|
|
18
|
+
Version::register_svn_info('$Revision: 223 $', '$Date: 2011-01-11 01:07:48 +0100 (Tue, 11 Jan 2011) $')
|
|
19
19
|
|
|
20
20
|
module Commands
|
|
21
21
|
|
|
@@ -73,16 +73,29 @@ EOD
|
|
|
73
73
|
# Data-point. Unlike other types, this one needs to be processed
|
|
74
74
|
# afterwards, actually, since an access to a plotmaker object is
|
|
75
75
|
# necessary.
|
|
76
|
-
DataPointType = CmdType.new('data-point', :
|
|
76
|
+
DataPointType = CmdType.new('data-point', :data_point, <<EOD)
|
|
77
77
|
A point from a Dataset.
|
|
78
78
|
|
|
79
|
-
|
|
79
|
+
\todo document ;-)...
|
|
80
80
|
EOD
|
|
81
81
|
|
|
82
|
+
# A LaTeX font
|
|
83
|
+
LaTeXFontType = CmdType.new('latex-font', :latex_font, <<EOD)
|
|
84
|
+
A LaTeX font.
|
|
82
85
|
|
|
86
|
+
\todo document !
|
|
87
|
+
EOD
|
|
88
|
+
|
|
89
|
+
# A color map
|
|
90
|
+
ColorMapType = CmdType.new('colormap', :colormap, <<EOD)
|
|
91
|
+
A Z color map
|
|
92
|
+
|
|
93
|
+
\todo document !
|
|
94
|
+
EOD
|
|
83
95
|
|
|
84
96
|
# This ones get here since they mess up with syntax highlighting
|
|
85
97
|
|
|
98
|
+
|
|
86
99
|
# A stored dataset.
|
|
87
100
|
StoredDatasetType = CmdType.new('stored-dataset',
|
|
88
101
|
:string, <<EOD)
|
|
@@ -96,20 +109,22 @@ EOD
|
|
|
96
109
|
|
|
97
110
|
# Something meant to be fed to PlotStyle#get_axis_style
|
|
98
111
|
AxisType = CmdType.new('axis', :string, <<EOD)
|
|
99
|
-
The name of
|
|
100
|
-
* left
|
|
101
|
-
* x
|
|
102
|
-
on the preferences of the current plot
|
|
103
|
-
|
|
112
|
+
The name of the axis of a plot. It can be:
|
|
113
|
+
* @left@, @top@, @bottom@ or @right@;
|
|
114
|
+
* @x@, @xaxis@, @y@, @yaxis@, which return one of the above depending
|
|
115
|
+
on the preferences of the current plot (see {command: xaxis} and
|
|
116
|
+
{command: yaxis} to change them);
|
|
117
|
+
* one of the named axes, such as the ones created by
|
|
118
|
+
{command: new-zaxis}.
|
|
104
119
|
EOD
|
|
105
120
|
|
|
106
121
|
# Something meant to be fed to PlotStyle#get_label_style
|
|
107
122
|
LabelType = CmdType.new('label', :string, <<EOD)
|
|
108
123
|
The name of an label. It can be:
|
|
109
|
-
* title to mean the current plot's title.
|
|
110
|
-
* axis_tick or axis_ticks or simply axis
|
|
111
|
-
{type: axis}.
|
|
112
|
-
* axis_label
|
|
124
|
+
* @title@ to mean the current plot's title.
|
|
125
|
+
* @axis_tick@ or @axis_ticks@ or simply @axis@, where @axis@ is a a valid
|
|
126
|
+
{type: axis}. It designates the ticks of the named axis.
|
|
127
|
+
* @axis_label@, same as above but targets the label of the named axis.
|
|
113
128
|
EOD
|
|
114
129
|
|
|
115
130
|
|
|
@@ -20,7 +20,7 @@ require 'ctioga2/commands/doc/doc'
|
|
|
20
20
|
|
|
21
21
|
module CTioga2
|
|
22
22
|
|
|
23
|
-
Version::register_svn_info('$Revision:
|
|
23
|
+
Version::register_svn_info('$Revision: 155 $', '$Date: 2010-06-21 21:41:32 +0200 (Mon, 21 Jun 2010) $')
|
|
24
24
|
|
|
25
25
|
# This module contains the real core of ctioga2: a set of classes
|
|
26
26
|
# that implement the concept of commands. Each command translates
|
|
@@ -169,7 +169,7 @@ module CTioga2
|
|
|
169
169
|
# snapshot of the current commands known to the system, so
|
|
170
170
|
# please instantiate it last.
|
|
171
171
|
#
|
|
172
|
-
#
|
|
172
|
+
# \todo probably this behavior is not really desired.
|
|
173
173
|
# Easy to fix.
|
|
174
174
|
def initialize(target)
|
|
175
175
|
@plotmaker_target = target
|
|
@@ -17,7 +17,7 @@ require 'ctioga2/commands/commands'
|
|
|
17
17
|
|
|
18
18
|
module CTioga2
|
|
19
19
|
|
|
20
|
-
Version::register_svn_info('$Revision:
|
|
20
|
+
Version::register_svn_info('$Revision: 151 $', '$Date: 2010-06-19 23:45:20 +0200 (Sat, 19 Jun 2010) $')
|
|
21
21
|
|
|
22
22
|
module Commands
|
|
23
23
|
|
|
@@ -164,13 +164,17 @@ module CTioga2
|
|
|
164
164
|
end
|
|
165
165
|
|
|
166
166
|
# We try and go fishing for options, in the form
|
|
167
|
-
# /option=stuff
|
|
168
|
-
while argv.first =~ /^\/([\w-]+)
|
|
167
|
+
# /option=stuff, or /option stuff...
|
|
168
|
+
while argv.first =~ /^\/([\w-]+)(?:=(.*))?$/
|
|
169
169
|
if command.has_option? $1
|
|
170
|
-
options[$1] = $2
|
|
171
170
|
argv.shift
|
|
171
|
+
if $2
|
|
172
|
+
options[$1] = $2
|
|
173
|
+
else
|
|
174
|
+
options[$1] = argv.shift
|
|
175
|
+
end
|
|
172
176
|
else
|
|
173
|
-
warn "Argument #{argv.first} looks like an option, but does not match any of the command #{command.name}"
|
|
177
|
+
warn { "Argument #{argv.first} looks like an option, but does not match any of the command #{command.name}" }
|
|
174
178
|
break
|
|
175
179
|
end
|
|
176
180
|
end
|