5 // Copyright 2007 Novell (http://www.novell.com)
7 // Permission is hereby granted, free of charge, to any person obtaining
8 // a copy of this software and associated documentation files (the
9 // "Software"), to deal in the Software without restriction, including
10 // without limitation the rights to use, copy, modify, merge, publish,
11 // distribute, sublicense, and/or sell copies of the Software, and to
12 // permit persons to whom the Software is furnished to do so, subject to
13 // the following conditions:
15 // The above copyright notice and this permission notice shall be
16 // included in all copies or substantial portions of the Software.
18 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
22 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
23 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28 using System.Collections;
29 using System.Collections.Generic;
34 using XPI = System.Xml.Linq.XProcessingInstruction;
36 namespace System.Xml.Linq
38 internal static class XUtil
40 public const string XmlnsNamespace =
41 "http://www.w3.org/2000/xmlns/";
44 public static string ToString (object o)
47 throw new InvalidOperationException ("Attempt to get string from null");
53 public static bool ToBoolean (object o)
55 throw new NotImplementedException ();
58 public static Nullable <bool> ToNullableBoolean (object o)
60 throw new NotImplementedException ();
63 public static IEnumerable<XNode> ToNodes (object o)
69 yield return new XText ((string) o);
70 else if (o is IEnumerable)
71 foreach (object obj in (IEnumerable) o)
72 foreach (XNode nn in ToNodes (obj))
75 yield return new XText (o.ToString ());
78 public static object Clone (object o)
84 return new XElement ((XElement) o);
86 return new XCData (((XCData) o).Value);
88 return new XComment (((XComment) o).Value);
91 return new XPI (pi.Target, pi.Data);
92 XDeclaration xd = o as XDeclaration;
94 return new XDeclaration (xd.Version, xd.Encoding, xd.Standalone);
95 XDocumentType dtd = o as XDocumentType;
97 throw new NotImplementedException ();
98 throw new ArgumentException ();
101 public static IEnumerable<object> ShrinkArray (params object [] content)
103 if (content == null || content.Length == 0)
106 foreach (object o in content) {