lib/dr/parse/simple_parser.rb in drain-0.2.0 vs lib/dr/parse/simple_parser.rb in drain-0.3.0

- old
+ new

@@ -22,9 +22,27 @@ end name=name.to_sym if symbolize return name,value end + # parse opt1=value1:opt2=value2... + def parse_options(options, arg_split:':', valuesep: '=', opt_default: true, keyed_sep: "/") + return {} unless options + parsed_options={} + options=options.split(arg_split) unless options.is_a?(Enumerable) + options.each do |optvalue| + opt,value=DR::SimpleParser.parse_namevalue(optvalue,sep: valuesep, default: opt_default) + parsed_options.set_keyed_value(opt,value, sep: keyed_sep) + end + return parsed_options + end + + # parse name:opt1=value1:opt2=value2... + def parse_name_options(name, arg_split:':', **keywords) + name,*options=name.split(arg_split) + return name, parse_options(options, arg_split: arg_split, **keywords) + end + #takes a string as "name:value!option1=ploum!option2=plam,name2:value2!!globalopt=plim,globalopt2=plam!!globalopt3=plom,globalopt4=plim" #and return the hash #{values: {name: value, name2: value2}, # local_opts: {name: {option1:ploum,option2:plam}}, # global_opts: {globalopt: plim, globalopt2: plam},