ctioga2 0.2 → 0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. data/Changelog +11 -0
  2. data/lib/ctioga2/commands/arguments.rb +1 -1
  3. data/lib/ctioga2/commands/commands.rb +1 -1
  4. data/lib/ctioga2/commands/doc/doc.rb +1 -1
  5. data/lib/ctioga2/commands/doc/documentation-commands.rb +1 -1
  6. data/lib/ctioga2/commands/doc/help.rb +1 -1
  7. data/lib/ctioga2/commands/doc/html.rb +1 -1
  8. data/lib/ctioga2/commands/doc/introspection.rb +1 -1
  9. data/lib/ctioga2/commands/doc/man.rb +1 -1
  10. data/lib/ctioga2/commands/doc/markup.rb +1 -1
  11. data/lib/ctioga2/commands/doc/wordwrap.rb +1 -1
  12. data/lib/ctioga2/commands/general-commands.rb +1 -1
  13. data/lib/ctioga2/commands/general-types.rb +1 -1
  14. data/lib/ctioga2/commands/groups.rb +1 -1
  15. data/lib/ctioga2/commands/interpreter.rb +8 -2
  16. data/lib/ctioga2/commands/parsers/command-line.rb +1 -1
  17. data/lib/ctioga2/commands/parsers/file.rb +4 -1
  18. data/lib/ctioga2/commands/strings.rb +1 -1
  19. data/lib/ctioga2/commands/type.rb +1 -1
  20. data/lib/ctioga2/commands/variables.rb +6 -6
  21. data/lib/ctioga2/data/backends/backend.rb +1 -1
  22. data/lib/ctioga2/data/backends/backends.rb +3 -2
  23. data/lib/ctioga2/data/backends/backends/direct.rb +72 -0
  24. data/lib/ctioga2/data/backends/backends/gnuplot.rb +1 -1
  25. data/lib/ctioga2/data/backends/backends/math.rb +1 -1
  26. data/lib/ctioga2/data/backends/backends/text.rb +8 -14
  27. data/lib/ctioga2/data/backends/description.rb +9 -5
  28. data/lib/ctioga2/data/backends/factory.rb +1 -1
  29. data/lib/ctioga2/data/backends/parameter.rb +1 -1
  30. data/lib/ctioga2/data/datacolumn.rb +1 -1
  31. data/lib/ctioga2/data/dataset.rb +50 -4
  32. data/lib/ctioga2/data/filters.rb +1 -1
  33. data/lib/ctioga2/data/indexed-dtable.rb +1 -1
  34. data/lib/ctioga2/data/point.rb +1 -1
  35. data/lib/ctioga2/data/stack.rb +151 -25
  36. data/lib/ctioga2/git-fools-svn.rb +7 -0
  37. data/lib/ctioga2/graphics/coordinates.rb +1 -1
  38. data/lib/ctioga2/graphics/elements.rb +1 -1
  39. data/lib/ctioga2/graphics/elements/containers.rb +1 -1
  40. data/lib/ctioga2/graphics/elements/contour.rb +5 -2
  41. data/lib/ctioga2/graphics/elements/curve2d.rb +1 -1
  42. data/lib/ctioga2/graphics/elements/element.rb +1 -1
  43. data/lib/ctioga2/graphics/elements/gradient-region.rb +1 -1
  44. data/lib/ctioga2/graphics/elements/parametric2d.rb +1 -2
  45. data/lib/ctioga2/graphics/elements/primitive.rb +1 -1
  46. data/lib/ctioga2/graphics/elements/redirecting-container.rb~ +123 -0
  47. data/lib/ctioga2/graphics/elements/region.rb +1 -1
  48. data/lib/ctioga2/graphics/elements/subplot.rb +1 -1
  49. data/lib/ctioga2/graphics/elements/tangent.rb +1 -1
  50. data/lib/ctioga2/graphics/elements/xyz-map.rb +1 -1
  51. data/lib/ctioga2/graphics/generator.rb +21 -4
  52. data/lib/ctioga2/graphics/legends.rb +1 -1
  53. data/lib/ctioga2/graphics/legends/area.rb +1 -1
  54. data/lib/ctioga2/graphics/legends/items.rb +1 -1
  55. data/lib/ctioga2/graphics/legends/provider.rb +1 -1
  56. data/lib/ctioga2/graphics/legends/storage.rb +1 -1
  57. data/lib/ctioga2/graphics/root.rb +1 -1
  58. data/lib/ctioga2/graphics/styles/axes.rb +2 -1
  59. data/lib/ctioga2/graphics/styles/background.rb +1 -1
  60. data/lib/ctioga2/graphics/styles/base.rb +1 -1
  61. data/lib/ctioga2/graphics/styles/carrays.rb +1 -1
  62. data/lib/ctioga2/graphics/styles/colormap.rb +1 -1
  63. data/lib/ctioga2/graphics/styles/curve.rb +1 -1
  64. data/lib/ctioga2/graphics/styles/drawable.rb +1 -1
  65. data/lib/ctioga2/graphics/styles/errorbar.rb +1 -1
  66. data/lib/ctioga2/graphics/styles/factory.rb +1 -1
  67. data/lib/ctioga2/graphics/styles/gradients.rb +1 -1
  68. data/lib/ctioga2/graphics/styles/legend.rb +1 -1
  69. data/lib/ctioga2/graphics/styles/location.rb +1 -1
  70. data/lib/ctioga2/graphics/styles/plot.rb +10 -1
  71. data/lib/ctioga2/graphics/styles/sets.rb +1 -1
  72. data/lib/ctioga2/graphics/styles/texts.rb +1 -1
  73. data/lib/ctioga2/graphics/subplot-commands.rb +1 -1
  74. data/lib/ctioga2/graphics/types.rb +1 -1
  75. data/lib/ctioga2/graphics/types/bijection.rb +1 -1
  76. data/lib/ctioga2/graphics/types/boundaries.rb +1 -1
  77. data/lib/ctioga2/graphics/types/boxes.rb +1 -1
  78. data/lib/ctioga2/graphics/types/dimensions.rb +1 -1
  79. data/lib/ctioga2/graphics/types/grid.rb +1 -1
  80. data/lib/ctioga2/graphics/types/location.rb +1 -1
  81. data/lib/ctioga2/graphics/types/point.rb +1 -1
  82. data/lib/ctioga2/log.rb +4 -1
  83. data/lib/ctioga2/metabuilder/type.rb +1 -1
  84. data/lib/ctioga2/metabuilder/types/coordinates.rb +1 -1
  85. data/lib/ctioga2/metabuilder/types/data.rb +1 -1
  86. data/lib/ctioga2/metabuilder/types/dates.rb +1 -1
  87. data/lib/ctioga2/metabuilder/types/generic.rb~ +225 -0
  88. data/lib/ctioga2/metabuilder/types/lists.rb +1 -1
  89. data/lib/ctioga2/metabuilder/types/numbers.rb +1 -1
  90. data/lib/ctioga2/metabuilder/types/strings.rb +1 -1
  91. data/lib/ctioga2/metabuilder/types/styles.rb +1 -1
  92. data/lib/ctioga2/plotmaker.rb +12 -7
  93. data/lib/ctioga2/postprocess.rb +1 -1
  94. data/lib/ctioga2/utils.rb +27 -3
  95. metadata +45 -56
