Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ Function() [4/4]

virtual QilNode System.Xml.Xsl.XPath.XPathBuilder.Function ( string prefix,
string name,
IList< QilNode > args )
inlinevirtualinherited

Definition at line 761 of file XPathBuilder.cs.

762 {
763 if (prefix.Length == 0 && FunctionTable.TryGetValue(name, out var value))
764 {
765 value.CastArguments(args, name, _f);
766 switch (value.id)
767 {
768 case FuncId.Not:
769 return _f.Not(args[0]);
770 case FuncId.Last:
771 return GetLastPosition();
772 case FuncId.Position:
773 return GetCurrentPosition();
774 case FuncId.Count:
775 return _f.XsltConvert(_f.Length(_f.DocOrderDistinct(args[0])), XmlQueryTypeFactory.DoubleX);
776 case FuncId.LocalName:
777 if (args.Count != 0)
778 {
779 return LocalNameOfFirstNode(args[0]);
780 }
781 return _f.LocalNameOf(GetCurrentNode());
782 case FuncId.NamespaceUri:
783 if (args.Count != 0)
784 {
785 return NamespaceOfFirstNode(args[0]);
786 }
788 case FuncId.Name:
789 if (args.Count != 0)
790 {
791 return NameOfFirstNode(args[0]);
792 }
793 return NameOf(GetCurrentNode());
794 case FuncId.String:
795 if (args.Count != 0)
796 {
797 return _f.ConvertToString(args[0]);
798 }
800 case FuncId.Number:
801 if (args.Count != 0)
802 {
803 return _f.ConvertToNumber(args[0]);
804 }
805 return _f.XsltConvert(_f.XPathNodeValue(GetCurrentNode()), XmlQueryTypeFactory.DoubleX);
806 case FuncId.Boolean:
807 return _f.ConvertToBoolean(args[0]);
808 case FuncId.True:
809 return _f.True();
810 case FuncId.False:
811 return _f.False();
812 case FuncId.Id:
814 case FuncId.Concat:
815 return _f.StrConcat(args);
816 case FuncId.StartsWith:
817 return _f.InvokeStartsWith(args[0], args[1]);
818 case FuncId.Contains:
819 return _f.InvokeContains(args[0], args[1]);
820 case FuncId.SubstringBefore:
821 return _f.InvokeSubstringBefore(args[0], args[1]);
822 case FuncId.SubstringAfter:
823 return _f.InvokeSubstringAfter(args[0], args[1]);
824 case FuncId.Substring:
825 if (args.Count != 2)
826 {
827 return _f.InvokeSubstring(args[0], args[1], args[2]);
828 }
829 return _f.InvokeSubstring(args[0], args[1]);
830 case FuncId.StringLength:
831 return _f.XsltConvert(_f.StrLength((args.Count == 0) ? _f.XPathNodeValue(GetCurrentNode()) : args[0]), XmlQueryTypeFactory.DoubleX);
832 case FuncId.Normalize:
834 case FuncId.Translate:
835 return _f.InvokeTranslate(args[0], args[1], args[2]);
836 case FuncId.Lang:
837 return _f.InvokeLang(args[0], GetCurrentNode());
838 case FuncId.Sum:
839 return Sum(_f.DocOrderDistinct(args[0]));
840 case FuncId.Floor:
841 return _f.InvokeFloor(args[0]);
842 case FuncId.Ceiling:
843 return _f.InvokeCeiling(args[0]);
844 case FuncId.Round:
845 return _f.InvokeRound(args[0]);
846 default:
847 return null;
848 }
849 }
850 return _environment.ResolveFunction(prefix, name, args, this);
851 }
virtual bool Contains(QilNode node)
Definition QilNode.cs:142
QilNode XsltConvert(QilNode expr, XmlQueryType t)
QilNode DocOrderDistinct(QilNode collection)
QilNode LocalNameOfFirstNode(QilNode arg)
QilNode NameOfFirstNode(QilNode arg)
readonly IXPathEnvironment _environment
readonly XPathQilFactory _f
static Dictionary< string, FunctionInfo< FuncId > > FunctionTable
QilNode NamespaceOfFirstNode(QilNode arg)
QilNode InvokeStartsWith(QilNode str1, QilNode str2)
QilNode InvokeSubstring(QilNode str, QilNode start)
QilNode InvokeLang(QilNode lang, QilNode context)
QilNode InvokeSubstringBefore(QilNode str1, QilNode str2)
QilNode InvokeSubstringAfter(QilNode str1, QilNode str2)
QilNode Id(QilNode context, QilNode id)
QilNode InvokeContains(QilNode str1, QilNode str2)
QilNode InvokeTranslate(QilNode str1, QilNode str2, QilNode str3)
QilNode ResolveFunction(string prefix, string name, IList< QilNode > args, IFocus env)

