aboutsummaryrefslogtreecommitdiff
path: root/src/server/View/Format.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/View/Format.hs')
-rw-r--r--src/server/View/Format.hs33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/server/View/Format.hs b/src/server/View/Format.hs
new file mode 100644
index 0000000..354d46a
--- /dev/null
+++ b/src/server/View/Format.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+module View.Format
+ ( price
+ ) where
+
+import Data.Text (Text)
+import qualified Data.Text as T
+import Data.List (intersperse)
+
+import Conf (Conf)
+import qualified Conf
+
+price :: Conf -> Int -> Text
+price conf amount = T.concat [number amount, " ", Conf.currency conf]
+
+number :: Int -> Text
+number n =
+ T.pack
+ . (++) (if n < 0 then "-" else "")
+ . reverse
+ . concat
+ . intersperse " "
+ . group 3
+ . reverse
+ . show
+ . abs $ n
+
+group :: Int -> [a] -> [[a]]
+group n xs =
+ if length xs <= n
+ then [xs]
+ else (take n xs) : (group n (drop n xs))