private static LuaObject Parse(string rawContent) { LuaObject root = new LuaObject(); while (rawContent.Length > 0) { if (rawContent.StartsWith(",")) { rawContent = rawContent.Substring(1); } int equalIndex = rawContent.IndexOf("="); int commaIndex = rawContent.IndexOf(","); int bracketIndex = rawContent.IndexOf("{"); if (equalIndex == -1 && commaIndex == -1 && bracketIndex == -1) { break; } string identifier = rawContent.Substring(0, equalIndex); string value = string.Empty; if (bracketIndex == -1 || commaIndex < bracketIndex) { value = rawContent.Substring(equalIndex + 1, commaIndex - equalIndex - 1); rawContent = rawContent.Substring(commaIndex + 1); } else { int endBracketIndex = FindMatchingBracketIndex(rawContent, bracketIndex == -1 ? 0 : bracketIndex); value = rawContent.Substring(equalIndex + 1, endBracketIndex); rawContent = rawContent.Substring(equalIndex + endBracketIndex + 1); } if (value.StartsWith("{") && value.EndsWith("}")) { LuaObject sub = Parse(value.Substring(1, value.Length - 2)); root.Add(identifier, sub); } else { if (Int32.TryParse(value, out int intValue)) { root.Add(identifier, intValue); } else { root.Add(identifier, value.Substring(1, value.Length - 2)); } } } return(root); }
public override LuaObject Add(StackFrame stackFrame, LuaObject obj) { return(value.Add(stackFrame, obj)); }