Example #1
0
 private DocumentValue documentFromBlob(Context context, BlobValue blob)
 {
     if ("application/zip" != blob.MimeType)
     {
         throw new NotSupportedException();
     }
     try {
         Dictionary <String, byte[]> parts = ReadParts(blob.Data);
         JObject value = ReadValue(parts);
         JToken  token;
         if (!value.TryGetValue("type", out token))
         {
             throw new InvalidDataException("Expecting a 'type' field!");
         }
         IType type = new ECleverParser(token.ToString()).parse_standalone_type();
         if (type != DocumentType.Instance)
         {
             throw new InvalidDataException("Expecting a Document type!");
         }
         if (!value.TryGetValue("value", out token))
         {
             throw new InvalidDataException("Expecting a 'value' field!");
         }
         return((DocumentValue)type.ReadJSONValue(context, token, parts));
     } catch (Exception e) {
         throw new ReadWriteError(e.Message);
     }
 }
Example #2
0
        public void canParseAndTranslateCss()
        {
            String        css    = "s2 = {color:#999;}";
            ECleverParser parser = new ECleverParser(css);
            IStatement    stmt   = parser.doParse <AssignInstanceStatement>(parser.assign_instance_statement, false);

            Assert.IsNotNull(stmt);
            CodeWriter writer = new CodeWriter(Dialect.E, Context.newGlobalsContext());

            stmt.ToDialect(writer);
            String result = writer.ToString();

            Assert.AreEqual(css, result);
        }
Example #3
0
        public void canParseAndTranslateMultilineAttributes()
        {
            String          jsx    = "return <a \n\tx=\"abc\"\n\ty=\"def\"\n\tz=\"stuff\" />";
            ECleverParser   parser = new ECleverParser(jsx);
            ReturnStatement stmt   = parser.doParse <ReturnStatement>(parser.return_statement, true);

            Assert.IsNotNull(stmt.getExpression());
            CodeWriter writer = new CodeWriter(Dialect.M, Context.newGlobalsContext());

            stmt.ToDialect(writer);
            String result = writer.ToString();

            Assert.AreEqual(jsx, result);
        }
Example #4
0
        IExpression parse_expression(String code)
        {
            ECleverParser   parser = new ECleverParser(code);
            ITokenStream    stream = (ITokenStream)parser.InputStream;
            EIndentingLexer lexer  = (EIndentingLexer)stream.TokenSource;

            lexer.AddLF = false;
            IParseTree      tree    = parser.expression();
            EPromptoBuilder builder = new EPromptoBuilder(parser);
            ParseTreeWalker walker  = new ParseTreeWalker();

            walker.Walk(builder, tree);
            return(builder.GetNodeValue <IExpression>(tree));
        }
Example #5
0
        public void testSystemOutPrint()
        {
            ECleverParser   parser = new ECleverParser("System.Console.Write(value);");
            ITokenStream    stream = (ITokenStream)parser.InputStream;
            EIndentingLexer lexer  = (EIndentingLexer)stream.TokenSource;

            lexer.AddLF = false;
            IParseTree      tree    = parser.csharp_statement();
            EPromptoBuilder builder = new EPromptoBuilder(parser);
            ParseTreeWalker walker  = new ParseTreeWalker();

            walker.Walk(builder, tree);
            CSharpStatement statement = builder.GetNodeValue <CSharpStatement>(tree);
            Context         context   = Context.newGlobalsContext();
            IParameter      arg       = new CategoryParameter(TextType.Instance, "value");

            arg.register(context);
            context.setValue("value", new prompto.value.TextValue("test")); // StringLiteral trims enclosing quotes
            Object result = statement.interpret(context, null);

            Assert.IsNull(result);
            Assert.AreEqual("test", Out.read());
        }