/// <summary> /// Compila los archivos SmallCss /// </summary> internal override void Process() { System.Collections.Generic.List <Tuple <string, string, string> > filesCompiled = new System.Collections.Generic.List <Tuple <string, string, string> >(); // Primero copia los archivos for (int index = Data.Files.Count - 1; index >= 0; index--) { if (Data.Files [index].File.FullFileName.EndsWith(".scss", StringComparison.CurrentCultureIgnoreCase)) { Pages.FileTargetModel file = Data.Files [index]; // Crea el directorio de destino LibCommonHelper.Files.HelperFiles.MakePath(file.GetFullPath(Processor)); // Copia el archivo origen en el destino LibCommonHelper.Files.HelperFiles.CopyFile(file.File.FullFileName, file.GetFullFileName(Processor)); } } // Después los compila for (int index = Data.Files.Count - 1; index >= 0; index--) { if (Data.Files [index].File.FullFileName.EndsWith(".scss", StringComparison.CurrentCultureIgnoreCase)) { Pages.FileTargetModel file = Data.Files [index]; // Sólo se compila lo que no comienza por "_" if (!file.File.FileName.StartsWith("_")) { // Crea el directorio de destino LibCommonHelper.Files.HelperFiles.MakePath(file.GetFullPath(Processor)); // Compila el archivo Compile(file.GetFullFileName(Processor), file.GetFullPath(Processor)); // Añade el archivo generado a la colección filesCompiled.Add(new Tuple <string, string, string>(file.File.FullFileName, file.PathTarget, System.IO.Path.GetFileNameWithoutExtension(file.FileNameTarget) + ".css")); } } } // Elimina los archivos intermedios for (int index = Data.Files.Count - 1; index >= 0; index--) { if (Data.Files [index].File.FullFileName.EndsWith(".scss", StringComparison.CurrentCultureIgnoreCase)) { string fileName = Data.Files [index].GetFullFileName(Processor); // Elimina el archivo copiado al destino (sustituyendo la extensión por .scss) LibCommonHelper.Files.HelperFiles.KillFile(System.IO.Path.Combine(System.IO.Path.GetDirectoryName(fileName), System.IO.Path.GetFileNameWithoutExtension(fileName) + ".scss")); // Elimina el archivo de la colección (aunque no se haya compilado porque comienza por _) Data.Files.RemoveAt(index); } } // ... y por último añade los archivos compilados a la colección de archivos foreach (Tuple <string, string, string> fileCompiled in filesCompiled) { Data.Files.Add(fileCompiled.Item1, fileCompiled.Item2, fileCompiled.Item3); } }
/// <summary> /// Añade las variables índice de la página (siguiente, anterior o superior) /// </summary> private void AddVariablesPageIndex(VariablesCollection variables, string nameVariableTitle, string nameVariableUrl, Pages.FileTargetModel page) { if (page != null && !page.DocumentFileName.IsEmpty()) { variables.Add(nameVariableTitle, page.Title); variables.Add(nameVariableUrl, page.DocumentFileName); } else { variables.Add(nameVariableTitle, "null"); variables.Add(nameVariableUrl, "null"); } }
/// <summary> /// Compila un documento /// </summary> private void Compile(DocumentModel document, Pages.FileTargetModel file, NhamlCompiler.Variables.VariablesCollection variables) { // Compila document.Content = Data.NhamlCompiler.Compile(document, variables, Processor.Project.ParagraphsSummaryNumber); // Graba el documento en corto try { string fileName = file.GetFullFileNameCompiledShort(Processor); // Crea el directorio LibCommonHelper.Files.HelperFiles.MakePath(System.IO.Path.GetDirectoryName(fileName)); // Graba el documento new DocumentBussiness().Save(document, fileName); } catch (Exception exception) { Processor.Errors.Add(file.GetFullFileName(Processor), $"Error al grabar el archivo {document.File.IDFileName}: {exception.Message}"); } }