def _serialize_value(value): """Serialize AST values into a simple string.""" response = "" for element in value.elements: if isinstance(element, ast.TextElement): response += element.value elif isinstance(element, ast.Placeable): if isinstance(element.expression, ast.SelectExpression): default_variant = _get_default_variant(element.expression.variants) response += _serialize_value(default_variant.value) else: response += "{ " + serialize_expression(element.expression) + " }" return response
def _serialize_value(value): """Serialize AST values into a simple string.""" response = '' for element in value.elements: if isinstance(element, ast.TextElement): response += element.value elif isinstance(element, ast.Placeable): if isinstance(element.expression, ast.SelectExpression): default_variant = _get_default_variant(element.expression.variants) response += _serialize_value(default_variant.value) else: response += '{ ' + serialize_expression(element.expression) + ' }' return response
def test_invalid_expression(self): with self.assertRaisesRegex(Exception, 'Unknown expression type'): serialize_expression(None) with self.assertRaisesRegex(Exception, 'Unknown expression type'): serialize_expression(object())
def pretty_expr(text): parser = FluentParser() entry = parser.parse_entry(dedent_ftl(text)) expr = entry.value.elements[0].expression return serialize_expression(expr)