Beispiel #1
0
 public CodeWriterFrame(PolyFileDbWriterFrame frame, TextGeneratorLanguage lang)
     : base(frame)
 {
     InitializeComponent();
     m_lang = lang;
     codeEditor1.Language = lang == TextGeneratorLanguage.Python ? CodeLanguage.Python : CodeLanguage.Template;
 }
Beispiel #2
0
        public static RunTextWriterDelegate CompileScript(string code, TextGeneratorLanguage language)
        {
            switch (language)
            {
            case TextGeneratorLanguage.Python:
                return(delegate(Stream fw, IDictionary <string, object> extnames, IDictionary <string, object> outnames)
                {
                    PythonEngine engine = new PythonEngine();
                    ScriptingEnv.InitializeEngine(engine);
                    engine.SetStandardOutput(fw);
                    CompiledCode compiled = engine.Compile(code);
                    //if (node != null) node.GetScriptingNS(engine.DefaultModule.Globals);
                    if (extnames != null)
                    {
                        foreach (string key in extnames.Keys)
                        {
                            engine.DefaultModule.Globals[key] = extnames[key];
                        }
                    }
                    compiled.Execute();
                    if (outnames != null)
                    {
                        foreach (string key in engine.DefaultModule.Globals.Keys)
                        {
                            outnames[key] = engine.DefaultModule.Globals[key];
                        }
                    }
                });

            case TextGeneratorLanguage.Template:
                return(delegate(Stream fw, IDictionary <string, object> extnames, IDictionary <string, object> outnames)
                {
                    PythonEngine engine = new PythonEngine();
                    engine.SetStandardOutput(fw);
                    ScriptingEnv.InitializeEngine(engine);
                    //if (node != null) node.GetScriptingNS(engine.DefaultModule.Globals);
                    if (extnames != null)
                    {
                        foreach (string key in extnames.Keys)
                        {
                            engine.DefaultModule.Globals[key] = extnames[key];
                        }
                    }
                    Template tpl = new Template(code, engine);
                    StreamWriter sw = new StreamWriter(fw);
                    TemplateEnviroment env = new TemplateEnviroment(sw);
                    tpl.Run(env);
                });
            }
            throw new Exception("DAE-00258 internal error");
        }