Files
haxework/src/main/haxework/format/Formatter.hx
2015-07-14 12:01:51 +03:00

47 lines
1.6 KiB
Haxe
Executable File

package haxework.format;
import haxework.provider.Provider;
import haxework.locale.ILocale;
class Formatter implements IFormatter {
public function formatDate(date:Date, format:String):String {
var locale:ILocale = Provider.get(ILocale);
var r:EReg = ~/\{(\w+)\}/g;
return r.map(format, function(r:EReg):String {
return switch(r.matched(1)) {
case "ss": doubleDigit(date.getSeconds());
case "nn": doubleDigit(date.getMinutes());
case "hh": doubleDigit(date.getHours());
case "dd": doubleDigit(date.getDate());
case "d": Std.string(date.getDate());
case "mm": doubleDigit(date.getMonth() + 1);
case "yyyy": date.getFullYear() + "";
case "month": locale.getArray("month")[date.getMonth()];
case "Month": firstLetterUp(locale.getArray("month")[date.getMonth()]);
case "month_r": locale.getArray("month_r")[date.getMonth()];
case "Month_r": firstLetterUp(locale.getArray("month_r")[date.getMonth()]);
default: r.matched(0);
}
});
}
public function formatTime(time:Int):String {
time = Math.round(time / 1000);
var mm:Int = Math.floor(time / 60);
var ss:Int = time - mm * 60;
return doubleDigit(mm) + ":" + doubleDigit(ss);
}
private static function doubleDigit(num:Int):String {
return ((num < 10) ? "0" : "") + num;
}
private static function firstLetterUp(s:String):String {
return s.charAt(0).toUpperCase() + s.substring(1);
}
public function formatDateFloat(date:Float, format:String):String {
return formatDate(Date.fromTime(date), format);
}
}