Changeset 541dae3


Ignore:
Timestamp:
Jan 10, 2018 5:39:58 PM (2 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
8d6d1bc
Parents:
50eb93d
Message:

Util: New util to truncate a string that won't split across a surrogate pair

Location:
apps
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java

    r50eb93d r541dae3  
    15351535        String fullBasename = basename;
    15361536        if (basename.length() > MAX_DISPLAYED_FILENAME_LENGTH) {
    1537             String start = basename.substring(0, MAX_DISPLAYED_FILENAME_LENGTH);
     1537            String start = ServletUtil.truncate(basename, MAX_DISPLAYED_FILENAME_LENGTH);
    15381538            if (start.indexOf(' ') < 0 && start.indexOf('-') < 0) {
    15391539                // browser has nowhere to break it
  • apps/jetty/java/src/net/i2p/servlet/util/ServletUtil.java

    r50eb93d r541dae3  
    6262            ua.startsWith("Vodafone");
    6363    }
     64
     65    /**
     66      * Truncate a String.
     67      * Same as s.substring(0, len) except that
     68      * it won't split a surrogate pair.
     69      *
     70      * @param s non-null
     71      * @return s if shorter; s.substring(0, len) if
     72      *           the char at len-1 is not a high surrogate;
     73      *           s.substring(0, len+1) if it is
     74      * @since 0.9.33
     75      */
     76    public static String truncate(String s, int len) {
     77        if (s.length() <= len)
     78            return s;
     79        if (Character.isHighSurrogate(s.charAt(len - 1)))
     80            return s.substring(0, len + 1);
     81        return s.substring(0, len);
     82    }
    6483}
  • apps/routerconsole/java/src/net/i2p/router/web/helpers/SummaryHelper.java

    r50eb93d r541dae3  
    2929import net.i2p.router.web.HelperBase;
    3030import net.i2p.router.web.NewsHelper;
     31import net.i2p.servlet.util.ServletUtil;
    3132import net.i2p.stat.Rate;
    3233import net.i2p.stat.RateStat;
     
    576577                    buf.append(DataHelper.escapeHTML(name));
    577578                else
    578                     buf.append(DataHelper.escapeHTML(name.substring(0,29))).append("&hellip;");
     579                    buf.append(DataHelper.escapeHTML(ServletUtil.truncate(name, 29))).append("&hellip;");
    579580                buf.append("</a></b></td>\n");
    580581                LeaseSet ls = _context.netDb().lookupLeaseSetLocally(h);
  • apps/susimail/src/src/i2p/susi/webmail/Mail.java

    r50eb93d r541dae3  
    4444
    4545import net.i2p.data.DataHelper;
     46import net.i2p.servlet.util.ServletUtil;
    4647import net.i2p.util.SystemVersion;
    4748
     
    335336                                                        boolean trim = shortSender.length() > 35;
    336337                                                        if (trim)
    337                                                                 shortSender = shortSender.substring( 0, 32 ).trim();
     338                                                                shortSender = ServletUtil.truncate(shortSender, 32).trim();
    338339                                                        shortSender = html.encode( shortSender );
    339340                                                        if (trim)
     
    362363                                                        boolean trim = formattedSubject.length() > 65;
    363364                                                        if (trim)
    364                                                                 shortSubject = formattedSubject.substring( 0, 62 ).trim();
     365                                                                shortSubject = ServletUtil.truncate(formattedSubject, 62).trim();
    365366                                                        shortSubject = html.encode( shortSubject );
    366367                                                        if (trim)
Note: See TracChangeset for help on using the changeset viewer.