internal static void ReadObject(IScriptable scriptable, string body) { if (scriptable == null) { return; } if (scriptable is IReadOnlyScriptable) { return; } if (scriptable is ICustomScriptable) { ICustomScriptable s = scriptable as ICustomScriptable; s.Read(body); return; } foreach (Accessor accessor in FieldAccessor.GetForObject(scriptable)) { foreach (FieldTag tag in accessor.GetTags()) { if (tag.flag == FieldTags.Title) { accessor.Set(body); return; } } } }
internal static string WriteObject(IScriptable scriptable, Indent indent = null) { if (scriptable == null) { return(null); } IIgnorable ignorable = scriptable as IIgnorable; if (ignorable != null && ignorable.Ignored) { return(null); } if (scriptable is ICustomScriptable) { ICustomScriptable s = scriptable as ICustomScriptable; string r = s.Write(); if (indent != null) { r = indent.GetIndent(s.Indent()) + r; if (s.Indent() == "#") { r += " `[" + scriptable.GetType().Name + "]`"; } } return(r); } if (scriptable is IReadOnlyScriptable) { string r = scriptable.ToString(); if (indent != null) { indent.Push(null); r = "`" + r + "`"; } return(r); } foreach (Accessor accessor in FieldAccessor.GetForObject(scriptable)) { foreach (FieldTag tag in accessor.GetTags()) { if (tag.flag == FieldTags.Title) { string r = "" + accessor.Get(); if (indent != null) { r = indent.GetIndent(tag.arg) + r; if (tag.arg == "#") { r += " `[" + scriptable.GetType().Name + "]`"; } } return(r); } } } return(null); }