/// <summary> /// Compiles the provided input /// </summary> /// <param name="input"></param> /// <param name="filename"></param> /// <param name="compilationErrors"></param> /// <param name="compactionErrors"></param> /// <returns></returns> public IOptimizedResult Compile(TextReader input, string filename, List <ParseException> compilationErrors, List <ParseException> compactionErrors) { if (input == null) { throw new ArgumentNullException("input"); } // verify, compact and write out results // parse JBST markup JbstWriter writer = new JbstWriter(filename); StringWriter sw = new StringWriter(); string source = input.ReadToEnd(); try { HtmlDistiller parser = new HtmlDistiller(); parser.EncodeNonAscii = false; parser.BalanceTags = false; parser.NormalizeWhitespace = false; parser.HtmlWriter = writer; parser.HtmlFilter = new NullHtmlFilter(); parser.Parse(source); // render the pretty-printed version writer.Render(sw); } catch (ParseException ex) { compilationErrors.Add(ex); } catch (Exception ex) { compilationErrors.Add(new ParseError(ex.Message, filename, 0, 0, ex)); } SimpleJbstBuildResult result = new SimpleJbstBuildResult(writer.JbstName, writer.AutoMarkup); result.Source = source; result.PrettyPrinted = sw.GetStringBuilder().ToString(); result.Compacted = this.Compact(result.PrettyPrinted, filename, compactionErrors); result.ContentType = "text/javascript"; result.FileExtension = ".jbst.js"; result.Hash = this.ComputeHash(result.Source); // return any errors return(result); }
/// <summary> /// Compiles the provided input /// </summary> /// <param name="input"></param> /// <param name="filename"></param> /// <param name="compilationErrors"></param> /// <param name="compactionErrors"></param> /// <returns></returns> public IOptimizedResult Compile(TextReader input, string filename, List<ParseException> compilationErrors, List<ParseException> compactionErrors) { if (input == null) { throw new ArgumentNullException("input"); } // verify, compact and write out results // parse JBST markup JbstWriter writer = new JbstWriter(filename); StringWriter sw = new StringWriter(); string source = input.ReadToEnd(); try { HtmlDistiller parser = new HtmlDistiller(); parser.EncodeNonAscii = false; parser.BalanceTags = false; parser.NormalizeWhitespace = false; parser.HtmlWriter = writer; parser.HtmlFilter = new NullHtmlFilter(); parser.Parse(source); // render the pretty-printed version writer.Render(sw); } catch (ParseException ex) { compilationErrors.Add(ex); } catch (Exception ex) { compilationErrors.Add(new ParseError(ex.Message, filename, 0, 0, ex)); } SimpleJbstBuildResult result = new SimpleJbstBuildResult(writer.JbstName, writer.AutoMarkup); result.Source = source; result.PrettyPrinted = sw.GetStringBuilder().ToString(); result.Compacted = this.Compact(result.PrettyPrinted, filename, compactionErrors); result.ContentType = "text/javascript"; result.FileExtension = ".jbst.js"; result.Hash = this.ComputeHash(result.Source); // return any errors return result; }