390: def self.from_pson(data)
391: result = new(data['name'])
392:
393: if tags = data['tags']
394: result.tag(*tags)
395: end
396:
397: if version = data['version']
398: result.version = version
399: end
400:
401: if resources = data['resources']
402: resources = PSON.parse(resources) if resources.is_a?(String)
403: resources.each do |res|
404: resource_from_pson(result, res)
405: end
406: end
407:
408: if edges = data['edges']
409: edges = PSON.parse(edges) if edges.is_a?(String)
410: edges.each do |edge|
411: edge_from_pson(result, edge)
412: end
413: end
414:
415: if classes = data['classes']
416: result.add_class(*classes)
417: end
418:
419: result
420: end