From c7e73ba12d747186002433db54d002ab43bed171 Mon Sep 17 00:00:00 2001
From: obscuren <geffobscura@gmail.com>
Date: Tue, 25 Feb 2014 11:20:24 +0100
Subject: [PATCH] Added currency converting

---
 ethutil/common.go      | 35 +++++++++++++++++++++++++++++++++++
 ethutil/common_test.go | 17 +++++++++++++++++
 2 files changed, 52 insertions(+)
 create mode 100644 ethutil/common.go
 create mode 100644 ethutil/common_test.go

diff --git a/ethutil/common.go b/ethutil/common.go
new file mode 100644
index 000000000..07df6bb13
--- /dev/null
+++ b/ethutil/common.go
@@ -0,0 +1,35 @@
+package ethutil
+
+import (
+	"fmt"
+	"math/big"
+)
+
+var (
+	Ether  = BigPow(10, 18)
+	Finney = BigPow(10, 15)
+	Szabo  = BigPow(10, 12)
+	Vito   = BigPow(10, 9)
+	Turing = BigPow(10, 6)
+	Eins   = BigPow(10, 3)
+	Wei    = big.NewInt(1)
+)
+
+func CurrencyToString(num *big.Int) string {
+	switch {
+	case num.Cmp(Ether) >= 0:
+		return fmt.Sprintf("%v Ether", new(big.Int).Div(num, Ether))
+	case num.Cmp(Finney) >= 0:
+		return fmt.Sprintf("%v Finney", new(big.Int).Div(num, Finney))
+	case num.Cmp(Szabo) >= 0:
+		return fmt.Sprintf("%v Szabo", new(big.Int).Div(num, Szabo))
+	case num.Cmp(Vito) >= 0:
+		return fmt.Sprintf("%v Vito", new(big.Int).Div(num, Vito))
+	case num.Cmp(Turing) >= 0:
+		return fmt.Sprintf("%v Turing", new(big.Int).Div(num, Turing))
+	case num.Cmp(Eins) >= 0:
+		return fmt.Sprintf("%v Eins", new(big.Int).Div(num, Eins))
+	}
+
+	return fmt.Sprintf("%v Wei", num)
+}
diff --git a/ethutil/common_test.go b/ethutil/common_test.go
new file mode 100644
index 000000000..3a6a37ff5
--- /dev/null
+++ b/ethutil/common_test.go
@@ -0,0 +1,17 @@
+package ethutil
+
+import (
+	"fmt"
+	"math/big"
+	"testing"
+)
+
+func TestCommon(t *testing.T) {
+	fmt.Println(CurrencyToString(BigPow(10, 19)))
+	fmt.Println(CurrencyToString(BigPow(10, 16)))
+	fmt.Println(CurrencyToString(BigPow(10, 13)))
+	fmt.Println(CurrencyToString(BigPow(10, 10)))
+	fmt.Println(CurrencyToString(BigPow(10, 7)))
+	fmt.Println(CurrencyToString(BigPow(10, 4)))
+	fmt.Println(CurrencyToString(big.NewInt(10)))
+}
-- 
GitLab