private void EmitScript(XmlWriter writer) { EmitScriptIncludesBefore(writer); var code = new JScriptWriter(); code.WriteLine(); code.WriteLine("// generated"); code.Write(_scriptincludes); code.Write(Declarations); // consumed, more to come ... // resize handler function (unused currently) code.WriteLine("function docResized() "); code.EnterBlock(); code.WriteLine("ResizeManager_Initialize();"); code.Write(_resizebuilder); code.LeaveBlock(); // bindings initialization code.WriteLine(); code.WriteLine("function Bindings_Initialize() "); code.EnterBlock(); code.WriteLine("if(window['BindingObject'] !== undefined)"); code.EnterBlock(); code.Write(CodeBuilder); code.LeaveBlock(); code.LeaveBlock(); // primary document ready handler code.WriteLine(); code.WriteLine("docReady(function() "); code.EnterBlock(); code.WriteLine("DataContext_Initialize(function() { Bindings_Initialize(); });"); code.WriteLine("docResized();"); code.WriteLine("DragDrop_Initialize();"); code.LeaveBlock(); code.WriteLine(");"); // TraceTarget.Trace("jscript code in HTML:\n{0}\n\n", code.Text); writer.WriteStartElement("script"); if (!IsOptimized) { writer.WriteRaw(code.Text); } else { Information("generating optimized code ..."); var builder = new JScriptBuilder(); builder.SuppressedGlobalFunctions.Add("trace"); builder.RewriteProgram(code); writer.WriteRaw(builder.Text); } writer.WriteEndElement(); // application specific initializer scripts ... _scriptincludes = new JScriptBuilder(); EmitScriptIncludesAfter(writer); if (_scriptincludes.Text.Length > 0) { writer.WriteStartElement("script"); writer.WriteRaw(_scriptincludes.Text); writer.WriteEndElement(); } }
private void EmitScriptItems(XmlWriter writer, IEnumerable<string> scriptincludes) { if (!InlineAllScript) { foreach (var include in scriptincludes) { writer.WriteStartElement("script"); writer.WriteAttributeString("src", include); writer.WriteString("\u00A0"); writer.WriteEndElement(); } } else { var common = new JScriptWriter(); if(null == ScriptSource) { throw new Exception("script source required to inline scripts."); } foreach (var include in scriptincludes) { using(var reader = new StreamReader(ScriptSource(include))) { Log.Trace("including script '{0}' ...", include); var jscode = reader.ReadToEnd(); common.WriteLine(jscode); } } // compactify code ... var compacter = new JScriptBuilder(); compacter.IsCompact = IsCompact; compacter.RewriteProgram(common); _scriptincludes.Write(compacter); } }