def validate(model_files): """ This command validates *.flow, *.data or *.type-files. """ flow_dsl.get_metamodel_flow() # activate/register meta model for filename in model_files: try: print('validating flow/types/data dsl {}'.format(filename)) mm = MetaModelProvider.get_metamodel(None, filename) mm.model_from_file(filename) except BaseException as e: print(' WARNING/ERROR: {}'.format(e))
def test_flow_dsl_types_validation(): import flow_dsl mmF = flow_dsl.get_metamodel_flow() current_dir = os.path.dirname(__file__) with raises(textx.exceptions.TextXSyntaxError, match=r'.*lowercase.*'): mmF.model_from_file( os.path.join(current_dir, 'models', 'data_flow_including_error.flow'))
def test_flow_dsl_validation(): import flow_dsl mmF = flow_dsl.get_metamodel_flow() current_dir = os.path.dirname(__file__) with raises(textx.exceptions.TextXSemanticError, match=r'.*algo data types must match.*'): mmF.model_from_file( os.path.join(current_dir, 'models', 'data_flow_with_error.flow'))
def test_flow_dsl(): import flow_dsl mmF = flow_dsl.get_metamodel_flow() current_dir = os.path.dirname(__file__) model = mmF.model_from_file( os.path.join(current_dir, 'models', 'data_flow.flow')) assert (model is not None) assert (len(model.algos) == 2) assert (len(model.flows) == 1)
def test_flow_dsl(): import flow_dsl mmF = flow_dsl.get_metamodel_flow() current_dir = os.path.dirname(__file__) model = mmF.model_from_file( os.path.join(current_dir, 'models', 'data_flow.flow')) assert (model is not None) import flow_codegen txt = flow_codegen.codegen(model) assert txt == """@startuml
def codegen_flow_pu(model_files): """ This command transforms *.flow-files to *.pu files (plantuml). """ mm_flow = get_metamodel_flow() # activate/register dsl for filename in model_files: try: mm = MetaModelProvider.get_metamodel(None, filename) if mm == mm_flow: print('transforming {}'.format(filename)) m = mm.model_from_file(filename) txt = flow_codegen.codegen(m) with open(filename + ".pu", "w") as f: f.write(txt) else: raise Exception( "no code generator defined for metamodel {}".format(mm)) except BaseException as e: print(' WARNING/ERROR: {}'.format(e))