Skip to content

Commit

Permalink
refactored Pickle::Session::Conversion
Browse files Browse the repository at this point in the history
  • Loading branch information
ianwhite committed Aug 28, 2010
1 parent af34072 commit 978cfd7
Showing 1 changed file with 22 additions and 23 deletions.
45 changes: 22 additions & 23 deletions lib/pickle/session/conversion.rb
Expand Up @@ -24,15 +24,27 @@ def attributes(fields)
end
end

private
def convert_hash_attributes(fields)
fields.stringify_keys!
fields.each do |key, value|
if value =~ /^#{pickle_ref.source}$/
begin
fields[key] = retrieve(value)
rescue Pickle::UnknownModelError, Pickle::InvalidPickleRefError
end
private
def retrieve_model_from_value(value)
value =~ /^#{pickle_ref.source}$/ && retrieve(value)
rescue Pickle::UnknownModelError, Pickle::InvalidPickleRefError
end

def parse_value(value)
case value
when /^"(.*)"$/ then $1
when /^'(.*)'$/ then $1
when /^(#{match_value})$/ then eval($1)
else
raise UnknownFieldsFormatError, "#{value.inspect} is in an unknown format"
end
end

def convert_hash_attributes(attrs)
attrs.stringify_keys!
attrs.each do |key, value|
if model = retrieve_model_from_value(value)
attrs[key] = model
end
end
end
Expand All @@ -42,20 +54,7 @@ def convert_string_attributes(fields)
fields.scan(match_field) do |field|
key, value = field.split(':', 2)
value.strip!

model = begin
value = retrieve(value)
rescue Pickle::UnknownModelError, Pickle::InvalidPickleRefError
value = case value
when /^"(.*)"$/ then $1
when /^'(.*)'$/ then $1
when /^(#{match_value})$/ then eval($1)
else
raise UnknownFieldsFormatError, "#{field.inspect} is in an unknown format"
end
end

attrs[key] = value
attrs[key] = retrieve_model_from_value(value) || parse_value(value)
end
attrs
end
Expand Down

0 comments on commit 978cfd7

Please sign in to comment.