public static ValueList From(Value value) { if (value.IsString()) { var s = value.AsString().GetValue(); var list = new ValueList(); for (int i = 0; i < s.Length; i++) { list.AddItem(new ValueString(s.Substring(i, 1))); } return(list); } if (value.IsObject()) { var list = new ValueList(); foreach (var member in value.AsObject().value.Keys) { list.AddItem(new ValueString(member)); } return(list); } return(value.AsList()); }
public TestCaseInterpreter WithList(string varname, params int[] values) { var list = new ValueList(); foreach (var value in values) { list.AddItem(new ValueInt(value)); } With(varname, list); return(this); }
static void Main(string[] args) { try { if (args.Length == 0) { Console.Error.WriteLine("Syntax: ckl-run-dotnet [--secure] [--legacy] scriptname [scriptargs...]"); System.Environment.Exit(1); } var secure = false; var legacy = false; string scriptname = null; var scriptargs = new ValueList(); var in_options = true; foreach (var arg in args) { if (in_options) { if (arg == "--secure") { secure = true; } else if (arg == "--legacy") { legacy = true; } else if (arg.StartsWith("--")) { Console.Error.WriteLine("Unknown option " + arg); System.Environment.Exit(1); } else { in_options = false; scriptname = arg; } } else { scriptargs.AddItem(new ValueString(arg)); } } if (scriptname == null) { Console.Error.WriteLine("Syntax: ckl-run-dotnet [--secure] [--legacy] scriptname [scriptargs...]"); System.Environment.Exit(1); } if (!File.Exists(scriptname)) { Console.Error.WriteLine("File not found " + scriptname); System.Environment.Exit(1); } var interpreter = new Interpreter(secure, legacy); interpreter.SetStandardInput(Console.In); interpreter.SetStandardOutput(Console.Out); interpreter.GetEnvironment().Put("scriptname", new ValueString(scriptname)); interpreter.GetEnvironment().Put("args", scriptargs); var value = interpreter.Interpret(File.ReadAllText(scriptname, Encoding.UTF8), scriptname); if (value.IsReturn()) { value = value.AsReturn().value; } if (value != ValueNull.NULL) { Console.Out.WriteLine(value); } } catch (ControlErrorException e) { Console.Out.WriteLine("ERR: " + e.GetErrorValue().AsString().GetValue() + " (Line " + e.GetPos() + ")"); Console.Out.WriteLine(e.GetStacktrace().ToString()); } catch (SyntaxError e) { Console.Out.WriteLine(e.Message + (e.GetPos() != null ? " (Line " + e.GetPos() + ")" : "")); } catch (Exception e) { Console.Out.WriteLine(e.Message); } }
static void Main(string[] args) { var secure = false; var legacy = false; foreach (var arg in args) { if (arg == "--secure") { secure = true; } if (arg == "--legacy") { legacy = true; } } var interpreter = new Interpreter(secure, legacy); interpreter.SetStandardInput(Console.In); interpreter.SetStandardOutput(Console.Out); var modulepath = new ValueList(); foreach (var arg in args) { if (arg.StartsWith("-I")) { modulepath.AddItem(new ValueString(arg.Substring(2))); } } modulepath.MakeReadonly(); interpreter.GetEnvironment().Put("checkerlang_module_path", modulepath); foreach (var arg in args) { if (arg.StartsWith("--")) { continue; } if (arg.StartsWith("-I")) { continue; } interpreter.Interpret(File.ReadAllText(arg, Encoding.UTF8), arg); } Console.Write("> "); var line = Console.ReadLine(); while (line != "exit") { try { Parser.Parse(line, "{stdin}"); } catch (SyntaxError e) { if (e.Message.StartsWith("Unexpected end of input")) { Console.Write("+ "); line += "\n" + Console.ReadLine(); continue; } } catch (Exception) { Console.Write("+ "); line += "\n" + Console.ReadLine(); continue; } if (!line.Equals(";")) { try { var value = interpreter.Interpret(line, "{stdin}"); if (value.IsReturn()) { value = value.AsReturn().value; } if (value != ValueNull.NULL) { Console.WriteLine(value); } } catch (ControlErrorException e) { Console.WriteLine("ERR: " + e.GetErrorValue().AsString().GetValue() + " (Line " + e.GetPos() + ")"); Console.WriteLine(e.GetStacktrace().ToString()); } catch (SyntaxError e) { Console.WriteLine(e.Message + (e.GetPos() != null ? " (Line " + e.GetPos() + ")" : "")); } catch (Exception e) { Console.WriteLine(e.Message); } } Console.Write("> "); line = Console.ReadLine(); } }
public static ValueList From(Value value, string what) { if (value.IsString()) { var s = value.AsString().GetValue(); var list = new ValueList(); for (int i = 0; i < s.Length; i++) { list.AddItem(new ValueString(s.Substring(i, 1))); } return(list); } if (value.IsMap() && what == "keys") { var list = new ValueList(); foreach (var member in value.AsMap().GetValue().Keys) { list.AddItem(member); } return(list); } if (value.IsMap() && what == "entries") { var list = new ValueList(); foreach (var entry in value.AsMap().GetValue()) { var element = new ValueList(); element.AddItem(entry.Key); element.AddItem(entry.Value); list.AddItem(element); } return(list); } if (value.IsObject() && what == "keys") { var list = new ValueList(); foreach (var member in value.AsObject().value.Keys) { list.AddItem(new ValueString(member)); } return(list); } if (value.IsObject() && what == "values") { var list = new ValueList(); foreach (var member in value.AsObject().value.Values) { list.AddItem(member); } return(list); } if (value.IsObject() && what == "entries") { var list = new ValueList(); foreach (var member in value.AsObject().value) { var element = new ValueList(); element.AddItem(new ValueString(member.Key)); element.AddItem(member.Value); list.AddItem(element); } return(list); } if (value.IsObject()) { var list = new ValueList(); foreach (var member in value.AsObject().value.Keys) { list.AddItem(new ValueString(member)); } return(list); } return(value.AsList()); }