def bodyToDialect(self, writer: CodeWriter): from prompto.statement.ReturnStatement import ReturnStatement if len(self.statements) == 1 and isinstance(self.statements[0], ReturnStatement): self.statements[0].expression.toDialect(writer) else: writer.append("{").newLine().indent() self.statements.toDialect(writer) writer.newLine().dedent().append("}").newLine()
def testCanParseAndTranslateMultilineAttributes(self): jsx = "return <a \n\tx=\"abc\"\n\ty=\"def\"\n\tz=\"stuff\" />;" parser = OCleverParser(text=jsx) stmt = parser.doParse(parser.return_statement) self.assertIsNotNone(stmt.expression) writer = CodeWriter(Dialect.O, Context.newGlobalContext()) stmt.toDialect(writer) writer.append(";") out = str(writer) self.assertEquals(jsx, out)
def testCanParseAndTranslateMultilineElements(self): jsx = "return <a>\n\t<b/>\n\t<b/>\n</a>;" parser = OCleverParser(text=jsx) stmt = parser.doParse(parser.return_statement) self.assertIsNotNone(stmt.expression) writer = CodeWriter(Dialect.O, Context.newGlobalContext()) stmt.toDialect(writer) writer.append(";") out = str(writer) self.assertEquals(jsx, out)
def testMethodCallWith(self): statement = "print(value = \"person\" + p.name);" mc = self.parse(statement, OParser.method_call_statement) self.assertIsNotNone(mc) self.assertEquals("print", mc.caller.name) self.assertIsNotNone(mc.arguments) arg = mc.arguments[0] self.assertEquals("value", arg.getName()) exp = arg.getExpression() self.assertIsInstance(exp, PlusExpression) writer = CodeWriter(Dialect.O, Context.newGlobalContext()) mc.toDialect(writer) writer.append(';') self.assertEquals(statement, str(writer))
def argsToDialect(self, writer: CodeWriter): if self.args is None or len(self.args) == 0: writer.append("()") elif len(self.args) == 1: writer.append(self.args[0]) else: writer.append("(") self.args.toDialect(writer, False) writer.append(")")
def toDialect(self, writer: CodeWriter): self.argsToDialect(writer) if self.argsSuite is not None: writer.append(self.argsSuite) writer.append("=>") if self.arrowSuite is not None: writer.append(self.arrowSuite) self.bodyToDialect(writer)