joinHomogenous

This commit is contained in:
Maxmtg
2013-04-04 05:56:18 +00:00
parent e1d1bb45d6
commit f333535721
2 changed files with 23 additions and 8 deletions

View File

@@ -29,6 +29,7 @@ import forge.game.zone.ZoneType;
import forge.gui.GuiChoose;
import forge.gui.GuiDialog;
import forge.util.Aggregates;
import forge.util.Lang;
public class ChangeZoneEffect extends SpellAbilityEffect {
@Override
@@ -81,12 +82,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
fetchers.add(sa.getSourceCard().getController());
}
final StringBuilder fetcherSB = new StringBuilder();
for (int i = 0; i < fetchers.size(); i++) {
fetcherSB.append(fetchers.get(i).getName());
fetcherSB.append((i + 2) == fetchers.size() ? " and " : (i + 1) == fetchers.size() ? "" : ", ");
}
final String fetcherNames = fetcherSB.toString();
final String fetcherNames = Lang.joinHomogenous(fetchers, Player.Accessors.FN_GET_NAME);
// Player who chooses the cards to move
List<Player> choosers = new ArrayList<Player>();

View File

@@ -1,5 +1,9 @@
package forge.util;
import java.util.List;
import com.google.common.base.Function;
/**
* TODO: Write javadoc for this type.
*
@@ -11,7 +15,7 @@ public class Lang {
* @param position
* @return
*/
public static Object getOrdinal(int position) {
public static String getOrdinal(int position) {
String[] sufixes = new String[] { "th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th" };
switch (position % 100) {
case 11:
@@ -23,4 +27,19 @@ public class Lang {
}
}
public static <T> String joinHomogenous(List<T> objects) { return joinHomogenous(objects, null); }
public static <T> String joinHomogenous(List<T> objects, Function<T, String> accessor) {
int remaining = objects.size();
StringBuilder sb = new StringBuilder();
for(T obj : objects) {
remaining--;
if( accessor != null )
sb.append(accessor.apply(obj));
else
sb.append(obj);
if( remaining > 1 ) sb.append(", ");
if( remaining == 1 ) sb.append(" and ");
}
return sb.toString();
}
}