Package client.net.sf.saxon.ce.tree.util

Examples of client.net.sf.saxon.ce.tree.util.FastStringBuffer


                } else {
                    BigDecimal dec = BigDecimal.valueOf(value);
                    return dec.toString();
                }
            } else if (a < 1e7) {
                FastStringBuffer sb = new FastStringBuffer(Float.toString(value * 10));
                sb.setCharAt(sb.length()-1, (char)((int)sb.charAt(sb.length()-1) - 1));
                return sb;
            } else {
                return Float.toString(value);
            }
        }
View Full Code Here


        }
    }

    public CharSequence getPrimitiveStringValue() {

        FastStringBuffer sb = new FastStringBuffer(FastStringBuffer.TINY);
        int yr = year;
        if (year <= 0) {
            yr = -yr + 1;           // no year zero in lexical space for XSD 1.0
            if(yr!=0){
                sb.append('-');   
            }
        }
        appendString(sb, yr, (yr>9999 ? (yr+"").length() : 4));

        sb.append('-');
        appendTwoDigits(sb, month);

        if (hasTimezone()) {
            appendTimezone(sb);
        }
View Full Code Here

        return getStringValueCS().toString();
    }


    public CharSequence getStringValueCS() {
        FastStringBuffer sb = null;

        NodeImpl next = (NodeImpl)getFirstChild();
        while (next!=null) {
            if (next instanceof TextImpl) {
                if (sb==null) {
                    sb = new FastStringBuffer(FastStringBuffer.SMALL);
                }
                sb.append(next.getStringValueCS());
            }
            next = next.getNextInDocument(this);
        }
        if (sb==null) return "";
        return sb.condense();
    }
View Full Code Here

      * should therefore be aware that third party implementations of the NodeInfo interface may
      * not implement the correct semantics.
      */

     public int hashCode() {
         FastStringBuffer buffer = new FastStringBuffer(FastStringBuffer.SMALL);
         generateId(buffer);
         return buffer.toString().hashCode();
     }
View Full Code Here

               
            case Type.TEXT:
                if (span == 1) {
                    return emptyIfNull(getValue(node));
                } else {
                    FastStringBuffer fsb = new FastStringBuffer(FastStringBuffer.SMALL);
                    Node textNode = node;
                    for (int i=0; i<span; i++) {
                        fsb.append(emptyIfNull(getValue(textNode)));
                        textNode = textNode.getNextSibling();
                    }
                    return fsb.condense();
                }

            case Type.COMMENT:
            case Type.PROCESSING_INSTRUCTION:
                return emptyIfNull(getValue(node));
View Full Code Here

    public String escape(/*@Nullable*/ String in) {
        if (in==null) {
            return "";
        }
        CharSequence collapsed = Whitespace.collapseWhitespace(in);
        FastStringBuffer sb = new FastStringBuffer(collapsed.length() + 10);
        for (int i=0; i<collapsed.length(); i++) {
            char c = collapsed.charAt(i);
            if (c=='<') {
                sb.append("&lt;");
            } else if (c=='>') {
                sb.append("&gt;");
            } else if (c=='&') {
                sb.append("&amp;");
            } else if (c=='\"') {
                sb.append("&#34;");
            } else if (c=='\n') {
                sb.append("&#xA;");
            } else if (c=='\r') {
                sb.append("&#xD;");
            } else if (c=='\t') {
                sb.append("&#x9;");
            } else {
                sb.append(c);
            }
        }
        return sb.toString();
    }
View Full Code Here

     * @return ISO 8601 representation.
     */

    public CharSequence getPrimitiveStringValue() {

        FastStringBuffer sb = new FastStringBuffer(32);
        if (negative) {
            sb.append('-');
        }

        int days = getDays();
        int hours = getHours();
        int minutes = getMinutes();
        int seconds = getSeconds();

        sb.append('P');
        if (days != 0) {
            sb.append(days + "D");
        }
        if (days == 0 || hours != 0 || minutes != 0 || seconds != 0 || microseconds != 0) {
            sb.append('T');
        }
        if (hours != 0) {
            sb.append(hours + "H");
        }
        if (minutes != 0) {
            sb.append(minutes + "M");
        }
        if (seconds != 0 || microseconds != 0 || (days == 0 && minutes == 0 && hours == 0)) {
            if (microseconds == 0) {
                sb.append(seconds + "S");
            } else {
                long ms = (seconds * 1000000) + microseconds;
                String mss = ms + "";
                if (seconds == 0) {
                    mss = "0000000" + mss;
                    mss = mss.substring(mss.length() - 7);
                }
                sb.append(mss.substring(0, mss.length() - 6));
                sb.append('.');
                int lastSigDigit = mss.length() - 1;
                while (mss.charAt(lastSigDigit) == '0') {
                    lastSigDigit--;
                }
                sb.append(mss.substring(mss.length() - 6, lastSigDigit + 1));
                sb.append('S');
            }
        }
        return sb;
    }
View Full Code Here

        it = iter.next();
        if (it == null) {
            return StringValue.makeStringValue(first);
        }

        FastStringBuffer sb = new FastStringBuffer(FastStringBuffer.SMALL);
        sb.append(first);

        // Type checking ensures that the separator is not an empty sequence
        if (argument.length == 1) {
            sb.append(it.getStringValueCS());
            while (true) {
                it = iter.next();
                if (it == null) {
                    return StringValue.makeStringValue(sb.condense());
                }
                sb.append(it.getStringValueCS());
            }

        } else {
            CharSequence sep = argument[1].evaluateItem(c).getStringValueCS();
            sb.append(sep);
            sb.append(it.getStringValueCS());

            while (true) {
                it = iter.next();
                if (it == null) {
                    return StringValue.makeStringValue(sb.condense());
                }
                sb.append(sep);
                sb.append(it.getStringValueCS());
            }
        }
    }
