# File lib/puppet/provider/augeas/augeas.rb, line 57
 57:     def parse_commands(data)
 58:         context = resource[:context]
 59:         # Add a trailing / if it is not there
 60:         if (context.length > 0)
 61:             context << "/" if context[-1, 1] != "/"
 62:         end
 63: 
 64:         if data.is_a?(String)
 65:             data = data.split($/)
 66:         end
 67:         args = []
 68:         data.each do |line|
 69:             line.strip!
 70:             next if line.nil? || line.empty?
 71:             argline = []
 72:             sc = StringScanner.new(line)
 73:             cmd = sc.scan(/\w+|==|!=/)
 74:             formals = COMMANDS[cmd]
 75:             fail("Unknown command #{cmd}") unless formals
 76:             argline << cmd
 77:             narg = 0
 78:             formals.each do |f|
 79:                 sc.skip(/\s+/)
 80:                 narg += 1
 81:                 if f == :path
 82:                     start = sc.pos
 83:                     nbracket = 0
 84:                     begin
 85:                         sc.skip(/([^\]\[\s\\]|\\.)+/)
 86:                         ch = sc.getch
 87:                         nbracket += 1 if ch == "["
 88:                         nbracket -= 1 if ch == "]"
 89:                         fail("unmatched [") if nbracket < 0
 90:                     end until nbracket == 0 && (sc.eos? || ch =~ /\s/)
 91:                         len = sc.pos - start
 92:                         len -= 1 unless sc.eos?
 93:                     unless p = sc.string[start, len]
 94:                         fail("missing path argument #{narg} for #{cmd}")
 95:                     end
 96:                     p.chomp!("/")
 97:                     if p[0,1] != "$" && p[0,1] != "/"
 98:                         argline << context + p
 99:                     else
100:                         argline << p
101:                     end
102:                 elsif f == :string
103:                     delim = sc.peek(1)
104:                     if delim == "'" || delim == "\""
105:                         sc.getch
106:                         argline << sc.scan(/([^\\#{delim}]|(\\.))*/)
107:                         sc.getch
108:                     else
109:                         argline << sc.scan(/[^\s]+/)
110:                     end
111:                     unless argline[-1]
112:                         fail("missing string argument #{narg} for #{cmd}")
113:                     end
114:                 elsif f == :comparator
115:                     argline << sc.scan(/(==|!=|=~|<|<=|>|>=)/)
116:                     unless argline[-1]
117:                         puts sc.rest
118:                         fail("invalid comparator for command #{cmd}")
119:                     end
120:                 elsif f == :int
121:                     argline << sc.scan(/\d+/).to_i
122:                 elsif f== :glob
123:                     argline << sc.rest
124:                 end
125:             end
126:             args << argline
127:         end
128:         return args
129:     end