416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
|
# File 'lib/when_exe/parts/resource.rb', line 416
def _parse(line, type=nil)
return line unless line.kind_of?(String)
line.sub!(/\s#.*\z/, '')
return When::Locale._split($1) if type && /\A#{type}:(.+)\z/i =~ line
tokens = line.scan(/((?:[^\\:]|\\.)+)(?::(?!\z))?|:/).flatten
return When::Locale._split(line) unless tokens.size > 1 && /\A(\*)?([A-Z][-A-Z_]{0,255})(?:;(.+))?\z/i =~ tokens[0]
marked, key, property = $~[1..3]
values = tokens[1..-1]
value = values.join(':') unless values == [nil]
content = ContentLine.new(key, value, marked)
value ||= ''
if property
content.attribute['.'] = property + ':' + value
property.scan(/((?:[^\\;]|\\.)+)(?:;(?!\z))?|;/).flatten.each do |pr|
pr ||= ''
pr.gsub!(/\\./) {|escape| ContentLine::RFC6350[escape] || escape}
prop = ContentLine.new(*pr.split(/=/, 2))
content.attribute[prop.predicate] = prop
end
else
content.attribute['.'] = value
end
return content
end
|