Beispiel #1
0
 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()
Beispiel #2
0
 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)
Beispiel #3
0
 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)
Beispiel #4
0
 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))
Beispiel #5
0
 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(")")
Beispiel #6
0
 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)