예제 #1
0
            public void SyntaxCheckAndDump(Stream s, UGUI user, UUID assetID, TextReader reader, CultureInfo cultureInfo = null, Func <string, TextReader> includeOpen = null)
            {
                int linenumber = 1;
                var shbangs    = new Dictionary <int, string>();
                var header     = new StringBuilder();

                while (reader.Peek() == '/')
                {
                    string shbang = reader.ReadLine();
                    header.AppendLine(shbang);
                    if (shbang.StartsWith("//#!"))
                    {
                        shbangs.Add(linenumber, shbang);
                    }
                    ++linenumber;
                }
                using (var headReader = new StreamReaderAddHead(header.ToString(), reader))
                {
                    SyntaxCheckAndDump(s, user, shbangs, assetID, headReader, cultureInfo: cultureInfo, includeOpen: includeOpen);
                }
            }
예제 #2
0
            public IScriptAssembly Compile(AppDomain appDom, UGUI user, UUID assetID, TextReader reader, CultureInfo cultureInfo = null, Func <string, TextReader> includeOpen = null)
            {
                int linenumber = 1;
                var shbangs    = new Dictionary <int, string>();
                var header     = new StringBuilder();

                while (reader.Peek() == '/')
                {
                    var shbang = reader.ReadLine();
                    header.AppendLine(shbang);
                    if (shbang.StartsWith("//#!"))
                    {
                        shbangs.Add(linenumber, shbang);
                    }
                    ++linenumber;
                }

                using (var headReader = new StreamReaderAddHead(header.ToString(), reader))
                {
                    return(Compile(user, shbangs, assetID, headReader, cultureInfo: cultureInfo, includeOpen: includeOpen));
                }
            }
예제 #3
0
            public void CompileToDisk(string filename, UGUI user, UUID assetID, TextReader reader, CultureInfo cultureInfo = null, Func <string, TextReader> includeOpen = null)
            {
                int linenumber = 1;
                var shbangs    = new Dictionary <int, string>();
                var header     = new StringBuilder();

                while (reader.Peek() == '/')
                {
                    var shbang = reader.ReadLine();
                    header.AppendLine(shbang);
                    if (shbang.StartsWith("//#!"))
                    {
                        shbangs.Add(linenumber, shbang);
                    }
                    ++linenumber;
                }

                var compiler = DetermineShBangs(shbangs, cultureInfo);

                using (var headReader = new StreamReaderAddHead(header.ToString(), reader))
                {
                    compiler.CompileToDisk(filename, AppDomain.CurrentDomain, user, shbangs, assetID, headReader, cultureInfo: cultureInfo, includeOpen: includeOpen);
                }
            }