コード例 #1
0
        public int ReplaceToken(int currentOffset, TemplateList list, Variables variables, ref string text)
        {
            int prevLength = text.Length;

            text = text.Remove(index + currentOffset, length).Insert(index + currentOffset, GetTokenContents(list, variables));
            return(currentOffset + text.Length - prevLength);
        }
コード例 #2
0
        private void ReadFileToList(string file, TemplateList list)
        {
            string contents;

            try{
                contents = File.ReadAllText(file, Encoding.UTF8);
            }catch(Exception e){
                throw new TemplateException(Lang.Get["TemplateErrorFileRead", file], e);
            }

            string[] contentLines = contents.Split('\n', '\r');

            if (contentLines.Length == 0){
                throw new TemplateException(Lang.Get["TemplateErrorFileEmpty", file]);
            }

            for(int lineIndex = 0; lineIndex < contentLines.Length; lineIndex++){
                string line = contentLines[lineIndex];

                TemplateDeclaration declaration;

                if (TemplateDeclaration.TryReadLine(line, out declaration)){
                    if (declaration.DefinesTemplate){
                        StringBuilder build = new StringBuilder();

                        while(++lineIndex < contentLines.Length){
                            string templateLine = contentLines[lineIndex];

                            if (TemplateDeclaration.IsValidDeclaration(templateLine)){
                                --lineIndex;
                                break;
                            }

                            build.Append(templateLine).Append("\r\n");
                        }

                        list.AddTemplate(declaration, build.ToString());
                    }
                    else if (declaration.Type == TemplateDeclaration.TemplateDeclarationType.Include){
                        string includedFile = Path.Combine(sourcePath, declaration.Name);

                        if (!IsFilePathValid(includedFile)){
                            throw new TemplateException(Lang.Get["TemplateErrorIncludedFileWrongPath", declaration.Name]);
                        }
                        else if (!File.Exists(includedFile)){
                            throw new TemplateException(Lang.Get["TemplateErrorIncludedFileMissing", includedFile]);
                        }
                        else{
                            ReadFileToList(includedFile, list);
                        }
                    }
                }
                else if (line.Trim().Length > 0){
                    throw new TemplateException(Lang.Get["TemplateErrorFileMissingDeclaration", file, lineIndex]);
                }
            }
        }
コード例 #3
0
ファイル: Template.cs プロジェクト: chylex/Code-Statistics
            public override string Process(TemplateList list, Variables variables)
            {
                string processedText = text;
                int offset = 0;

                foreach(TemplateToken token in tokens){
                    offset = token.ReplaceToken(offset, list, variables, ref processedText);
                }

                return processedText;
            }
コード例 #4
0
        public TemplateList ReadTemplates()
        {
            TemplateList templates = new TemplateList();

            if (!File.Exists(mainFile)){
                throw new TemplateException(Lang.Get["TemplateErrorMainFileMissing", mainFile]);
            }

            ReadFileToList(mainFile, templates);
            return templates;
        }
コード例 #5
0
            protected override string GetTokenContents(TemplateList list, Variables variables)
            {
                StringBuilder build = new StringBuilder();

                foreach (Variables entry in variables.GetArray(cycleVariable))
                {
                    build.Append(list.ProcessTemplate(templateName, entry));
                }

                return(build.ToString());
            }
コード例 #6
0
        public TemplateList ReadTemplates()
        {
            TemplateList templates = new TemplateList();

            if (!File.Exists(mainFile))
            {
                throw new TemplateException(Lang.Get["TemplateErrorMainFileMissing", mainFile]);
            }

            ReadFileToList(mainFile, templates);
            return(templates);
        }
コード例 #7
0
            public override string Process(TemplateList list, Variables variables)
            {
                string processedText = text;
                int    offset        = 0;

                foreach (TemplateToken token in tokens)
                {
                    offset = token.ReplaceToken(offset, list, variables, ref processedText);
                }

                return(processedText);
            }
コード例 #8
0
 protected abstract string GetTokenContents(TemplateList list, Variables variables);
コード例 #9
0
ファイル: Template.cs プロジェクト: chylex/Code-Statistics
 public abstract string Process(TemplateList list, Variables variables);
コード例 #10
0
 protected override string GetTokenContents(TemplateList list, Variables variables)
 {
     return(list.ProcessTemplate(templateName, variables));
 }
コード例 #11
0
 protected abstract string GetTokenContents(TemplateList list, Variables variables);
