Refactored Caching, Refactored BnfNodeParser, Introduced Sphinx
This commit is contained in:
@@ -23,25 +23,21 @@ class ConceptHandler(BaseHandler):
|
||||
data[CONCEPT_ID] = (obj.key, obj.id)
|
||||
|
||||
# transform metadata
|
||||
for prop in CONCEPT_PROPERTIES_TO_SERIALIZE:
|
||||
value = getattr(obj.metadata, prop)
|
||||
ref_value = getattr(ref.metadata, prop)
|
||||
for name in CONCEPT_PROPERTIES_TO_SERIALIZE:
|
||||
value = getattr(obj.metadata, name)
|
||||
ref_value = getattr(ref.metadata, name)
|
||||
if value != ref_value:
|
||||
data["meta." + prop] = pickler.flatten(value)
|
||||
value_to_use = [list(t) for t in value] if name == "variables" else value
|
||||
data["meta." + name] = pickler.flatten(value_to_use)
|
||||
|
||||
# transform value
|
||||
for metadata, value in obj.values.items():
|
||||
ref_value = ref.values[metadata] if metadata in ref.values else None
|
||||
if value != ref_value:
|
||||
data[metadata.value] = pickler.flatten(value)
|
||||
|
||||
# transform properties
|
||||
for prop in obj.props:
|
||||
value = obj.props[prop].value
|
||||
if prop not in ref.props or value != ref.props[prop].value:
|
||||
if "props" not in data:
|
||||
data["props"] = []
|
||||
data["props"].append((pickler.flatten(prop), pickler.flatten(value)))
|
||||
# # transform values
|
||||
for name in obj.values:
|
||||
value = obj.get_value(name)
|
||||
if name not in ref.values or value != ref.get_value(name):
|
||||
if "values" not in data:
|
||||
data["values"] = []
|
||||
key_to_use = "cParts." + name.value if isinstance(name, ConceptParts) else name
|
||||
data["values"].append((pickler.flatten(key_to_use), pickler.flatten(value)))
|
||||
|
||||
return data
|
||||
|
||||
@@ -61,18 +57,18 @@ class ConceptHandler(BaseHandler):
|
||||
if key.startswith("meta."):
|
||||
# get metadata
|
||||
resolved_prop = key[5:]
|
||||
if resolved_prop == "props":
|
||||
if resolved_prop == "variables":
|
||||
for prop_name, prop_value in resolved_value:
|
||||
instance.def_prop(prop_name, prop_value)
|
||||
instance.def_var(prop_name, prop_value)
|
||||
else:
|
||||
setattr(instance.metadata, resolved_prop, resolved_value)
|
||||
elif key == "props":
|
||||
elif key == "values":
|
||||
# get properties
|
||||
for prop_name, prop_value in resolved_value:
|
||||
instance.set_prop(prop_name, prop_value)
|
||||
key_to_use = ConceptParts(prop_name[7:]) if isinstance(prop_name, str) and prop_name.startswith("cParts.") else prop_name
|
||||
instance.set_value(key_to_use, prop_value)
|
||||
else:
|
||||
# get value
|
||||
instance.set_metadata_value(ConceptParts(key), resolved_value)
|
||||
raise Exception("Sanity check as it's not possible yet")
|
||||
|
||||
instance.freeze_definition_hash()
|
||||
return instance
|
||||
|
||||
Reference in New Issue
Block a user