Sha256: 7db72e260d2efd0bfa1ce983021af4f8cd91aa385b4d2af696e900f794bbdaa3
Contents?: true
Size: 1.84 KB
Versions: 1
Compression:
Stored size: 1.84 KB
Contents
grammar CommandLine rule command name (delimited_option / delimited_argument)* { def option_list opts = self.elements[1].elements.inject([]) do |a, e| a << e.opt_value end opts.compact end def argument_list args = self.elements[1].elements.inject([]) do |a, e| a << e.arg_value end args.compact end } end rule name argument end rule delimited_option ' ' option { def opt_value self.option.opt_value end def arg_value self.option.arg_value end } end rule delimited_argument ' ' argument { def opt_value nil end def arg_value self.argument.text_value end } end rule option (long_option / short_option) end rule long_option '--' (opt_name '=' argument / opt_name) { def opt_value self.elements[1].respond_to?(:opt_name) ? self.elements[1].opt_name.text_value : self.elements[1].text_value end def arg_value self.elements[1].respond_to?(:opt_name) ? self.elements[1].argument.text_value : nil end } end rule short_option '-' (label_char '=' argument / opt_name) { def opt_value self.elements[1].respond_to?(:label_char) ? self.elements[1].label_char.text_value : self.elements[1].text_value end def arg_value self.elements[1].respond_to?(:label_char) ? self.elements[1].argument.text_value : nil end } end rule argument (quoted_chars / unquoted_chars) { def arg_value self.text_value end } end rule opt_name label_char+ end rule label_char [a-zA-Z0-9] end rule quoted_chars '"' (!'"' . / '\"')* '"' end rule unquoted_chars (!' ' . / '\ ')+ end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ssh-allow-0.6.0 | lib/ssh/allow/command_line.treetop |