/// <summary> /// Add a new template and return LG File. /// </summary> /// <param name="templateName">New template name.</param> /// <param name="parameters">New params.</param> /// <param name="templateBody">New template body.</param> /// <returns>Updated LG file.</returns> public Templates AddTemplate(string templateName, List<string> parameters, string templateBody) { var template = this.FirstOrDefault(u => u.Name == templateName); if (template != null) { throw new Exception(TemplateErrors.TemplateExist(templateName)); } ClearDiagnostics(); var templateNameLine = BuildTemplateNameLine(templateName, parameters); var newTemplateBody = ConvertTemplateBody(templateBody); var content = $"{templateNameLine}{newLine}{newTemplateBody}"; var originStartLine = GetLinesOfText(this.Content).Length; // update content this.Content = $"{Content}{newLine}{templateNameLine}{newLine}{newTemplateBody}"; var newTemplates = new Templates(content: string.Empty, id: Id, importResolver: ImportResolver, expressionParser: ExpressionParser); newTemplates = new TemplatesTransformer(newTemplates).Transform(AntlrParseTemplates(content, Id)); AppendDiagnosticsWithOffset(newTemplates.Diagnostics, originStartLine); var newTemplate = newTemplates.FirstOrDefault(); if (newTemplate != null) { AdjustRangeForAddTemplate(newTemplate, originStartLine); this.Add(newTemplate); new StaticChecker(this).Check().ForEach(u => this.Diagnostics.Add(u)); } return this; }
/// <summary> /// Add a new template and return LG File. /// </summary> /// <param name="templateName">New template name.</param> /// <param name="parameters">New params.</param> /// <param name="templateBody">New template body.</param> /// <returns>Updated LG file.</returns> public Templates AddTemplate(string templateName, List <string> parameters, string templateBody) { var template = this.FirstOrDefault(u => u.Name == templateName); if (template != null) { throw new Exception(TemplateErrors.TemplateExist(templateName)); } var templateNameLine = BuildTemplateNameLine(templateName, parameters); var newTemplateBody = ConvertTemplateBody(templateBody); var newContent = $"{Content}{newLine}{templateNameLine}{newLine}{newTemplateBody}"; Initialize(ParseText(newContent, Id, ImportResolver)); return(this); }