raise ArgumentError, "template #{str.inspect} should be a String" unless str.kind_of?(String)
# split and convert ':xyz' to symbols
- items = str.strip.split(/\s+/).collect { |c|
+ items = str.strip.split(/\]?\s+\[?/).collect { |c|
+ # there might be extra (non-alphanumeric) stuff (e.g. punctuation) after the symbol name
if /^(:|\*)(\w+)(.*)/ =~ c
- # there might be extra (non-alphanumeric) stuff (e.g. punctuation) after the symbol name
sym = ($1 == ':' ) ? $2.intern : "*#{$2}".intern
- if $3.nil?
+ if $3.empty?
sym
else
[sym, $3]
case default
when String
value.instance_variable_set(:@string_value, default)
- def value.to_s
- @string_value
- end
else
- def value.to_s
- value.join(' ')
- end
+ value.instance_variable_set(:@string_value, value.join(' '))
end
else
value = matching[i].split
- def value.to_s
- matching[i]
- end
+ value.instance_variable_set(:@string_value, matching[i])
+ end
+ def value.to_s
+ @string_value
end
options[item] = value
debug "set #{item} to #{value.inspect}"
end
else
value = @defaults[item]
- warning "No default value for optiona #{item.inspect} specified" unless @defaults.has_key?(item)
+ warning "No default value for option #{item.inspect} specified" unless @defaults.has_key?(item)
end
options[item] = value
debug "set #{item} to #{options[item].inspect}"