From 299b50a0d4e1ec0d7c6e5820c4f68da4e424f382 Mon Sep 17 00:00:00 2001
From: obscuren <geffobscura@gmail.com>
Date: Sat, 21 Jun 2014 02:40:25 +0200
Subject: Support serpent lang

---
 ethutil/script.go | 32 ++++++++++++++++++++++----------
 1 file changed, 22 insertions(+), 10 deletions(-)

diff --git a/ethutil/script.go b/ethutil/script.go
index 94e401406..c8b1da51c 100644
--- a/ethutil/script.go
+++ b/ethutil/script.go
@@ -3,23 +3,35 @@ package ethutil
 import (
 	"fmt"
 	"github.com/obscuren/mutan"
+	"github.com/obscuren/serpent-go"
 	"strings"
 )
 
 // General compile function
-func Compile(script string) ([]byte, error) {
-	byteCode, errors := mutan.Compile(strings.NewReader(script), false)
-	if len(errors) > 0 {
-		var errs string
-		for _, er := range errors {
-			if er != nil {
-				errs += er.Error()
+func Compile(script string) (ret []byte, err error) {
+	c := strings.Split(script, "\n")[0]
+
+	if c == "#!serpent" {
+		byteCode, err := serpent.Compile(script)
+		if err != nil {
+			return nil, err
+		}
+
+		return byteCode, nil
+	} else {
+		byteCode, errors := mutan.Compile(strings.NewReader(script), false)
+		if len(errors) > 0 {
+			var errs string
+			for _, er := range errors {
+				if er != nil {
+					errs += er.Error()
+				}
 			}
+			return nil, fmt.Errorf("%v", errs)
 		}
-		return nil, fmt.Errorf("%v", errs)
-	}
 
-	return byteCode, nil
+		return byteCode, nil
+	}
 }
 
 func CompileScript(script string) ([]byte, []byte, error) {
-- 
cgit v1.2.3