def load_models(self, model, encoding='utf-8'): from textx.model import get_metamodel from textx.scoping import GlobalModelRepository # do we already have loaded models (analysis)? No -> check/load them if hasattr(model, "_tx_model_repository"): pass else: if hasattr(get_metamodel(model), "_tx_model_repository"): model_repository = GlobalModelRepository(get_metamodel( model)._tx_model_repository.all_models) else: model_repository = GlobalModelRepository() model._tx_model_repository = model_repository self._load_referenced_models(model, encoding=encoding)
def get_metamodel(parent_model, filename): from textx.model import get_metamodel import fnmatch for p, mm in MetaModelProvider._pattern_to_metamodel.items(): if fnmatch.fnmatch(filename, p): # print("loading model {} with special mm".format(filename)); return mm # print("loading model {} with present mm".format(filename)) return get_metamodel(parent_model)
def get_metamodel(parent_model, filename): from textx.model import get_metamodel import fnmatch for p, mm in MetaModelProvider._pattern_to_metamodel.items(): if fnmatch.fnmatch(filename, p): # print("loading model {} with special mm".format(filename)); return mm # print("loading model {} with present mm".format(filename)) if parent_model: return get_metamodel(parent_model) else: raise Exception( "unexpected: no meta model found for {}".format(filename))