Module: Flor::Caller::CmdParser

Includes:
Raabro
Defined in:
lib/flor/unit/caller_jruby.rb

Instance Method Summary collapse

Instance Method Details

#cmd(i) ⇒ Object



90
# File 'lib/flor/unit/caller_jruby.rb', line 90

def cmd(i); jseq(:cmd, i, :item, :separator); end

#cmdline(i) ⇒ Object



97
# File 'lib/flor/unit/caller_jruby.rb', line 97

def cmdline(i); seq(:cmdline, i, :var, '*', :cmd) end

#dqstring(i) ⇒ Object



85
# File 'lib/flor/unit/caller_jruby.rb', line 85

def dqstring(i); rex(:string, i, /"(\\"|[^"])*"/); end

#equal(i) ⇒ Object



92
# File 'lib/flor/unit/caller_jruby.rb', line 92

def equal(i); rex(nil, i, /[ 	]*=[ 	]*/); end

#item(i) ⇒ Object



89
# File 'lib/flor/unit/caller_jruby.rb', line 89

def item(i); alt(nil, i, :word, :sqstring, :dqstring); end

#rewrite_cmd(t) ⇒ Object

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



110
111
112
113
# File 'lib/flor/unit/caller_jruby.rb', line 110

def rewrite_cmd(t)

  t.subgather(nil).collect { |tt| rewrite(tt) }
end

#rewrite_cmdline(t) ⇒ Object



124
125
126
127
128
129
# 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) ⇒ Object



103
104
105
106
# 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) ⇒ Object



115
116
117
118
119
120
121
122
# 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) ⇒ Object

rewriting



101
# File 'lib/flor/unit/caller_jruby.rb', line 101

def rewrite_word(t); t.string; end

#separator(i) ⇒ Object

parsing



83
# File 'lib/flor/unit/caller_jruby.rb', line 83

def separator(i); rex(nil, i, /[ 	]+/); end

#sqstring(i) ⇒ Object



86
# File 'lib/flor/unit/caller_jruby.rb', line 86

def sqstring(i); rex(:string, i, /'(\\'|[^'])*'/); end

#var(i) ⇒ Object



95
# File 'lib/flor/unit/caller_jruby.rb', line 95

def var(i); seq(:var, i, :vkey, :equal, :vval, :separator); end

#vkey(i) ⇒ Object



94
# 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) ⇒ Object



93
# File 'lib/flor/unit/caller_jruby.rb', line 93

def vval(i); alt(:vval, i, :word, :sqstring, :dqstring); end

#word(i) ⇒ Object



88
# File 'lib/flor/unit/caller_jruby.rb', line 88

def word(i); rex(:word, i, /[^ 	"']+/); end