def construct_specsparameters(loader, node, spectype):
spec_class = {x.__name__: x for x in Spec.__subclasses__()}.get(spectype, None)
if not spec_class:
yaml_error(loader, yaml.constructor.ConstructorError(
None, None,
"Unrecognized Spec class %s" % spectype,
node.start_mark))
return
if not isinstance(node, yaml.MappingNode):
yaml_error(loader, yaml.constructor.ConstructorError(
None, None,
"expected a mapping node, but found %s" % node.id,
node.start_mark))
return
specs = OrderedDict()
for spec_key_node, spec_value_node in node.value:
try:
spec_key = str(loader.construct_scalar(spec_key_node))
except yaml.MarkedYAMLError, e:
yaml_error(loader, e)
specs[spec_key] = construct_spec(spec_class, loader, spec_value_node)
return specs
评论列表
文章目录