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); } }
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); }
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); }
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)); }
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()); }