Refactored Caching, Refactored BnfNodeParser, Introduced Sphinx

This commit is contained in:
2020-05-12 17:21:10 +02:00
parent 7d3a490bc5
commit 6e343ba996
110 changed files with 13865 additions and 7540 deletions
+19 -23
View File
@@ -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