module Flor::Caller::CmdParser

Public Instance Methods

cmd(i) click to toggle source
# File lib/flor/unit/caller_jruby.rb, line 90
def cmd(i); jseq(:cmd, i, :item, :separator); end
cmdline(i) click to toggle source
# File lib/flor/unit/caller_jruby.rb, line 97
def cmdline(i); seq(:cmdline, i, :var, '*', :cmd) end
dqstring(i) click to toggle source
# File lib/flor/unit/caller_jruby.rb, line 85
def dqstring(i); rex(:string, i, /"(\\"|[^"])*"/); end
equal(i) click to toggle source
# File lib/flor/unit/caller_jruby.rb, line 92
def equal(i); rex(nil, i, /[      ]*=[        ]*/); end
item(i) click to toggle source
# File lib/flor/unit/caller_jruby.rb, line 89
def item(i); alt(nil, i, :word, :sqstring, :dqstring); end
rewrite_cmd(t) click to toggle source

because of ‘ruby -e “sleep”` :-( is there another way?

# File lib/flor/unit/caller_jruby.rb, line 110
def rewrite_cmd(t)

  t.subgather(nil).collect { |tt| rewrite(tt) }
end
rewrite_cmdline(t) click to toggle source
# File lib/flor/unit/caller_jruby.rb, line 124
      def rewrite_cmdline(t)

#Raabro.pp(t, colours: true)
        [ rewrite_vars(t.subgather(:var)),
          *t.lookup(:cmd).subgather(nil).collect { |tt| rewrite(tt) } ]
      end
rewrite_string(t) click to toggle source
# File lib/flor/unit/caller_jruby.rb, line 103
def rewrite_string(t)
  s = t.string[1..-2]
  s == 'sleep' ? t.string : s # ah, the awful thing :-(
end
rewrite_vars(ts) click to toggle source
# File lib/flor/unit/caller_jruby.rb, line 115
def rewrite_vars(ts)

  ts.inject({}) { |h, t|
    k = t.lookup(:vkey).string
    v = t.lookup(:vval).string; v = v[1..-2] unless t.lookup(:word)
    h[k] = v
    h }
end
rewrite_word(t) click to toggle source

rewriting

# File lib/flor/unit/caller_jruby.rb, line 101
def rewrite_word(t); t.string; end
separator(i) click to toggle source

parsing

# File lib/flor/unit/caller_jruby.rb, line 83
def separator(i); rex(nil, i, /[  ]+/); end
sqstring(i) click to toggle source
# File lib/flor/unit/caller_jruby.rb, line 86
def sqstring(i); rex(:string, i, /'(\\'|[^'])*'/); end
var(i) click to toggle source
# File lib/flor/unit/caller_jruby.rb, line 95
def var(i); seq(:var, i, :vkey, :equal, :vval, :separator); end
vkey(i) click to toggle source
# File lib/flor/unit/caller_jruby.rb, line 94
def vkey(i); rex(:vkey, i, /[a-zA-Z_][a-zA-Z_0-9]*/); end
vval(i) click to toggle source
# File lib/flor/unit/caller_jruby.rb, line 93
def vval(i); alt(:vval, i, :word, :sqstring, :dqstring); end
word(i) click to toggle source
# File lib/flor/unit/caller_jruby.rb, line 88
def word(i); rex(:word, i, /[^    "']+/); end