@@ -17,7 +17,7 @@ require 'ctioga2/log'
17
17
  # This module contains all the classes used by ctioga
18
18
  module CTioga2
19
19
 
20
- Version::register_svn_info('$Revision: 133 $', '$Date: 2010-01-18 21:37:36 +0100 (Mon, 18 Jan 2010) $')
20
+ Version::register_svn_info('$Revision$', '$Date$')
21
21
 
22
22
  module Graphics
23
23
 
@@ -19,7 +19,7 @@ require 'ctioga2/graphics/coordinates'
19
19
  # This module contains all the classes used by ctioga
20
20
  module CTioga2
21
21
 
22
- Version::register_svn_info('$Revision: 202 $', '$Date: 2010-11-30 22:21:17 +0100 (Tue, 30 Nov 2010) $')
22
+ Version::register_svn_info('$Revision$', '$Date$')
23
23
 
24
24
  module Graphics
25
25
 
@@ -55,6 +55,8 @@ module CTioga2
55
55
  attr_accessor :plot_margin
56
56
 
57
57
  # Coordinate tranforms
58
+ #
59
+ # @todo they should be axis-specific.
58
60
  attr_accessor :transforms
59
61
 
60
62
  # Style of the background of the plot
@@ -101,6 +103,13 @@ module CTioga2
101
103
  @padding = Types::Dimension.new(:bp, 4)
