ctioga2 0.0 → 0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|