/// ------------------------------------------------------------------------------------ /// <summary> /// writes the contents of the LDS file. /// </summary> /// <param name="ldsFileName">name of the Paratext LDS to be saved.</param> /// <param name="normalStyle">The normal style.</param> /// <param name="ws">The HVO of the writing system for the current export.</param> /// <param name="fileWriterLds">file writer for the Paratext LDS file</param> /// ------------------------------------------------------------------------------------ private void WriteLdsFileContents(string ldsFileName, UsfmStyEntry normalStyle, int ws, FileWriter fileWriterLds) { Debug.Assert(fileWriterLds != null); fileWriterLds.Open(ldsFileName); ComputeSettings(normalStyle, ws); fileWriterLds.WriteLine("[General]"); fileWriterLds.WriteLine("codepage=65001"); fileWriterLds.WriteLine("RTL=" + m_RtoL); fileWriterLds.WriteLine("font=" + m_fontName); fileWriterLds.WriteLine("name=" + m_wsName); fileWriterLds.WriteLine("size=" + m_fontSize); fileWriterLds.WriteLine(string.Empty, true); fileWriterLds.WriteLine("[Checking]"); fileWriterLds.WriteLine(string.Empty, true); fileWriterLds.WriteLine("[Characters]"); fileWriterLds.WriteLine(string.Empty, true); fileWriterLds.WriteLine("[Punctuation]"); }
/// ------------------------------------------------------------------------------------ /// <summary> /// Updates the lds file which describes the writing system in Paratext. /// </summary> /// <param name="ldsFileName">Name of the LDS file.</param> /// <param name="normalStyle">The normal style.</param> /// <param name="ws">The HVO of the writing system for the current export.</param> /// <param name="fileWriterLDS">file writer for updating the Paratext LDS file</param> /// ------------------------------------------------------------------------------------ public bool UpdateLdsFile(string ldsFileName, UsfmStyEntry normalStyle, int ws, FileWriter fileWriterLDS) { try { string ldsContents; using (StreamReader sr = new StreamReader(ldsFileName)) { ldsContents = sr.ReadToEnd(); } // Make backup of language file, if it doesn't exist. if (!File.Exists(ldsFileName + ".bak")) File.Copy(ldsFileName, ldsFileName + ".bak"); // REVIEW: Best way to handle if the file cannot be copied? fileWriterLDS.Open(ldsFileName); UpdateLdsContents(ldsContents, normalStyle, ws, fileWriterLDS); } catch { return false; } return true; }
/// ------------------------------------------------------------------------------------ /// <summary> /// Open the file. This is virtual so it can be replaced in testing with an /// in-memory file writer. /// </summary> /// <param name="fileName"></param> /// <returns></returns> /// ------------------------------------------------------------------------------------ protected virtual FileWriter OpenFile(string fileName) { FileWriter writer = new FileWriter(); writer.Open(fileName); return writer; }