コード例 #1
0
        public static string Stringify(this object o, bool quoteStrings = false, bool nilIsEmpty = false)
        {
            if (o == null)
            {
                return(nilIsEmpty ? "" : "nil");
            }
            if (o.Equals(true))
            {
                return("true");
            }
            if (o.Equals(false))
            {
                return("false");
            }

            var s = o switch
            {
                string strng => quoteStrings ? "'" + strng + "'" : strng,
                IStringify str => str.Stringify(quoteStrings),
                ImmutableDictionary <object, object> arr => "{" + string.Join(' ', arr.Select(item => item.Key.Stringify(quoteStrings) + " " + item.Value.Stringify(quoteStrings))) + "}",
                ImmutableHashSet <object> arr => "#{" + string.Join(' ', arr.Select(item => item.Stringify(quoteStrings))) + "}",
                object[] array => "[" + string.Join(' ', array.Select(item => item.Stringify(quoteStrings))) + "]",
                ImmutableArray <object> arr => "[" + string.Join(' ', arr.Select(item => item.Stringify(quoteStrings))) + "]",
                IEnumerable <object> list => "(" + string.Join(' ', list.Select(item => item.Stringify(quoteStrings))) + ")",
                _ => o.ToString()
            };

            return(s);
        }

        // public static string Stringify(this object o)
        // {
        //  if (o == null) return "nil";
        //  if (o.Equals(true)) return "true";
        //  if (o.Equals(false)) return "false";

        //  var s = o switch
        //  {
        //      string strng => strng,
        //      IStringify str => str.Stringify(),
        //      ImmutableDictionary<object, object> arr => "{" + string.Join(' ', arr.Select(item => item.Key.Stringify() + " " + item.Value.Stringify())) + "}",
        //      ImmutableHashSet<object> arr => "#{" + string.Join(' ', arr.Select(item => item.Stringify())) + "}",
        //      object[] array => "[" + string.Join(' ', array.Select(item => item.Stringify())) + "]",
        //      ImmutableArray<object> arr => "[" + string.Join(' ', arr.Select(item => item.Stringify())) + "]",
        //      IEnumerable<object> list => "(" + string.Join(' ', list.Select(item => item.Stringify())) + ")",
        //      _ => o.ToString()
        //  };
        //  return s;
        // }
    }
コード例 #2
0
 public Format(Parameters parameters, IStringify stringify)
 {
     this.parameters = parameters;
     this.stringify  = stringify;
 }