using System; using System.Collections.Generic; using System.Text; namespace Dfs.WayneChina.HyperPrinterHandler { internal class Parser { private int prefixLen = 0; private int remainingLen = 0; private int maximumLen = 32; NLog.Logger logger = NLog.LogManager.LoadConfiguration("NLog.config").GetLogger("HyperPrinter"); /// /// /// /// /// public List ParseToReceiptLineItems(string raw) { string[] rawReceiptLines = raw.Split(new string[] { "" }, StringSplitOptions.RemoveEmptyEntries); List receiptLineItems = new List(); foreach (var rawReceiptLine in rawReceiptLines) { if (string.IsNullOrEmpty(rawReceiptLine) || !rawReceiptLine.Contains("", ""); logger.Info($"tempReceiptLineNew: {tempReceiptLineNew}"); var receiptLineItem = new ReceiptLineItem(prefixLen, remainingLen, maximumLen); string[] rawReceiptColumnItems = tempReceiptLineNew.Trim().Split(new string[] { " 0) { foreach (var ci in rawReceiptColumnItems) { try { logger.Info(ci); var receiptColumnItem = new ReceiptColumnItem(); receiptColumnItem.align = ci.Contains("align=") ? (ci.Contains("left") ? "left" : (ci.Contains("right") ? "right" : "center")) : "left"; receiptColumnItem.Text = ci.Substring(ci.IndexOf(">") + 1, ci.IndexOf("<") - ci.IndexOf(">") - 1).Trim(); var temp = ci.Contains("colspan") ? ci.Substring(ci.IndexOf("colspan"), ci.Length - ci.IndexOf("colspan")) : string.Empty; if (!string.IsNullOrEmpty(temp)) { temp = temp.Replace("colspan=\"", ""); receiptColumnItem.colspan = Convert.ToInt32(temp.Substring(0, temp.IndexOf("\""))); } temp = ci.Contains("width") ? ci.Substring(ci.IndexOf("width"), ci.Length - ci.IndexOf("width")) : string.Empty; if (!string.IsNullOrEmpty(temp)) { temp = temp.Replace("width=\"", ""); receiptColumnItem.width = Convert.ToInt32(temp.Substring(0, temp.IndexOf("%"))); } receiptLineItem.ColumnItems.Add(receiptColumnItem); } catch (Exception ex) { logger.Info($"Exception: {ex}"); } } } receiptLineItems.Add(receiptLineItem); } } return receiptLineItems; } } }