// // Plugs Doxy docs into ECMA XML docs. If the brief data is available, // it uses that. Otherwise it picks the first node from the detailed description. // // @target is an ECMA XML document to plug data into // @summaryPath is the xpath expression to fetch the summary node // @remarksPath is the xpath expression to fetch the remarks node // @brief is the Doxy Brief description node // @detailed is the Doxy detailed description // IEnumerable<XElement> Plug(XContainer target, string summaryPath, string remarksPath, XElement brief, XElement detailed) { var ret = TransformDoxy (detailed); TransformDoxy (brief); var elements = detailed.Elements (); var sum = target.XPathSelectElement (summaryPath); var rem = target.XPathSelectElement (remarksPath); if (brief.Value.ToString ().Trim () != "") sum.SetValue (brief.Elements ()); else { var first = elements.FirstOrDefault (); if (first != null) { sum.SetValue (first); } } rem.SetValue (elements); return ret; }
private static XElement GetOrCreateElement(XContainer root, string name) { var element = root.XPathSelectElement(name); if (element == null) { element = new XElement(name); root.Add(element); } return element; }
private XElement GetElementByXPath(XContainer element, string xpath, ILog logger = null) { var node = element.XPathSelectElement(xpath); if (node == null) { BuildStatusMessage = string.Format(CultureInfo.CurrentCulture, "Could not find node '{0}' in the project xml", xpath); if (logger != null) logger.Debug(BuildStatusMessage + Environment.NewLine + element); } return node; }