Module: Alf::Shell

Defined in:
lib/alf/shell.rb,
lib/alf/shell/support.rb,
lib/alf/shell/version.rb,
lib/alf/shell/operator.rb,
lib/alf/shell/from_argv.rb,
lib/alf/shell/doc_manager.rb,
lib/alf/shell/command/exec.rb,
lib/alf/shell/command/help.rb,
lib/alf/shell/command/main.rb,
lib/alf/shell/command/show.rb

Defined Under Namespace

Modules: Operator, Support, Version Classes: DocManager, Exec, Help, Main, Show

Constant Summary collapse

DOC_EXTRACTOR =

This is the main documentation extractor

DocManager.new
VERSION =
Version.to_s
FROM_ARGV =
Myrrha.coercions do |c|

  # ARGV -> Boolean
  c.coercion(Array, Boolean){|argv,_|
    throw :next_rule if argv.size > 1
    Alf::Support.coerce(argv.first || false, Boolean)
  }

  # ARGV -> Size
  c.coercion(Array, Size){|argv,_|
    throw :next_rule if argv.size > 1
    Size.new(Integer(argv.first || 0))
  }

  # ARGV -> AttrName
  c.coercion(Array, AttrName){|argv,_|
    throw :next_rule if argv.size > 1
    AttrName.coerce(argv.first)
  }

  # ARGV -> AttrList
  c.coercion(Array, AttrList){|argv,_|
    AttrList.coerce(argv)
  }

  # ARGV -> Heading
  c.coercion(Array, Heading){|argv,_|
    Heading.coerce(argv)
  }

  # ARGV -> Ordering
  c.coercion(Array, Ordering){|argv,_|
    Ordering.coerce(argv)
  }

  # ARGV -> Renaming
  c.coercion(Array, Renaming){|argv,_|
    Renaming.coerce(argv)
  }

  # ARGV -> Summarization
  c.coercion(Array, Summarization){|argv,_|
    Summarization.coerce(argv)
  }

  # ARGV -> TupleComputation
  c.coercion(Array, TupleComputation){|argv,_|
    TupleComputation.coerce(argv)
  }

  # ARGV -> TupleExpression
  c.coercion(Array, TupleExpression){|argv,_|
    throw :next_rule if argv.size != 1
    TupleExpression.coerce(argv.first)
  }

  # ARGV -> Predicate
  c.coercion(Array, Predicate){|argv,_|
    if argv.size == 1
      Predicate.coerce(argv.first)
    elsif (argv.size % 2) == 0
      Predicate.coerce(Hash[argv.each_slice(2).map{|k,v| [k.to_sym, eval(v)] }])
    else
      throw :next_rule
    end
  }

end

Class Method Summary collapse

Class Method Details

.CommandObject

Command factory



21
22
23
24
25
26
27
28
29
# File 'lib/alf/shell.rb', line 21

def self.Command()
  Quickl::Command(){|builder|
    builder.command_parent = Alf::Shell::Main
    builder.doc_extractor  = DOC_EXTRACTOR
    builder.class_module Command::ClassMethods
    builder.instance_module Shell::Support
    yield(builder) if block_given?
  }
end

.DelegatorObject

Delegator command factory



12
13
14
15
16
17
18
# File 'lib/alf/shell.rb', line 12

def self.Delegator()
  Quickl::Delegator(){|builder|
    builder.doc_extractor = DOC_EXTRACTOR
    builder.class_module Command::ClassMethods
    yield(builder) if block_given?
  }
end

.from_argv(argv, target_domain) ⇒ Object



73
74
75
# File 'lib/alf/shell/from_argv.rb', line 73

def self.from_argv(argv, target_domain)
  FROM_ARGV.coerce(argv, target_domain)
end

.OperatorObject

Operator factory



32
33
34
35
36
37
38
39
40
41
# File 'lib/alf/shell.rb', line 32

def self.Operator()
  Quickl::Command(){|builder|
    builder.command_parent = Alf::Shell::Main
    builder.doc_extractor  = DOC_EXTRACTOR
    builder.class_module    Operator::ClassMethods
    builder.instance_module Shell::Support
    builder.instance_module Operator::InstanceMethods
    yield(builder) if block_given?
  }
end