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