/// <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> /// Adds a javaScript region /// </summary> public void AddJavaScriptRegion(JavascriptRegion javaScriptRegion) { Contract.Requires(javaScriptRegion != null); jsModule.Execute(javaScriptRegion.ToString()); }