StringTemplate.ceylon
import ceylon.ast.core {
ElseOperation,
StringTemplate,
StringLiteral
}
import ceylon.ast.redhat {
RedHatTransformer,
stringTemplateToCeylon,
compileStringTemplate
}
import com.redhat.ceylon.compiler.typechecker.tree {
Tree {
JStringTemplate=StringTemplate
}
}
import ceylon.ast.create {
createStringTemplate=stringTemplate
}
shared object stringTemplate satisfies ConcreteTest<StringTemplate,JStringTemplate> {
shared String->StringTemplate helloNameElseWorldStringTemplate
= """"Hello, `` process.arguments.first else "World" ``!""""->createStringTemplate(
StringLiteral("Hello, "),
ElseOperation(qualifiedExpression.processArgumentsFirstExpression.item, StringLiteral("World")),
StringLiteral("!")
);
shared String->StringTemplate ifElseExpressionStringTemplate
= "\"\`\```ifElseExpression.ifThenIfElseLetExpression.key``\`\`\""->createStringTemplate(
StringLiteral(""),
ifElseExpression.ifThenIfElseLetExpression.item,
StringLiteral("")
);
shared String->StringTemplate emptyPartsStringTemplate
= """"``0````0``""""->createStringTemplate(
StringLiteral(""),
integerLiteral._0IntegerLiteral.item,
StringLiteral(""),
integerLiteral._0IntegerLiteral.item,
StringLiteral("")
);
shared String->StringTemplate multilineStringTemplate
= """"Line 1
Line ``2``
Line 3""""->createStringTemplate(
StringLiteral("""Line 1
Line """),
integerLiteral._2IntegerLiteral.item,
StringLiteral("""
Line 3""")
);
// not tested directly, but used by other tests
shared String->StringTemplate xyStringTemplate
= """"(``x``|``y``)""""->createStringTemplate(
StringLiteral("("),
baseExpression.xExpression.item,
StringLiteral("|"),
baseExpression.yExpression.item,
StringLiteral(")")
);
compile = compileStringTemplate;
fromCeylon = RedHatTransformer.transformStringTemplate;
toCeylon = stringTemplateToCeylon;
codes = [helloNameElseWorldStringTemplate, ifElseExpressionStringTemplate, emptyPartsStringTemplate, multilineStringTemplate];
}