View Full Code Here

    /**
    * Evaluate
    */

    public Item evaluateItem(XPathContext c) throws XPathException {
        FastStringBuffer sb = new FastStringBuffer(FastStringBuffer.SMALL);
        SequenceIterator si = argument[0].iterate(c);
        while (true) {
            NumericValue nextInt = (NumericValue)si.next();
            if (nextInt == null) {
                break;
            }
            long next = nextInt.intValue();
            if (next < 0 || next > Integer.MAX_VALUE || !NameChecker.isValidChar((int)next)) {
                XPathException e = new XPathException("Invalid XML character [x " + Integer.toHexString((int)next) + ']');
                e.setErrorCode("FOCH0001");
                e.setXPathContext(c);
                throw e;
            }
            if (next<65536) {
                sb.append((char)next);
            } else // output a surrogate pair
                sb.append(UTF16CharacterSet.highSurrogate((int)next));
                sb.append(UTF16CharacterSet.lowSurrogate((int)next));
            }
        }
        return StringValue.makeStringValue(sb.condense());
    }
View Full Code Here

        if (picture == null || picture.length() == 0) {
            return "" + number;
        }

        int pictureLength = StringValue.getStringLength(picture);
        FastStringBuffer sb = new FastStringBuffer(FastStringBuffer.TINY);
        int formchar = picture.charAt(0);
        if (UTF16CharacterSet.isHighSurrogate(formchar)) {
            formchar = UTF16CharacterSet.combinePair((char) formchar, picture.charAt(1));
        }

        switch (formchar) {

            case '0':
            case '1':
                sb.append(toRadical(number, westernDigits, pictureLength, numGroupFormatter));
                if (ordinal != null && ordinal.length() > 0) {
                    sb.append(ordinalSuffix(ordinal, number));
                }
                break;

            case 'A':
                if (number == 0) {
                    return "0";
                }
                return toAlphaSequence(number, latinUpper);

            case 'a':
                if (number == 0) {
                    return "0";
                }
                return toAlphaSequence(number, latinLower);

            case 'w':
            case 'W':
                int wordCase;
                if (picture.equals("W")) {
                    wordCase = UPPER_CASE;
                } else if (picture.equals("w")) {
                    wordCase = LOWER_CASE;
                } else {
                    // includes cases like "ww" or "Wz". The action here is conformant, but it's not clear what's best
                    wordCase = TITLE_CASE;
                }
                if (ordinal != null && ordinal.length() > 0) {
                    return toOrdinalWords(ordinal, number, wordCase);
                } else {
                    return toWords(number, wordCase);
                }

            case 'i':
                if (number == 0) {
                    return "0";
                }
                if (letterValue == null || letterValue.length() == 0 ||
                        letterValue.equals("traditional")) {
                    return toRoman(number);
                } else {
                    alphaDefault(number, 'i', sb);
                }
                break;

            case 'I':
                if (number == 0) {
                    return "0";
                }
                if (letterValue == null || letterValue.length() == 0 ||
                        letterValue.equals("traditional")) {
                    return toRoman(number).toUpperCase();
                } else {
                    alphaDefault(number, 'I', sb);
                }
                break;

            case '\u2460':
                // circled digits
                if (number == 0 || number > 20) {
                    return "" + number;
                }
                return "" + (char) (0x2460 + number - 1);

            case '\u2474':
                // parenthesized digits
                if (number == 0 || number > 20) {
                    return "" + number;
                }
                return "" + (char) (0x2474 + number - 1);

            case '\u2488':
                // digit full stop
                if (number == 0 || number > 20) {
                    return "" + number;
                }
                return "" + (char) (0x2488 + number - 1);

            case '\u0391':
                if (number == 0) {
                    return "0";
                }
                return toAlphaSequence(number, greekUpper);

            case '\u03b1':
                if (number == 0) {
                    return "0";
                }
                return toAlphaSequence(number, greekLower);

            case '\u0410':
                if (number == 0) {
                    return "0";
                }
                return toAlphaSequence(number, cyrillicUpper);

            case '\u0430':
                if (number == 0) {
                    return "0";
                }
                return toAlphaSequence(number, cyrillicLower);

            case '\u05d0':
                if (number == 0) {
                    return "0";
                }
                return toAlphaSequence(number, hebrew);

            case '\u3042':
                if (number == 0) {
                    return "0";
                }
                return toAlphaSequence(number, hiraganaA);

            case '\u30a2':
                if (number == 0) {
                    return "0";
                }
                return toAlphaSequence(number, katakanaA);

            case '\u3044':
                if (number == 0) {
                    return "0";
                }
                return toAlphaSequence(number, hiraganaI);

            case '\u30a4':
                if (number == 0) {
                    return "0";
                }
                return toAlphaSequence(number, katakanaI);

            case '\u4e00':
                return toJapanese(number);

            default:

                int digitValue = Alphanumeric.getDigitValue(formchar);
                if (digitValue >= 0) {

                    int zero = formchar - digitValue;
                    int[] digits = new int[10];
                    for (int z = 0; z <= 9; z++) {
                        digits[z] = zero + z;
                    }

                    return toRadical(number, digits, pictureLength, numGroupFormatter);

                } else {
                    if (number == 0) {
                        return "0";
                    }
                    if (formchar < '\u1100') {
                        alphaDefault(number, (char) formchar, sb);
                    } else {
                        // fallback to western numbering
                        return toRadical(number, westernDigits, pictureLength, numGroupFormatter);
                    }
                    break;

                }
        }

        return sb.toString();
    }
View Full Code Here

TOP

Related Classes of client.net.sf.saxon.ce.tree.util.FastStringBuffer

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.