/// <summary> /// Creates an object literal from a list of named values. /// </summary> internal static ObjectLiteral Create(IReadOnlyList <NamedValue> namedValues, LineInfo location, AbsolutePath path) { switch (namedValues.Count) { case 0: return(new ObjectLiteral0(location, path)); case 1: return(new ObjectLiteralSlim <StructArray1 <NamedValue> >( StructArray.Create(namedValues[0]), location, path)); case 2: return(new ObjectLiteralSlim <StructArray2 <NamedValue> >( StructArray.Create(namedValues[0], namedValues[1]), location, path)); case 3: return(new ObjectLiteralSlim <StructArray3 <NamedValue> >( StructArray.Create(namedValues[0], namedValues[1], namedValues[2]), location, path)); case 4: return(new ObjectLiteralSlim <StructArray4 <NamedValue> >( StructArray.Create(namedValues[0], namedValues[1], namedValues[2], namedValues[3]), location, path)); case 5: return(new ObjectLiteralSlim <StructArray5 <NamedValue> >( StructArray.Create(namedValues[0], namedValues[1], namedValues[2], namedValues[3], namedValues[4]), location, path)); default: return(new ObjectLiteralN(namedValues, location, path)); } }