2018-05-15 11:42:51 +02:00
/ * *
2018-05-15 11:47:06 +02:00
* @ author bwhitn [ brian . m . whitney @ outlook . com ]
2018-05-15 11:42:51 +02:00
* @ author d98762625 [ d98762625 @ gmail . com ]
* @ copyright Crown Copyright 2018
* @ license Apache - 2.0
* /
import BigNumber from "bignumber.js" ;
2018-05-15 15:32:39 +02:00
import Operation from "../Operation" ;
import { median , createNumArray } from "../lib/Arithmetic" ;
2018-05-15 15:59:28 +02:00
import { ARITHMETIC _DELIM _OPTIONS } from "../lib/Delim" ;
2018-05-15 11:42:51 +02:00
/ * *
* Median operation
* /
class Median extends Operation {
/ * *
* Median constructor
* /
constructor ( ) {
super ( ) ;
this . name = "Median" ;
this . module = "Default" ;
this . description = "Computes the median of a number list. If an item in the string is not a number it is excluded from the list.<br><br>e.g. <code>0x0a 8 1 .5</code> becomes <code>4.5</code>" ;
2018-08-21 20:07:13 +02:00
this . infoURL = "https://wikipedia.org/wiki/Median" ;
2018-05-15 11:42:51 +02:00
this . inputType = "string" ;
this . outputType = "BigNumber" ;
this . args = [
{
"name" : "Delimiter" ,
"type" : "option" ,
2018-05-15 15:59:28 +02:00
"value" : ARITHMETIC _DELIM _OPTIONS ,
2018-05-15 11:42:51 +02:00
}
] ;
}
/ * *
* @ param { string } input
* @ param { Object [ ] } args
* @ returns { BigNumber }
* /
run ( input , args ) {
2018-05-15 15:32:39 +02:00
const val = median ( createNumArray ( input , args [ 0 ] ) ) ;
2019-02-08 17:54:04 +01:00
return BigNumber . isBigNumber ( val ) ? val : new BigNumber ( NaN ) ;
2018-05-15 11:42:51 +02:00
}
}
export default Median ;