package gueei.binding.converters; import gueei.binding.Converter; import gueei.binding.IObservable; import android.text.Html; import android.text.Spanned; /** * Format behaves similar to String.format(formatstring, item...) * in the Java API. And it also styles the resulting string to HTML rich text * * @usage formatString str str ... * * @arg formatString String Java-styled format string * @arg str String If supplied Object, it will call Object.toString() * * @return android.text.Spanned formatted with HTML tags in string */ public class FORMAT extends Converter<Spanned> { public FORMAT(IObservable<?>[] dependents) { super(Spanned.class, dependents); } @Override public Spanned calculateValue(Object... args) throws Exception { if (args.length<1) return null; if (args[0]==null) return null; if (args.length<2) return Html.fromHtml(args[0].toString()); String formatString = args[0].toString(); Object[] items = new Object[args.length-1]; System.arraycopy(args, 1, items, 0, args.length-1); return Html.fromHtml(String.format(formatString, items)); } }