Ejemplo n.º 1
0
        public string serialize(XPathNodeIterator arg, XPathNodeIterator parameters)
        {
            // fn:serialize($arg	as item()*, $params as element(output:serialization-parameters)?) as xs:string

            var itemFactory = new SystemItemFactory();

            XPathSerializationOptions options = null;

            if (parameters != null &&
                parameters.Count == 1)
            {
                options = new XPathSerializationOptions();
                ((IXmlSerializable)options).ReadXml(parameters.Cast <XPathNavigator>().First().ReadSubtree());
            }

            using (var writer = new StringWriter()) {
                IEnumerable <XPathItem> items = arg.Cast <XPathItem>();

                if (options == null)
                {
                    itemFactory.Serialize(items, writer);
                }
                else
                {
                    itemFactory.Serialize(items, writer, options);
                }

                return(writer.ToString());
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Provides the method to invoke the function with the given arguments in the given context.
        /// </summary>
        /// <returns>
        /// An <see cref="T:System.Object"/> representing the return value of the function.
        /// </returns>
        /// <param name="xsltContext">
        /// The XSLT context for the function call.
        /// </param>
        /// <param name="args">
        /// The arguments of the function call. Each argument is an element in the array.
        /// </param>
        /// <param name="docContext">
        /// The context node for the function call.
        /// </param>
        public object Invoke(XsltContext xsltContext, object[] args, XPathNavigator docContext)
        {
            string            sep      = (string)args[1];
            XPathNodeIterator nodeIter = (XPathNodeIterator)args[0];
            string            ret      = string.Join(sep, nodeIter.Cast <XPathNavigator>().Select(n => n.ToString()));

            return(ret);
        }
Ejemplo n.º 3
0
        private IEnumerable <string> GetRowValues(HtmlDocument doc, int rowNumber)
        {
            XPathNodeIterator trows = doc.CreateNavigator().Select(string.Format("//tbody/tr[{0}]/td", rowNumber + 1));

            return(trows.Cast <XPathNavigator>().Select(
                       h => h.InnerXml.StartsWith("<b>", StringComparison.InvariantCultureIgnoreCase) ?
                       h.SelectSingleNode(string.Format("//tbody/tr[{0}]/td/b/font", rowNumber + 1)).InnerXml :
                       h.InnerXml));
        }
Ejemplo n.º 4
0
            string MonoImpInfo(string assemblyname, string typename, string membername, XPathNodeIterator itr, bool strlong)
            {
                if (quiet)
                {
                    return(string.Empty);
                }

                var rgs = itr.Cast <XPathNavigator> ().Select(nav => nav.Value).ToList();

                return(MonoImpInfo(assemblyname, typename, membername, rgs, strlong));
            }
Ejemplo n.º 5
0
        public static IEnumerable <T> ToEnumerable <T>(XPathNodeIterator value, Func <XPathItem, T> mapper)
        {
            if (IsEmpty(value))
            {
                return(Enumerable.Empty <T>());
            }

            if (mapper == null)
            {
                mapper = ToOutput <T>;
            }

            return(value.Cast <XPathItem>().Select(mapper));
        }
Ejemplo n.º 6
0
        public object data(object arg)
        {
            // fn:data($arg as item()*) as xs:anyAtomicType*

            XPathNodeIterator iter = arg as XPathNodeIterator;

            if (iter == null)
            {
                // if not iterator then it's a single item, return unchanged
                return(arg);
            }

            if (ExtensionObjectConvert.IsEmpty(iter))
            {
                return(ExtensionObjectConvert.EmptyIterator);
            }

            if (iter.Count == 1)
            {
                return(iter.Cast <XPathNavigator>().Single().TypedValue);
            }

            return(ExtensionObjectConvert.ToInput(iter.Cast <XPathNavigator>().Select(n => n.TypedValue)));
        }
Ejemplo n.º 7
0
        protected XPathNavigator[] distinct_values(XPathNodeIterator iter)
        {
            // fn:distinct-values($arg as xs:anyAtomicType*) as xs:anyAtomicType*

            XPathNavigator[] nodes = iter.Cast <XPathNavigator>().ToArray();
            var distinct           = new Dictionary <object, XPathNavigator>();

            foreach (object item in nodes.Select(n => n.TypedValue).Distinct())
            {
                if (!distinct.ContainsKey(item))
                {
                    distinct.Add(item, nodes.First(n => n.TypedValue.Equals(item)));
                }
            }

            return(distinct.Values.ToArray());
        }
Ejemplo n.º 8
0
        public object avg(object args)
        {
            // fn:avg($arg as xs:anyAtomicType*) as xs:anyAtomicType?

            XPathNodeIterator iter = args as XPathNodeIterator;

            if (iter == null)
            {
                // if not iterator then it's a single item, return unchanged
                return(args);
            }

            if (ExtensionObjectConvert.IsEmpty(iter))
            {
                return(ExtensionObjectConvert.EmptyIterator);
            }

            return(iter.Cast <XPathNavigator>().Select(n => n.ValueAsDouble).Average());
        }
Ejemplo n.º 9
0
        public object min(object arg)
        {
            // fn:min($arg as xs:anyAtomicType*) as xs:anyAtomicType?

            XPathNodeIterator iter = arg as XPathNodeIterator;

            if (iter == null)
            {
                // if not iterator then it's a single item, return unchanged
                return(arg);
            }

            if (ExtensionObjectConvert.IsEmpty(iter))
            {
                return(ExtensionObjectConvert.EmptyIterator);
            }

            return(iter.Cast <XPathNavigator>().Min(n => n.TypedValue));
        }
Ejemplo n.º 10
0
        protected string string_join(object arg, string separator)
        {
            // fn:string-join($arg1 as xs:string*, $arg2 as xs:string) as xs:string

            XPathNodeIterator iter = arg as XPathNodeIterator;

            if (iter == null)
            {
                // if not iterator then it's a single item
                return(arg.ToString());
            }

            if (ExtensionObjectConvert.IsEmpty(iter))
            {
                return("");
            }

            return(String.Join(separator, iter.Cast <XPathNavigator>().Select(n => n.Value)));
        }
Ejemplo n.º 11
0
        private object reverse(object arg)
        {
            // fn:reverse($arg as item()*) as item()*

            // TODO: XslCompiledTransform seems to reorder node-sets in document order

            XPathNodeIterator iter = arg as XPathNodeIterator;

            if (iter == null)
            {
                // if not iterator then it's a single item
                return(arg);
            }

            if (ExtensionObjectConvert.IsEmpty(iter))
            {
                return(ExtensionObjectConvert.EmptyIterator);
            }

            return(iter.Cast <XPathNavigator>().Reverse().ToArray());
        }
Ejemplo n.º 12
0
        private IEnumerable <string> GetHeaders(HtmlDocument doc)
        {
            XPathNodeIterator trows = doc.CreateNavigator().Select("//tr/th[@*]");

            return(trows.Cast <XPathNavigator>().Skip(1).Select(h => h.InnerXml));
        }
Ejemplo n.º 13
0
        private IEnumerable <string> GetHeadersAbb(HtmlDocument doc)
        {
            XPathNodeIterator topHeaders = doc.CreateNavigator().Select("/html[1]/body[1]/table[2]/tbody[1]/tr[1]/th");

            return(topHeaders.Cast <XPathNavigator>().Skip(1).Select(h => h.InnerXml));
        }
Ejemplo n.º 14
0
        public XPathNavigator[] tail(XPathNodeIterator iter)
        {
            // fn:tail($arg as item()*) as item()*

            return(iter.Cast <XPathNavigator>().Skip(1).ToArray());
        }
 public static IEnumerable <XPathNavigator> Select(this XPathNodeIterator nodeIterator, string xpath)
 {
     return(nodeIterator.Cast <XPathNavigator>().SelectMany(n => n.Select(xpath).Cast <XPathNavigator>()));
 }
Ejemplo n.º 16
0
        private IEnumerable <string> GetVobs(HtmlDocument doc)
        {
            XPathNodeIterator trows = doc.CreateNavigator().Select("//option[@value]");

            return(trows.Cast <XPathNavigator>().Select(h => h.GetAttribute("value", string.Empty)));
        }
Ejemplo n.º 17
0
 /// <summary>
 /// Adapts an XPathNodeIterator to serve as an IEnumerable{XPathNavigator}.
 /// </summary>
 /// <param name="source"></param>
 /// <returns></returns>
 public static IEnumerable <XPathNavigator> AsEnumerable(this XPathNodeIterator source)
 {
     Checker.NotNull(source, "source");
     return(source.Cast <XPathNavigator>());
 }
Ejemplo n.º 18
0
        public XPathNavigator[] subsequence(XPathNodeIterator sourceSeq, int startingLoc, int length)
        {
            // fn:subsequence($sourceSeq as item()*, $startingLoc as xs:double, $length as xs:double) as item()*

            return(sourceSeq.Cast <XPathNavigator>().Skip(startingLoc).Take(length).ToArray());
        }
Ejemplo n.º 19
0
        public frmSelectBuildMethod(Character objCharacter, bool blnUseCurrentValues = false)
        {
            _objCharacter = objCharacter ?? throw new ArgumentNullException(nameof(objCharacter));
            InitializeComponent();
            this.TranslateWinForm();

            _xmlGameplayOptionsDataGameplayOptionsNode = XmlManager.Load("gameplayoptions.xml").GetFastNavigator().SelectSingleNode("/chummer/gameplayoptions");

            // Populate the Build Method list.
            List <ListItem> lstBuildMethod = new List <ListItem>(4)
            {
                new ListItem("Karma", LanguageManager.GetString("String_Karma")),
                new ListItem("Priority", LanguageManager.GetString("String_Priority")),
                new ListItem("SumtoTen", LanguageManager.GetString("String_SumtoTen")),
            };

            if (GlobalOptions.LifeModuleEnabled)
            {
                lstBuildMethod.Add(new ListItem("LifeModule", LanguageManager.GetString("String_LifeModule")));
            }

            cboBuildMethod.BeginUpdate();
            cboBuildMethod.ValueMember   = nameof(ListItem.Value);
            cboBuildMethod.DisplayMember = nameof(ListItem.Name);
            cboBuildMethod.DataSource    = lstBuildMethod;
            cboBuildMethod.SelectedValue = GlobalOptions.DefaultBuildMethod;
            cboBuildMethod.EndUpdate();

            string strSpace = LanguageManager.GetString("String_Space");
            // Populate the Gameplay Options list.
            List <ListItem> lstGameplayOptions = new List <ListItem>(10);

            if (_xmlGameplayOptionsDataGameplayOptionsNode != null)
            {
                foreach (XPathNavigator objXmlGameplayOption in _xmlGameplayOptionsDataGameplayOptionsNode.Select("gameplayoption"))
                {
                    string strName = objXmlGameplayOption.SelectSingleNode("name")?.Value;
                    if (!string.IsNullOrEmpty(strName))
                    {
                        if (objXmlGameplayOption.SelectSingleNode("default")?.Value == bool.TrueString)
                        {
                            objXmlGameplayOption.TryGetInt32FieldQuickly("maxavailability", ref _intDefaultMaxAvail);
                            objXmlGameplayOption.TryGetInt32FieldQuickly("sumtoten", ref _intDefaultSumToTen);
                            objXmlGameplayOption.TryGetInt32FieldQuickly("pointbuykarma", ref _intDefaultPointBuyKarma);
                            objXmlGameplayOption.TryGetInt32FieldQuickly("lifemoduleskarma", ref _intDefaultLifeModulesKarma);
                        }

                        if (objXmlGameplayOption.SelectSingleNode("priorityarrays") != null)
                        {
                            XPathNodeIterator iterator = objXmlGameplayOption.Select("priorityarrays/priorityarray");
                            lstGameplayOptions.AddRange(iterator.Cast <XPathNavigator>()
                                                        .Select(node => new ListItem(strName + '|' + node.Value,
                                                                                     (objXmlGameplayOption.SelectSingleNode("translate")?.Value ?? strName) + strSpace + '(' + node.Value + ')')));
                        }
                        else
                        {
                            lstGameplayOptions.Add(new ListItem(strName,
                                                                objXmlGameplayOption.SelectSingleNode("translate")?.Value ?? strName));
                        }
                    }
                }
            }

            cboGamePlay.BeginUpdate();
            cboGamePlay.ValueMember   = nameof(ListItem.Value);
            cboGamePlay.DisplayMember = nameof(ListItem.Name);
            cboGamePlay.DataSource    = lstGameplayOptions;
            cboGamePlay.SelectedValue = _strDefaultOption;
            cboGamePlay.EndUpdate();

            chkIgnoreRules.SetToolTip(LanguageManager.GetString("Tip_SelectKarma_IgnoreRules"));

            if (blnUseCurrentValues)
            {
                string strGameplayOption = _objCharacter.GameplayOption;
                if (!string.IsNullOrEmpty(_objCharacter.PriorityArray))
                {
                    strGameplayOption += '|' + _objCharacter.PriorityArray;
                }
                cboGamePlay.SelectedValue = strGameplayOption;
                if (cboGamePlay.SelectedIndex == -1)
                {
                    cboGamePlay.SelectedValue = _strDefaultOption;
                }

                cboBuildMethod.Enabled       = false;
                cboBuildMethod.SelectedValue = _objCharacter.BuildMethod.ToString();

                nudKarma.Value    = objCharacter.BuildKarma;
                nudMaxNuyen.Value = _decNuyenBP = _objCharacter.NuyenMaximumBP;

                _intQualityLimits      = _objCharacter.GameplayOptionQualityLimit;
                chkIgnoreRules.Checked = _objCharacter.IgnoreRules;
                nudMaxAvail.Value      = Math.Min(objCharacter.MaximumAvailability, nudMaxAvail.Maximum);
                nudSumtoTen.Value      = objCharacter.SumtoTen;
            }
            else if (_xmlGameplayOptionsDataGameplayOptionsNode != null)
            {
                string strSelectedGameplayOption = cboGamePlay.SelectedValue?.ToString();
                if (strSelectedGameplayOption != null && strSelectedGameplayOption.IndexOf('|') != -1)
                {
                    strSelectedGameplayOption = strSelectedGameplayOption.SplitNoAlloc('|').FirstOrDefault();
                }
                XPathNavigator objXmlSelectedGameplayOption = _xmlGameplayOptionsDataGameplayOptionsNode.SelectSingleNode("gameplayoption[name = \"" + (strSelectedGameplayOption ?? string.Empty) + "\"]");
                objXmlSelectedGameplayOption.TryGetInt32FieldQuickly("karma", ref _intQualityLimits);
                objXmlSelectedGameplayOption.TryGetDecFieldQuickly("maxnuyen", ref _decNuyenBP);
                nudMaxNuyen.Value = _decNuyenBP;

                nudKarma.Value = _intQualityLimits;
                int intTemp = _intDefaultMaxAvail;
                objXmlSelectedGameplayOption.TryGetInt32FieldQuickly("maxavailability", ref intTemp);
                nudMaxAvail.Value = intTemp;
                intTemp           = _intDefaultSumToTen;
                objXmlSelectedGameplayOption.TryGetInt32FieldQuickly("sumtoten", ref intTemp);
                nudSumtoTen.Value = intTemp;
            }
        }
Ejemplo n.º 20
0
 public AnyTreeXPathNodeList(XPathNodeIterator nodeIterator)
 {
     _nodeIterator = nodeIterator;
     _list         = new CachedEnumerable <AnyTreeXPathNavigator>(nodeIterator.Cast <AnyTreeXPathNavigator>());
 }