Module: CTioga2::Commands

Defined in:
lib/ctioga2/commands/interpreter.rb,
lib/ctioga2/commands/type.rb,
lib/ctioga2/commands/groups.rb,
lib/ctioga2/commands/doc/doc.rb,
lib/ctioga2/commands/doc/man.rb,
lib/ctioga2/commands/strings.rb,
lib/ctioga2/commands/commands.rb,
lib/ctioga2/commands/doc/help.rb,
lib/ctioga2/commands/doc/html.rb,
lib/ctioga2/commands/arguments.rb,
lib/ctioga2/commands/variables.rb,
lib/ctioga2/commands/doc/markup.rb,
lib/ctioga2/commands/parsers/file.rb,
lib/ctioga2/commands/general-types.rb,
lib/ctioga2/commands/general-commands.rb,
lib/ctioga2/commands/doc/introspection.rb,
lib/ctioga2/commands/parsers/command-line.rb,
lib/ctioga2/commands/doc/documentation-commands.rb

Overview

This module contains the real core of ctioga2: a set of classes that implement the concept of commands. Each command translates into an action (of any kind).

Commands can be specified using several ways: either using command-line options/arguments or through a commands file.

Defined Under Namespace

Modules: Documentation, Parsers Classes: ArgumentNumberMismatch, Command, CommandArgument, CommandGroup, CommandOptionUnkown, CommandType, DoubleDefinition, Interpreter, InterpreterString, InvalidName, InvalidType, RecursiveExpansion, UnknownCommand, UnterminatedString, Variables

Constant Summary collapse

NameValidationRE =

A CommandGroup#id or Command#name should match this regular expression.

/^[a-z0-9-]+$/
FileType =

A file name.

CmdType.new('file', :string, <<EOD)
A file name.
EOD
TextType =

Plain text

CmdType.new('text', :string, <<EOD)
Plain text.
EOD
DatasetType =

A series of datasets

CmdType.new('dataset', :string, <<EOD)
One expandable dataset.
EOD
CommandsType =

Commands

CmdType.new('commands', :string, <<EOD)
ctioga2 commands, such as the ones that could be found in
command files.
EOD
BooleanType =
CmdType.new('boolean', :boolean, <<EOD)
Yes or no.
EOD
FloatType =
CmdType.new('float', :float, <<EOD)
A floating-point number.
EOD
IntegerType =
CmdType.new('integer', :integer, <<EOD)
An integer.
EOD
PartialFloatRangeType =
CmdType.new('partial-float-range', 
                                        :partial_float_range, <<EOD)
A beginning:end range, where either of the endpoints can be ommitted.
EOD
FloatRangeType =
CmdType.new('float-range', 
                                 :float_range, <<EOD)
A beginning:end range.
EOD
StringOrRegexp =
CmdType.new('regexp', 
                                 :string_or_regexp, <<EOD)
A plain string or a regular expression (the latter being enclosed 
within /.../).
EOD
DataPointType =

Data-point. Unlike other types, this one needs to be processed afterwards, actually, since an access to a plotmaker object is necessary.

CmdType.new('data-point', :string, <<EOD)
A point from a Dataset.

TODO: document ;-)...
EOD
StoredDatasetType =

A stored dataset.

CmdType.new('stored-dataset', 
                                    :string, <<EOD)
A dataset that has already been loaded. It is either:
 * A number, in which case it specifies the index inside the stack. 0
   is the first on that was pushed onto the stack (the oldest
   dataset), 1 the second, -1 the last one, -2 the one before the last
   and so on. (it works just like Ruby's arrays).
 * The name of a named dataset.
EOD
AxisType =

Something meant to be fed to PlotStyle#get_axis_style

CmdType.new('axis', :string, <<EOD)
The name of an axis. It can be:
 * left, top, bottom or right;
 * x, xaxis, y, yaxis, which return one of the above depending 
   on the preferences of the current plot;
 * one of the named axes.
EOD
LabelType =

Something meant to be fed to PlotStyle#get_label_style

CmdType.new('label', :string, <<EOD)
The name of an label. It can be:
 * title to mean the current plot's title.
 * axis_tick or axis_ticks or simply axis, where axis is a a valid
   {type: axis}.  It means the ticks of the given axis.
 * axis_label, same as above but targets the label of the given axis.
EOD
GeneralGroup =

General scope commands.

CmdGroup.new('general', "General commands", 
"General scope commands", 1000)
CommandLineHelpCommand =

Display help on the command-line

Cmd.new("command-line-help", 'h', 
          "--help", [ ]) do |plotmaker|
  plotmaker.interpreter.doc.display_command_line_help
  exit 
end
PrintVersion =

Prints the version of ctioga2 used

Cmd.new("version", '-V', "--version", []) do |plotmaker|
  puts "This is ctioga2 version #{CTioga2::Version::version}"
end
RunCommandFile =

Includes a file

Cmd.new("include", '-f', "--file", 
          [ CmdArg.new('file'), ]) do |plotmaker, file|
  plotmaker.interpreter.run_command_file(file)
end
EvalCommand =

Evaluate a series of commands.

Cmd.new("eval", '-e', "--eval", 
                       [ CmdArg.new('commands'), ]) do |plotmaker, string|
  plotmaker.interpreter.run_commands(string)
end
VerboseLogging =

Increases verbosity

Cmd.new("verbose", '-v',  "--verbose", [ ]) do |plotmaker|
  CTioga2::Log::set_level(Logger::INFO)
end
DebugLogging =

Write debugging information.

TODO: this should be the place where a lot of customization of the debug output could go - including channels or things like that. To be seen later on…

Cmd.new("debug", nil,  "--debug", [ ]) do |plotmaker|
  CTioga2::Log::set_level(Logger::DEBUG)
end
EchoCmd =

Includes a file

Cmd.new("echo", nil,  "--echo", [ ]) do |plotmaker|
  STDERR.puts "Command-line used: "
  STDERR.puts plotmaker.quoted_command_line
end