コード例 #12
0
 public abstract string Process(TemplateList list, Variables variables);
コード例 #13
0
 protected override string GetTokenContents(TemplateList list, Variables variables)
 {
     return(variables.CheckFlag(conditionFlag) ? list.ProcessTemplate(templateName, variables) : "");
 }
コード例 #14
0
 public override string Process(TemplateList list, Variables variables)
 {
     return(text);
 }
コード例 #15
0
ファイル: Template.cs プロジェクト: chylex/Code-Statistics
 public override string Process(TemplateList list, Variables variables)
 {
     return text;
 }
コード例 #16
0
 public int ReplaceToken(int currentOffset, TemplateList list, Variables variables, ref string text)
 {
     int prevLength = text.Length;
     text = text.Remove(index+currentOffset, length).Insert(index+currentOffset, GetTokenContents(list, variables));
     return currentOffset+text.Length-prevLength;
 }
コード例 #17
0
 protected override string GetTokenContents(TemplateList list, Variables variables)
 {
     return variables.GetVariable(variableName, defaultValue);
 }
コード例 #18
0
 protected override string GetTokenContents(TemplateList list, Variables variables)
 {
     return list.ProcessTemplate(templateName, variables);
 }
コード例 #19
0
            protected override string GetTokenContents(TemplateList list, Variables variables)
            {
                StringBuilder build = new StringBuilder();

                foreach(Variables entry in variables.GetArray(cycleVariable)){
                    build.Append(list.ProcessTemplate(templateName, entry));
                }

                return build.ToString();
            }
コード例 #20
0
 protected override string GetTokenContents(TemplateList list, Variables variables)
 {
     return variables.CheckFlag(conditionFlag) ? list.ProcessTemplate(templateName, variables) : "";
 }
コード例 #21
0
 public GenerateHtml(TemplateList templateList, Variables variables)
 {
     this.templates = templateList;
     this.variables = variables;
     this.LastError = string.Empty;
 }
コード例 #22
0
 public GenerateHtml(TemplateList templateList, Variables variables)
 {
     this.templates = templateList;
     this.variables = variables;
     this.LastError = string.Empty;
 }
コード例 #23
0
        private void ReadFileToList(string file, TemplateList list)
        {
            string contents;

            try{
                contents = File.ReadAllText(file, Encoding.UTF8);
            }catch (Exception e) {
                throw new TemplateException(Lang.Get["TemplateErrorFileRead", file], e);
            }

            string[] contentLines = contents.Split('\n', '\r');

            if (contentLines.Length == 0)
            {
                throw new TemplateException(Lang.Get["TemplateErrorFileEmpty", file]);
            }

            for (int lineIndex = 0; lineIndex < contentLines.Length; lineIndex++)
            {
                string line = contentLines[lineIndex];

                TemplateDeclaration declaration;

                if (TemplateDeclaration.TryReadLine(line, out declaration))
                {
                    if (declaration.DefinesTemplate)
                    {
                        StringBuilder build = new StringBuilder();

                        while (++lineIndex < contentLines.Length)
                        {
                            string templateLine = contentLines[lineIndex];

                            if (TemplateDeclaration.IsValidDeclaration(templateLine))
                            {
                                --lineIndex;
                                break;
                            }

                            build.Append(templateLine).Append("\r\n");
                        }

                        list.AddTemplate(declaration, build.ToString());
                    }
                    else if (declaration.Type == TemplateDeclaration.TemplateDeclarationType.Include)
                    {
                        string includedFile = Path.Combine(sourcePath, declaration.Name);

                        if (!IsFilePathValid(includedFile))
                        {
                            throw new TemplateException(Lang.Get["TemplateErrorIncludedFileWrongPath", declaration.Name]);
                        }
                        else if (!File.Exists(includedFile))
                        {
                            throw new TemplateException(Lang.Get["TemplateErrorIncludedFileMissing", includedFile]);
                        }
                        else
                        {
                            ReadFileToList(includedFile, list);
                        }
                    }
                }
                else if (line.Trim().Length > 0)
                {
                    throw new TemplateException(Lang.Get["TemplateErrorFileMissingDeclaration", file, lineIndex]);
                }
            }
        }
コード例 #24
0
 protected override string GetTokenContents(TemplateList list, Variables variables)
 {
     return(variables.GetVariable(variableName, defaultValue));
 }