Class: Gloo::Core::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/gloo/core/parser.rb

Instance Method Summary collapse

Constructor Details

#initializeParser

Set up the parser.



15
16
17
# File 'lib/gloo/core/parser.rb', line 15

def initialize
  $log.debug 'parser intialized...'
end

Instance Method Details

#parse_immediate(cmd) ⇒ Object

Parse a command from the immediate execution context.



22
23
24
25
26
27
28
29
30
31
32
# File 'lib/gloo/core/parser.rb', line 22

def parse_immediate( cmd )
  cmd, params = split_params cmd
  params = Gloo::Core::Tokens.new( params ) if params
  tokens = Gloo::Core::Tokens.new( cmd )
  dic = Gloo::Core::Dictionary.instance
  verb = dic.find_verb( tokens.verb )
  return verb.new( tokens, params ) if verb

  $log.error "Verb '#{tokens.verb}' was not found."
  return nil
end

#run(cmd) ⇒ Object

Parse a command and then run it if it parsed correctly.



52
53
54
55
# File 'lib/gloo/core/parser.rb', line 52

def run( cmd )
  v = parse_immediate( cmd )
  Gloo::Exec::Runner.go( v ) if v
end

#split_params(cmd) ⇒ Object

If additional params were provided, split them out from the token list.



38
39
40
41
42
43
44
45
46
47
# File 'lib/gloo/core/parser.rb', line 38

def split_params( cmd )
  params = nil
  i = cmd.rindex( '(' )
  if i && cmd.strip.end_with?( ')' )
    pstr = cmd[ i + 1..-1 ]
    params = pstr.strip[ 0..-2 ] if pstr
    cmd = cmd[ 0, i - 1 ]
  end
  return cmd, params
end