public static bool TryReadLine(string line, out TemplateDeclaration declaration)
        {
            if (IsDeclaration(line)){
                string[] data = GetDeclarationContents(line).Split(DeclarationSplit, 2);

                if (data.Length == 2){
                    TemplateDeclarationType type = GetDeclarationType(data[0]);
                    declaration = new TemplateDeclaration(type, data[1]);

                    return type != TemplateDeclarationType.Invalid;
                }
            }

            declaration = Default;
            return false;
        }
        public static bool TryReadLine(string line, out TemplateDeclaration declaration)
        {
            if (IsDeclaration(line))
            {
                string[] data = GetDeclarationContents(line).Split(DeclarationSplit, 2);

                if (data.Length == 2)
                {
                    TemplateDeclarationType type = GetDeclarationType(data[0]);
                    declaration = new TemplateDeclaration(type, data[1]);

                    return(type != TemplateDeclarationType.Invalid);
                }
            }

            declaration = Default;
            return(false);
        }
        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]);
                }
            }
        }
Example #4
0
 public void AddTemplate(TemplateDeclaration declaration, string text)
 {
     AddTemplate(declaration.Name, declaration.CreateTemplate(text));
 }
Example #5
0
 public void AddTemplate(TemplateDeclaration declaration, string text)
 {
     AddTemplate(declaration.Name, declaration.CreateTemplate(text));
 }