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