References System.Xml.Xsl.XPath.XPathBuilder._environment, System.Xml.Xsl.XPath.XPathBuilder._f, System.Xml.Xsl.Qil.QilNode.Contains(), System.Xml.Xsl.XPath.XPathQilFactory.ConvertToBoolean(), System.Xml.Xsl.XPath.XPathQilFactory.ConvertToNumber(), System.Xml.Xsl.XPath.XPathQilFactory.ConvertToString(), System.Collections.Generic.Dictionary< TKey, TValue >.Count, System.Xml.Xsl.Qil.QilPatternFactory.DocOrderDistinct(), System.Xml.Xsl.XmlQueryTypeFactory.DoubleX, System.Xml.Xsl.Qil.QilPatternFactory.False(), System.Xml.Xsl.XPath.XPathBuilder.FunctionTable, System.Xml.Xsl.XPath.XPathBuilder.GetCurrentNode(), System.Xml.Xsl.XPath.XPathBuilder.GetCurrentPosition(), System.Xml.Xsl.XPath.XPathBuilder.GetLastPosition(), System.Xml.Xsl.XPath.XPathQilFactory.Id(), System.Xml.Xsl.XPath.XPathQilFactory.InvokeCeiling(), System.Xml.Xsl.XPath.XPathQilFactory.InvokeContains(), System.Xml.Xsl.XPath.XPathQilFactory.InvokeFloor(), System.Xml.Xsl.XPath.XPathQilFactory.InvokeLang(), System.Xml.Xsl.XPath.XPathQilFactory.InvokeNormalizeSpace(), System.Xml.Xsl.XPath.XPathQilFactory.InvokeRound(), System.Xml.Xsl.XPath.XPathQilFactory.InvokeStartsWith(), System.Xml.Xsl.XPath.XPathQilFactory.InvokeSubstring(), System.Xml.Xsl.XPath.XPathQilFactory.InvokeSubstringAfter(), System.Xml.Xsl.XPath.XPathQilFactory.InvokeSubstringBefore(), System.Xml.Xsl.XPath.XPathQilFactory.InvokeTranslate(), System.Xml.Xsl.Qil.QilPatternFactory.Length(), System.Xml.Xsl.Qil.QilPatternFactory.LocalNameOf(), System.Xml.Xsl.XPath.XPathBuilder.LocalNameOfFirstNode(), System.Xml.Xsl.Qil.NameOf, System.Xml.Xsl.XPath.XPathBuilder.NameOfFirstNode(), System.Xml.Xsl.XPath.XPathBuilder.NamespaceOfFirstNode(), System.Xml.Xsl.Qil.QilPatternFactory.NamespaceUriOf(), System.Xml.Xsl.Qil.QilPatternFactory.Not(), System.prefix, System.Xml.Xsl.XPath.IXPathEnvironment.ResolveFunction(), System.Xml.Xsl.Qil.QilPatternFactory.StrConcat(), System.Xml.Xsl.Qil.QilPatternFactory.StrLength(), System.Xml.Xsl.XPath.XPathBuilder.Sum, System.Xml.Xsl.Qil.QilPatternFactory.True(), System.value, System.Xml.Xsl.Qil.QilPatternFactory.XPathNodeValue(), and System.Xml.Xsl.Qil.QilPatternFactory.XsltConvert().