2018-12-01 00:02:18 +01:00
|
|
|
package jp.juggler.util
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
// Comparable
|
|
|
|
|
|
|
|
fun <T : Comparable<T>> clipRange(min : T, max : T, src : T) =
|
|
|
|
if(src < min) min else if(src > max) max else src
|
|
|
|
|
2019-01-18 16:33:53 +01:00
|
|
|
////////////////////////////////////////////////////////////////////
|
2018-12-01 00:02:18 +01:00
|
|
|
|
2019-01-21 00:00:59 +01:00
|
|
|
// usage: number.notZero() ?: fallback
|
|
|
|
// equivalent: if(this != 0 ) this else null
|
|
|
|
fun Int.notZero() : Int? = if(this != 0) this else null
|
|
|
|
fun Long.notZero() : Long? = if(this != 0L) this else null
|
|
|
|
fun Float.notZero() : Float? = if(this != 0f) this else null
|
|
|
|
fun Double.notZero() : Double? = if(this != .0) this else null
|
|
|
|
|
2019-08-23 01:49:20 +02:00
|
|
|
// usage: boolean.truth() ?: fallback()
|
|
|
|
// equivalent: if(this != 0 ) this else null
|
|
|
|
fun Boolean.truth() : Boolean? = if(this) this else null
|
2018-12-01 00:02:18 +01:00
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
// long
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
// float
|
|
|
|
|
2019-08-23 01:49:20 +02:00
|
|
|
fun Float.abs() : Float = kotlin.math.abs(this)
|
2018-12-01 00:02:18 +01:00
|
|
|
|
|
|
|
//@SuppressLint("DefaultLocale")
|
|
|
|
//fun Long.formatTimeDuration() : String {
|
|
|
|
// var t = this
|
|
|
|
// val sb = StringBuilder()
|
|
|
|
// var n : Long
|
|
|
|
// // day
|
|
|
|
// n = t / 86400000L
|
|
|
|
// if(n > 0) {
|
|
|
|
// sb.append(String.format(Locale.JAPAN, "%dd", n))
|
|
|
|
// t -= n * 86400000L
|
|
|
|
// }
|
|
|
|
// // h
|
|
|
|
// n = t / 3600000L
|
|
|
|
// if(n > 0 || sb.isNotEmpty()) {
|
|
|
|
// sb.append(String.format(Locale.JAPAN, "%dh", n))
|
|
|
|
// t -= n * 3600000L
|
|
|
|
// }
|
|
|
|
// // m
|
|
|
|
// n = t / 60000L
|
|
|
|
// if(n > 0 || sb.isNotEmpty()) {
|
|
|
|
// sb.append(String.format(Locale.JAPAN, "%dm", n))
|
|
|
|
// t -= n * 60000L
|
|
|
|
// }
|
|
|
|
// // s
|
|
|
|
// val f = t / 1000f
|
|
|
|
// sb.append(String.format(Locale.JAPAN, "%.03fs", f))
|
|
|
|
//
|
|
|
|
// return sb.toString()
|
|
|
|
//}
|
|
|
|
|
|
|
|
//private val bytesSizeFormat = DecimalFormat("#,###")
|
|
|
|
//fun Long.formatBytesSize() = Utils.bytesSizeFormat.format(this)
|
|
|
|
|
|
|
|
// StringBuilder sb = new StringBuilder();
|
|
|
|
// long n;
|
|
|
|
// // giga
|
|
|
|
// n = t / 1000000000L;
|
|
|
|
// if( n > 0 ){
|
|
|
|
// sb.append( String.format( Locale.JAPAN, "%dg", n ) );
|
|
|
|
// t -= n * 1000000000L;
|
|
|
|
// }
|
|
|
|
// // Mega
|
|
|
|
// n = t / 1000000L;
|
|
|
|
// if( sb.length() > 0 ){
|
|
|
|
// sb.append( String.format( Locale.JAPAN, "%03dm", n ) );
|
|
|
|
// t -= n * 1000000L;
|
|
|
|
// }else if( n > 0 ){
|
|
|
|
// sb.append( String.format( Locale.JAPAN, "%dm", n ) );
|
|
|
|
// t -= n * 1000000L;
|
|
|
|
// }
|
|
|
|
// // kilo
|
|
|
|
// n = t / 1000L;
|
|
|
|
// if( sb.length() > 0 ){
|
|
|
|
// sb.append( String.format( Locale.JAPAN, "%03dk", n ) );
|
|
|
|
// t -= n * 1000L;
|
|
|
|
// }else if( n > 0 ){
|
|
|
|
// sb.append( String.format( Locale.JAPAN, "%dk", n ) );
|
|
|
|
// t -= n * 1000L;
|
|
|
|
// }
|
|
|
|
// // length
|
|
|
|
// if( sb.length() > 0 ){
|
|
|
|
// sb.append( String.format( Locale.JAPAN, "%03d", t ) );
|
|
|
|
// }else if( n > 0 ){
|
|
|
|
// sb.append( String.format( Locale.JAPAN, "%d", t ) );
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// return sb.toString();
|
|
|
|
|