Exemplo n.º 1
0
        /// <summary>
        /// A source module that has been broken into regions
        /// </summary>
        /// <param name="sourceModule"></param>
        public RegionizedModule(SourceModule sourceModule)
        {
            Contract.Requires(sourceModule != null);

            SunaRegion currentSunaRegion = new SunaRegion();

            using (var reader = sourceModule.OpenReader())
            {
                for (; ;)
                {
                    // read
                    string line = reader.ReadLine();
                    if (line == null)
                    {
                        break;
                    }

                    // if this is a #beginJavascript line then do so
                    if (line.Trim().IndexOf("#beginJavascript", StringComparison.InvariantCultureIgnoreCase) == 0)
                    {
                        sunaRegions.Add(currentSunaRegion);
                        currentSunaRegion = new SunaRegion();

                        JavascriptRegion jsRegion = new JavascriptRegion();
                        for (; ;)
                        {
                            // read
                            string jsLine = reader.ReadLine();
                            if (jsLine == null)
                            {
                                throw new CompileException(Error.MissingEndJavascript);
                            }


                            if (jsLine.Trim().IndexOf("#endJavascript", StringComparison.InvariantCultureIgnoreCase) == 0)
                            {
                                break;
                            }

                            jsRegion.AddLine(jsLine);
                        }
                        this.javascriptRegions.Add(jsRegion);
                    }
                    else
                    {
                        currentSunaRegion.AddLine(line);
                    }
                }
            }

            // add the last region
            sunaRegions.Add(currentSunaRegion);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Creates a TokenizedModule for the SourceModule
        /// </summary>
        /// <param name="sunaRegion"></param>
        /// <returns></returns>
        public void Tokenize(SunaRegion sunaRegion)
        {
            using (TextReader reader = sunaRegion.OpenReader())
            {
                for (; ;)
                {
                    string line = reader.ReadLine();
                    if (line == null)
                    {
                        return;
                    }

                    TokenizeLine(line);
                }
            }
        }