package edu.stanford.nlp.semparse.open.util; import java.util.List; public class StringSampler { public static <T> String sampleEntities(List<T> entities) { return sampleEntities(entities, entities.size()); } private static final int TRAILING_ENTITIES = 3; private static final int MAX_TEXT_LENGTH = 60; public static final int DEFAULT_LIMIT = 30; public static <T> String sampleEntities(List<T> entities, int limit) { StringBuilder sb = new StringBuilder("{"); int n = entities.size(); if (n <= limit) { for (int i = 0; i < n; i++) { chopString(sb, entities.get(i).toString(), i > 0); } } else { for (int i = 0; i < limit - TRAILING_ENTITIES; i++) { chopString(sb, entities.get(i).toString(), i > 0); } sb.append(", ... (").append(n - limit).append(" more) ..."); for (int i = n - TRAILING_ENTITIES - 1; i < n; i++) { chopString(sb, entities.get(i).toString(), i > 0); } } return sb.append("} (").append(n).append(" total)").toString(); } private static void chopString(StringBuilder sb, String x, boolean addComma) { if (addComma) sb.append(", "); sb.append('"'); x = x.replace("\n", " "); if (x.length() > MAX_TEXT_LENGTH) sb.append(x.substring(0, MAX_TEXT_LENGTH)).append("...\""); else sb.append(x).append('"'); } }