102
104
  end
103
105
 
106
+ # Apply (destructively) the current transformations to the
107
+ # given dataset
108
+ def apply_transforms!(dataset)
109
+ @transforms.transform_2d!(dataset)
110
+ end
111
+
112
+
104
113
  # Whether to use log scale for the given axis.
105
114
  #
106
115
  # Now the question is: how should that affect user-defined
@@ -17,7 +17,7 @@ require 'ctioga2/log'
17
17
  # This module contains all the classes used by ctioga
18
18
  module CTioga2
19
19
 
20
- Version::register_svn_info('$Revision: 161 $', '$Date: 2010-08-03 12:07:49 +0200 (Tue, 03 Aug 2010) $')
20
+ Version::register_svn_info('$Revision$', '$Date$')
21
21
 
22
22
  module Graphics
23
23
 
@@ -17,7 +17,7 @@ require 'ctioga2/log'
17
17
  # This module contains all the classes used by ctioga
18
18
  module CTioga2
19
19
 
20
- Version::register_svn_info('$Revision: 197 $', '$Date: 2010-11-29 14:26:12 +0100 (Mon, 29 Nov 2010) $')
20
+ Version::register_svn_info('$Revision$', '$Date$')
21
21
 
22
22
  module Graphics
23
23
 
@@ -16,7 +16,7 @@ require 'ctioga2/log'
16
16
 
17
17
  module CTioga2
18
18
 
19
- Version::register_svn_info('$Revision: 214 $', '$Date: 2010-12-31 02:50:03 +0100 (Fri, 31 Dec 2010) $')
19
+ Version::register_svn_info('$Revision$', '$Date$')
20
20
 
21
21
  module Graphics
22
22
 
@@ -25,7 +25,7 @@ require 'ctioga2/graphics/types/grid'
25
25
  # This module contains all the classes used by ctioga
26
26
  module CTioga2
27
27
 
28
- Version::register_svn_info('$Revision: 249 $', '$Date: 2011-01-29 14:05:04 +0100 (Sat, 29 Jan 2011) $')
28
+ Version::register_svn_info('$Revision$', '$Date$')
29
29
 
30
30
  module Graphics
31
31
 
@@ -16,7 +16,7 @@ require 'ctioga2/log'
16
16
 
17
17
  module CTioga2
18
18
 
19
- Version::register_svn_info('$Revision: 155 $', '$Date: 2010-06-21 21:41:32 +0200 (Mon, 21 Jun 2010) $')
19
+ Version::register_svn_info('$Revision$', '$Date$')
20
20
 
21
21
  module Graphics
22
22
 
@@ -16,7 +16,7 @@ require 'ctioga2/log'
16
16
 
17
17
  module CTioga2
18
18
 
19
- Version::register_svn_info('$Revision: 125 $', '$Date: 2010-01-12 00:56:15 +0100 (Tue, 12 Jan 2010) $')
19
+ Version::register_svn_info('$Revision$', '$Date$')
20
20
 
21
21
  # This module contains all graphical elements of CTioga2
22
22
  module Graphics
@@ -16,7 +16,7 @@ require 'ctioga2/log'
16
16
 
