class Flunkey::Metadata
Constants
- ARRAY
- SINGLE
Public Class Methods
parse(string)
click to toggle source
# File lib/flunkey/metadata.rb, line 6 def self.parse(string) meta = Metadata.new lines = string.lines idx = 0 arr_key = arr_value = nil while idx < lines.length if arr_key ARRAY.match(lines[idx]) do |m| value = m[1] if value == ')' # array is complete meta[arr_key] = arr_value arr_key = arr_value = nil else value.gsub!(/,$/, '') arr_value << (value=='(null)' ? nil : value.gsub('"','')) end end else SINGLE.match(lines[idx]) do |m| key, value = m[1], m[2] if value=='(' # we'll start an array arr_key = key arr_value = [] else meta[key] = (value=='(null)' ? nil : value.gsub('"','')) end end end idx += 1 end meta.each { |k, v| meta[k] = DateTime.parse(v) if k =~ /Date/ } meta end