Uso¶
Cómo parsear CML y navegar el modelo de objetos resultante.
Modos de parseo¶
- Estricto:
parse_file(path)oparse_text(text)lanzanCmlSyntaxErroren el primer error de sintaxis. - Seguro:
parse_file_safe(path)devuelve un objetoCMLconparse_resultsque incluye errores y warnings, construyendo el modelo hasta donde sea posible.
from cml_parser import parse_file_safe
cml = parse_file_safe("model.cml")
if cml.parse_results.ok:
print("Parseado!")
else:
for err in cml.parse_results.errors:
print(err.pretty())
Navegar el modelo¶
El objeto raíz CML da acceso a dominios, context maps, contextos y elementos tácticos DDD:
cm = cml.get_context_map("InsuranceLandscape")
ctx = cm.get_context("PolicyManagement")
agg = ctx.get_aggregate("PolicyAggregate")
entity = agg.get_entity("Policy")
for attr in entity.attributes:
print(attr.name, attr.type)
Helpers comunes en CML:
get_context_map(name)get_context(name)get_domain(name)/get_subdomain(name)get_aggregate(name)/get_entity(name, context_name=None, aggregate_name=None)get_use_case(name)
Context maps y relaciones:
Diagnósticos¶
ParseResult se adjunta a la instancia CML como parse_results:
pr = cml.parse_results
print(pr.ok) # bool
print(pr.errors) # list[Diagnostic]
print(pr.warnings) # list[Diagnostic]
print(pr.filename) # ruta del archivo
Diagnostic.pretty() formatea errores con archivo/línea/columna cuando están disponibles.
CLI¶
Ejecutar el parser desde línea de comandos:
python -m cml_parser.parser path/to/model.cml --summary
python -m cml_parser.parser path/to/model.cml --json
- Retorna código
0si parsea,1ante errores. --jsones útil para scripting en CI.