17
17
  module CTioga2
18
18
 
19
- Version::register_svn_info('$Revision: 92 $', '$Date: 2009-06-24 01:17:46 +0200 (Wed, 24 Jun 2009) $')
19
+ Version::register_svn_info('$Revision$', '$Date$')
20
20
 
21
21
  # This module contains all graphical elements of CTioga2
22
22
  module Graphics
@@ -16,7 +16,7 @@ require 'ctioga2/log'
16
16
 
17
17
  module CTioga2
18
18
 
19
- Version::register_svn_info('$Revision: 198 $', '$Date: 2010-11-30 00:48:23 +0100 (Tue, 30 Nov 2010) $')
19
+ Version::register_svn_info('$Revision$', '$Date$')
20
20
 
21
21
  module Graphics
22
22
 
@@ -19,7 +19,7 @@ require 'ctioga2/graphics/types/boxes'
19
19
 
20
20
  module CTioga2
21
21
 
22
- Version::register_svn_info('$Revision: 147 $', '$Date: 2010-04-06 21:13:28 +0200 (Tue, 06 Apr 2010) $')
22
+ Version::register_svn_info('$Revision$', '$Date$')
23
23
 
24
24
  module Graphics
25
25
 
@@ -16,7 +16,7 @@ require 'ctioga2/log'
16
16
 
17
17
  module CTioga2
18
18
 
19
- Version::register_svn_info('$Revision: 223 $', '$Date: 2011-01-11 01:07:48 +0100 (Tue, 11 Jan 2011) $')
19
+ Version::register_svn_info('$Revision$', '$Date$')
20
20
 
21
21
  module Graphics
22
22
 
@@ -16,7 +16,7 @@ require 'ctioga2/log'
16
16
 
17
17
  module CTioga2
18
18
 
19
- Version::register_svn_info('$Revision: 196 $', '$Date: 2010-11-25 20:15:32 +0100 (Thu, 25 Nov 2010) $')
19
+ Version::register_svn_info('$Revision$', '$Date$')
20
20
 
21
21
  module Graphics
22
22
 
data/lib/ctioga2/log.rb CHANGED
@@ -16,10 +16,13 @@ require 'logger'
16
16
 
17
17
  module CTioga2
18
18
 
19
- Version::register_svn_info('$Revision: 152 $', '$Date: 2010-06-20 01:55:50 +0200 (Sun, 20 Jun 2010) $')
19
+ Version::register_svn_info('$Revision$', '$Date$')
20
20
 
21
21
  # This module should be included (or extended) by every class that
22
22
  # need logging/debugging facilities.
23
+ #
24
+ # @todo The debug information should contain the command being
25
+ # currently executed.
23
26
  module Log
24
27
 
25
28
  # Prints a debug message, on channel _channel_. Channel handling
@@ -20,7 +20,7 @@ require 'ctioga2/utils'
20
20
 
21
21
  module CTioga2
22
22
 
23
- Version::register_svn_info('$Revision: 151 $', '$Date: 2010-06-19 23:45:20 +0200 (Sat, 19 Jun 2010) $')
23
+ Version::register_svn_info('$Revision$', '$Date$')
24
24
 
25
25
 
26
26
  # The MetaBuilder module contains a framework to perform
@@ -20,7 +20,7 @@ require 'ctioga2/utils'
20
20
 
21
21
  module CTioga2
22
22
 
23
- Version::register_svn_info('$Revision: 198 $', '$Date: 2010-11-30 00:48:23 +0100 (Tue, 30 Nov 2010) $')
23
+ Version::register_svn_info('$Revision$', '$Date$')
24
24
 
25
25
  module MetaBuilder
26
26
  module Types
@@ -20,7 +20,7 @@ require 'ctioga2/utils'
20
20
 
21
21
  module CTioga2
22
22
 
23
- Version::register_svn_info('$Revision: 171 $', '$Date: 2010-10-22 17:07:52 +0200 (Fri, 22 Oct 2010) $')
23
+ Version::register_svn_info('$Revision$', '$Date$')
24
24
 
