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