public CK2Node(CK2NodeTypes type, object value) { Type = type; Value = value; }
private void EndToken(CK2NodeTypes type) { var trimmed = Token.Trim(); Token = string.Empty; if (type == CK2NodeTypes.Assignment || type == CK2NodeTypes.GreaterThan || type == CK2NodeTypes.GreaterThanOrEqual || type == CK2NodeTypes.LessThan || type == CK2NodeTypes.LessThanOrEqual) { var previous = Nodes.LastOrDefault(); if (previous != null) { if (type == CK2NodeTypes.Assignment) { if (previous.Type == CK2NodeTypes.GreaterThan) { previous.Type = CK2NodeTypes.GreaterThanOrEqual; } else if (previous.Type == CK2NodeTypes.LessThan) { previous.Type = CK2NodeTypes.LessThanOrEqual; } } if (string.IsNullOrEmpty(trimmed)) { if (previous.Type == CK2NodeTypes.Value) { previous.Type = type; previous.Value = previous.Value.ToString().Substring(1); } return; } } Nodes.Add(new CK2Node(type, trimmed)); return; } if (!string.IsNullOrEmpty(trimmed)) { if (trimmed.StartsWith("\"")) { Nodes.Add(new CK2Node(CK2NodeTypes.Value, trimmed.Substring(1, trimmed.Length - 2))); } else { float value; if (float.TryParse(trimmed, out value)) { if (trimmed.Contains(".")) { Nodes.Add(new CK2Node(CK2NodeTypes.Value, value)); } else { Nodes.Add(new CK2Node(CK2NodeTypes.Value, int.Parse(trimmed))); } } else { if (type == CK2NodeTypes.Assignment) { Nodes.Add(new CK2Node(CK2NodeTypes.Value, trimmed)); } else { if (trimmed == "yes") { Nodes.Add(new CK2Node(CK2NodeTypes.Value, true)); } else if (trimmed == "no") { Nodes.Add(new CK2Node(CK2NodeTypes.Value, false)); } else { Nodes.Add(new CK2Node(CK2NodeTypes.Value, "@" + trimmed)); } } } } } if (type == CK2NodeTypes.Whitespace) { return; } Nodes.Add(new CK2Node(type)); }
public CK2Node(CK2NodeTypes type) : this(type, string.Empty) { }