25
25
  module MetaBuilder
26
26
  module Types
@@ -19,7 +19,7 @@ require 'time'
19
19
  require 'ctioga2/utils'
20
20
 
21
21
  module CTioga2
22
- Version::register_svn_info('$Revision: 2 $', '$Date: 2009-04-25 14:03:30 +0200 (Sat, 25 Apr 2009) $')
22
+ Version::register_svn_info('$Revision$', '$Date$')
23
23
 
24
24
  module MetaBuilder
25
25
 
@@ -0,0 +1,225 @@
1
+ # lists.rb : Different Types to deal with types where
2
+ # you can choose among several possibilities
3
+ # Copyright (C) 2006, 2009 Vincent Fourmond
4
+ #
5
+ # This program is free software; you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation; either version 2 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License
16
+ # along with this program; if not, write to the Free Software
17
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
+
19
+ require 'ctioga2/utils'
20
+
21
+ module CTioga2
22
+
23
+ Version::register_svn_info('$Revision$', '$Date$')
24
+
25
+
26
+ module MetaBuilder
27
+
28
+ # The module Types should be used for all subclasses of
29
+ # Type, to keep the place clean and tidy.
30
+ module Types
31
+
32
+ # A regular expression matching true
33
+ TRUE_RE = /^\s*(true|yes|on)\s*$/i
34
+
35
+ # A regular expression matching false
36
+ FALSE_RE = /^\s*(false|no(ne)?|off)\s*$/i
37
+
38
+
39
+ # A boolean parameter
40
+ class BooleanParameter < Type
41
+
42
+ type_name :boolean
43
+
44
+ def type_name
45
+ return 'bool'
46
+ end
47
+
48
+ # Yes, this *really* is a boolean !
49
+ def boolean?
50
+ return true
51
+ end
52
+
53
+ def string_to_type_internal(str)
54
+ if str == true or str =~ TRUE_RE
55
+ return true
56
+ else
57
+ return false
58
+ end
59
+ end
60
+
61
+ def type_to_string_internal(val)
62
+ if val
63
+ return "true"
64
+ else
65
+ return "false"
66
+ end
67
+ end
68
+
69
+ # Booleans are a special case for option parser, as they
70
+ # are handled completely differently
71
+ def option_parser_long_option(name, biniou = nil)
72
+ return "--[no-]#{name}"
73
+ end
74
+ end
75
+
76
+ # A list of symbols. A hash :list must be provided that states
77
+ # the correspondance between the legal symbols that can be
78
+ # accepted by this parameter and their "english" name.
79
+ # This parameter can typically be used to prompt the user
80
+ # for different choices.
81
+ class ListParameter < Type
82
+
83
+ type_name :list
84
+
85
+ def initialize(type)
86
+ super
87
+ raise "type must have a :list key" unless type.has_key?(:list)
88
+ # We make a copy for our own purposes.
89
+ @hash = type[:list].dup
90
+ end
91
+
92
+ def type_name
93
+ return 'list'
94
+ end
95
+
96
+ def string_to_type_internal(str)
97
+ if @hash.has_key?(str.to_sym)
98
+ return str.to_sym
99
+ else
100
+ raise IncorrectInput, "Invalid input: #{str} should be one of " +
101
+ @hash.keys.map {|s| s.to_s}.join(',')
102
+ end
103
+ end
104
+
105
+ def type_to_string_internal(val)
106
+ return val.to_s
107
+ end
108
+ end
109
+
110
+
111
+ # A choice between different symbols based on regular expressions.
112
+ class REListParameter < Type
113
+
114
+ type_name :re_list
115
+
116
+ def initialize(type)
117
+ super
118
+ raise "type must have a :list key" unless type.has_key?(:list)
119
+ # We make a copy for our own purposes.
120
+ @re_hash = type[:list].dup
121
+ end
122
+
123
+ def type_name
124
+ return 'relist'
125
+ end
126
+
127
+ def string_to_type_internal(str)
128
+ for k,v in @re_hash
129
+ if str =~ /^\s*#{k}\s*$/
130
+ return v
131
+ end
132
+ end
133
+ raise IncorrectInput, "Invalid input: #{str} should match " +
134
+ @re_hash.keys.map {|s| s.to_s}.join(',')
135
+ end
136
+
137
+ def type_to_string_internal(val)
138
+ return val.to_s
139
+ end
140
+ end
141
+
142
+ # An array of identical elements of type specified by :subtype. Defaults
143
+ # to String
144
+ class ArrayParameter < Type
145
+ type_name :array
146
+
147
+ def initialize(type)
148
+ super
149
+ # We make a copy for our own purposes.
150
+ subtype = type[:subtype] || {:type => :string}
151
+ @subtype = Type.get_type(subtype)
152
+ @separator = /\s*,\s*/
153
+ @separator_out = ','
154
+ end
155
+
156
+ def type_name
157
+ return 'array'
158
+ end
159
+
160
+ def string_to_type_internal(str)
161
+ ary = str.split(@separator)
162
+ return ary.map do |a|
163
+ @subtype.string_to_type(a)
164
+ end
165
+ end
166
+
167
+ def type_to_string_internal(val)
168
+ return val.map do |a|
169
+ @subtype.type_to_string(a)
170
+ end.join(@separator_out)
171
+ end
172
+ end
173
+
174
+ # A Type used for sets for Graphics::Styles::CircularArray
175
+ # objects.
176
+ #
177
+ # \todo write a gradient stuff !!!
178
+ class SetParameter < ArrayParameter
179
+ type_name :set
180
+
181
+ def initialize(type)
182
+ super
183
+ @separator = /\s*\|\s*/
184
+ @separator_out = '|'
185
+ end
186
+
187
+ def type_name
188
+ return 'set'
189
+ end
190
+
191
+ def string_to_type_internal(str)
192
+ multiply = nil
193
+ if str =~ /(.*)\*\s*(\d+)\s*$/
194
+ multiply = $2.to_i
195
+ str = $1
196
+ end
197
+ if str =~ /^\s*gradient:(.+)--(.+),(\d+)\s*$/
198
+ s,e,nb = $1, $2, $3.to_i
199
+ s,e = @subtype.string_to_type(s),@subtype.string_to_type(e)
200
+ fact = if nb > 1
201
+ 1.0/(nb - 1) # The famous off-by one...
202
+ else
203
+ warn { "Incorrect gradient number: #{nb}" }
204
+ 1.0
205
+ end
206
+ array = []
207
+ nb.times do |i|
208
+ array << Utils::mix_objects(e,s, i * fact)
209
+ end
210
+ else
211
+ array = super
212
+ end
213
+ if multiply
214
+ # Seems that I've finally managed to understand what zip
215
+ # is useful for !
216
+ array = array.zip(*([array]*(multiply-1))).flatten(1)
217
+ end
218
+ return array
219
+ end
220
+
221
+ end
222
+
223
+ end
224
+ end
225
+ end
@@ -20,7 +20,7 @@ require 'ctioga2/utils'
20
20
 
21
21
  module CTioga2
22
22
 
23
- Version::register_svn_info('$Revision: 222 $', '$Date: 2011-01-11 00:52:31 +0100 (Tue, 11 Jan 2011) $')
23
+ Version::register_svn_info('$Revision$', '$Date$')
24
24
 
25
25
 
26
26
  module MetaBuilder
@@ -20,7 +20,7 @@ require 'ctioga2/utils'
20
20
 
21
21
  module CTioga2
22
22
 
23
- Version::register_svn_info('$Revision: 2 $', '$Date: 2009-04-25 14:03:30 +0200 (Sat, 25 Apr 2009) $')
23
+ Version::register_svn_info('$Revision$', '$Date$')
24
24
 
25
25
  module MetaBuilder
26
26