USING: formatting http.client sequences strings kernel io math regexp unicode.case assocs ; IN: currency : coins ( -- array ) { "TWD" "CNY" "JPY" "KRW" "HKD" "THB" "SGD" "IDR" "VND" "MYR" "PHP" "INR" "AED" "KWD" "AUD" "NZD" "USD" "CAD" "BRL" "MXN" "ARS" "CLP" "VEB" "EUR" "GBP" "RUB" "CHF" "SEK" "ZAR" } ; : coins? ( coin -- ? ) coins member? ; : calias ( -- hashtable ) H{ { "NTD" "TWD" } { "RMB" "CNY" } } ; : calias? ( alias -- ? ) calias keys member? ; : calias-at ( alias -- value/? ) dup calias? [ calias at ] [ drop f ] if ; : yahootw-url ( -- url ) "http://tw.money.yahoo.com/currency_exc_result?amt=%d&from=%s&to=%s" ; : div-tag ( -- text ) "
! "" re-replace ; : find-exchange ( str -- result ) "經過計算後," over start 7 + cut div-tag over start 0 spin subseq strip-em-tag nip ; : get-ex-money ( money from to -- result ) [ >upper ] bi@ 2dup [ ! dup coins? [ t ] [ dup calias? [ calias-at t ] [ f ] if ] if coins? ! coins? [ t ] ] bi@ and [ make-url http-get nip find-exchange ] [ 3drop f ] if ;