Пример #1
0
            // 'xmldocument$'(['xmldecl$'([version=1.0,encoding=ISO-8859-1])], ...]), [])
            static Encoding GetEncodingFromTerm(BaseTerm t, Encoding defEnc)
            {
                if (t.Arity == 0 || (t = t.Arg(0)).FunctorToString != XMLDECL)
                {
                    return(defEnc);
                }

                if (!((t = t.Arg(0)) is ListTerm)) // attributes last, find encoding
                {
                    return(defEnc);
                }

                foreach (BaseTerm b in (ListTerm)t)
                {
                    if (!(b is OperatorTerm) || !((OperatorTerm)b).HasBinaryOperator("="))
                    {
                        return(defEnc);
                    }

                    OperatorTerm ot = (OperatorTerm)b;

                    if (ot.Arg(0).FunctorToString == "encoding")
                    {
                        return(GetEncodingFromString(ot.Arg(1).FunctorToString));
                    }
                }

                return(defEnc);
            }