private static void CompressWord(CompressionDto ret, ref int bufferOffset) { var tempBuffer = ret.Buffer; if (!IsLetterInDictionary(ret)) { ret.compressionSteps.Add(new CommonTranslatorDto { Status = 1, NewChar = tempBuffer[0] }); ret.CompressedDictionary += tempBuffer[0]; ret.CompressedDictionary = ret.CompressedDictionary.Remove(default(int), 1); bufferOffset++; } else { while (!ret.CompressedDictionary.Contains(tempBuffer)) { tempBuffer = tempBuffer.Remove(tempBuffer.Length - 1); } int offset = ret.CompressedDictionary.Length - ret.CompressedDictionary.LastIndexOf(tempBuffer) - 1; ret.CompressedDictionary += tempBuffer; ret.CompressedDictionary = ret.CompressedDictionary.Remove(default(int), tempBuffer.Length); ret.compressionSteps.Add(new CommonTranslatorDto { Status = 0, Length = tempBuffer.Length, Offset = offset }); bufferOffset += tempBuffer.Length; } }
public static void PerformCompression(CompressionDto compressionDto, int bufferOffset) { while (!IsCompressed(compressionDto, bufferOffset)) { compressionDto.Buffer = SetBuffer(bufferOffset); CompressWord(compressionDto, ref bufferOffset); View.PrintStage(compressionDto); } }
public static string PrintTranslator(CompressionDto compressionDao) { if (compressionDao.compressionSteps.LastOrDefault().Status == 0) { return(String.Format("{0}, {1}, {2}", compressionDao.compressionSteps.LastOrDefault().Status, compressionDao.compressionSteps.LastOrDefault().Offset, compressionDao.compressionSteps.LastOrDefault().Length)); } return(String.Format("{0}, {1}", compressionDao.compressionSteps.LastOrDefault().Status, compressionDao.compressionSteps.LastOrDefault().NewChar)); }
static void Main(string[] args) { if (READ_WRITE_TO_FILE) { WORD_TO_COMPRESS = FileAssistant.ReadFile(READ_FILE_NAME); } var compressionDto = new CompressionDto(); var decompressionDto = new DecompressionDto(); int bufferOffset = 0; View.PrintStartCompressionMessage(); CompressionController.PerformCompression(compressionDto, bufferOffset); View.PrintStartDecompressionMessage(); DecompressionController.PerformDecompression(compressionDto, READ_WRITE_TO_FILE); }
public static void PrintStage(CompressionDto compressionDao) { Console.WriteLine(compressionDao.CompressedDictionary + "\t" + compressionDao.Buffer + "\t" + PrintTranslator(compressionDao)); }
private static bool IsLetterInDictionary(CompressionDto ret) { return(ret.CompressedDictionary.Contains(ret.Buffer[0].ToString())); }
private static bool IsCompressed(CompressionDto ret, int bufferOffset) { return(bufferOffset >= Program.WORD_TO_COMPRESS.Length ? true : false); }