24: def self.from_pson(pson)
25: raise ArgumentError, "No resource type provided in pson data" unless type = pson['type']
26: raise ArgumentError, "No resource title provided in pson data" unless title = pson['title']
27:
28: resource = new(type, title)
29:
30: if params = pson['parameters']
31: params.each { |param, value| resource[param] = value }
32: end
33:
34: if tags = pson['tags']
35: tags.each { |tag| resource.tag(tag) }
36: end
37:
38: ATTRIBUTES.each do |a|
39: if value = pson[a.to_s]
40: resource.send(a.to_s + "=", value)
41: end
42: end
43:
44: resource.exported ||= false
45:
46: resource
47: end