From 05ccd39c97f808674571f03e6e65da66870d0b45 Mon Sep 17 00:00:00 2001
From: marcus <marcus@df743ca5-7f9a-e211-a948-0013205c9059>
Date: Sat, 8 May 2010 17:04:45 +0000
Subject: Do not import installed modules when building seed.

git-svn-id: svn://creme-brulee.marcuscom.com/ports/trunk@14130 df743ca5-7f9a-e211-a948-0013205c9059
---
 devel/seed/Makefile      |  14 +++-
 devel/seed/files/Seed.js | 203 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 216 insertions(+), 1 deletion(-)
 create mode 100644 devel/seed/files/Seed.js

(limited to 'devel')

diff --git a/devel/seed/Makefile b/devel/seed/Makefile
index 97febf2da..5eb213383 100644
--- a/devel/seed/Makefile
+++ b/devel/seed/Makefile
@@ -3,7 +3,10 @@
 # Whom:					Alexander Logvinov <avl@FreeBSD.org>
 #
 # $FreeBSD$
-#   $MCom: ports/devel/seed/Makefile,v 1.17 2010/02/24 00:54:09 ahze Exp $
+#   $MCom: ports/devel/seed/Makefile,v 1.18 2010/03/29 04:29:13 avl Exp $
+#
+# NOTE: It may be necessary to update ${FILESDIR}/Seed.js on each release.
+# To do that, just replace imports.searchPaths with "." and ".." elements.
 #
 
 PORTNAME=	seed
@@ -53,4 +56,13 @@ post-patch:
 		${WRKSRC}/Makefile.in
 .endif
 
+pre-build:
+	cd ${WRKSRC}/extensions && ${SETENV} ${MAKE_ENV} ${GMAKE} \
+	    	${MAKE_FLAGS} Makefile ${MAKE_ARGS} all
+	${CP} ${WRKSRC}/extensions/Seed.js ${WRKSRC}/extensions/Seed.js.sav
+	${CP} ${FILESDIR}/Seed.js ${WRKSRC}/extensions/Seed.js
+
+post-build:
+	${CP} ${WRKSRC}/extensions/Seed.js.sav ${WRKSRC}/extensions/Seed.js
+
 .include <bsd.port.post.mk>
diff --git a/devel/seed/files/Seed.js b/devel/seed/files/Seed.js
new file mode 100644
index 000000000..9edb12c87
--- /dev/null
+++ b/devel/seed/files/Seed.js
@@ -0,0 +1,203 @@
+GLib = imports.gi.GLib;
+
+Seed.sprintf = function ()
+{
+    if (typeof arguments == "undefined") { return null; }
+    if (arguments.length < 1) { return null; }
+    if (typeof arguments[0] != "string") { return null; }
+    if (typeof RegExp == "undefined") { return null; }
+
+    var string = arguments[0];
+    var exp = new RegExp(/(%([%]|(\-)?(\+|\x20)?(0)?(\d+)?(\.(\d)?)?([bcdfosxX])))/g);
+    var matches = new Array();
+    var strings = new Array();
+    var convCount = 0;
+    var stringPosStart = 0;
+    var stringPosEnd = 0;
+    var matchPosEnd = 0;
+    var newString = '';
+    var match = null;
+
+    while (match = exp.exec(string)) {
+        if (match[9]) { convCount += 1; }
+
+        stringPosStart = matchPosEnd;
+        stringPosEnd = exp.lastIndex - match[0].length;
+        strings[strings.length] = string.substring(stringPosStart, stringPosEnd);
+
+        matchPosEnd = exp.lastIndex;
+        matches[matches.length] = {
+            match: match[0],
+            left: match[3] ? true : false,
+            sign: match[4] || '',
+            pad: match[5] || ' ',
+            min: match[6] || 0,
+            precision: match[8],
+            code: match[9] || '%',
+            negative: parseInt(arguments[convCount]) < 0 ? true : false,
+            argument: String(arguments[convCount])
+        };
+    }
+    strings[strings.length] = string.substring(matchPosEnd);
+
+    if (matches.length == 0) { return string; }
+    if ((arguments.length - 1) < convCount) { return null; }
+
+    var code = null;
+    var match = null;
+    var i = null;
+
+    for (i=0; i<matches.length; i++) {
+
+        if (matches[i].code == '%') { substitution = '%' }
+        else if (matches[i].code == 'b') {
+            matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(2));
+            substitution = Seed.sprintf.convert(matches[i], true);
+        }
+        else if (matches[i].code == 'c') {
+            matches[i].argument = String(String.fromCharCode(parseInt(Math.abs(parseInt(matches[i].argument)))));
+            substitution = Seed.sprintf.convert(matches[i], true);
+        }
+        else if (matches[i].code == 'd') {
+            matches[i].argument = String(Math.abs(parseInt(matches[i].argument)));
+            substitution = Seed.sprintf.convert(matches[i]);
+        }
+        else if (matches[i].code == 'f') {
+            matches[i].argument = String(Math.abs(parseFloat(matches[i].argument)).toFixed(matches[i].precision ? matches[i].precision : 6));
+            substitution = Seed.sprintf.convert(matches[i]);
+        }
+        else if (matches[i].code == 'o') {
+            matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(8));
+            substitution = Seed.sprintf.convert(matches[i]);
+        }
+        else if (matches[i].code == 's') {
+            matches[i].argument = matches[i].argument.substring(0, matches[i].precision ? matches[i].precision : matches[i].argument.length)
+            substitution = Seed.sprintf.convert(matches[i], true);
+        }
+        else if (matches[i].code == 'x') {
+            matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(16));
+            substitution = Seed.sprintf.convert(matches[i]);
+        }
+        else if (matches[i].code == 'X') {
+            matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(16));
+            substitution = Seed.sprintf.convert(matches[i]).toUpperCase();
+        }
+        else {
+            substitution = matches[i].match;
+        }
+
+        newString += strings[i];
+        newString += substitution;
+
+    }
+    newString += strings[i];
+
+    return newString;
+
+};
+
+Seed.sprintf.convert = function(match, nosign)
+{
+    if (nosign) {
+        match.sign = '';
+    } else {
+        match.sign = match.negative ? '-' : match.sign;
+    }
+    var l = match.min - match.argument.length + 1 - match.sign.length;
+    var pad = new Array(l < 0 ? 0 : l).join(match.pad);
+    if (!match.left) {
+        if (match.pad == "0" || nosign) {
+            return match.sign + pad + match.argument;
+        } else {
+            return pad + match.sign + match.argument;
+        }
+    } else {
+        if (match.pad == "0" || nosign) {
+            return match.sign + match.argument + pad.replace(/0/g, ' ');
+        } else {
+            return match.sign + match.argument + pad;
+        }
+    }
+};
+
+
+Seed.repl = function()
+{
+	try
+	{
+		if(readline)
+		{
+			// readline is loaded
+		}
+	}
+	catch (e)
+	{
+		try
+		{
+			readline = imports.readline;
+		}
+		catch (e)
+		{
+			print(e.name + " " + e.message);
+			return true;
+		}
+	}
+
+	try
+	{
+		item = readline.readline("> ");
+		if (item == "continue")
+			return false;
+		print(eval(item));
+	}
+	catch (e)
+	{
+		print(e.name + " " + e.message);
+	}
+	return true;
+}
+
+
+Seed.glib_repl = function()
+{
+	GLib.idle_add(Seed.repl, null);
+}
+
+Seed.thread_repl = function()
+{
+	GLib.thread_create_full(function() { while(Seed.repl()){} },
+							null, 0, true);
+}
+
+Seed.printf = function () { print(Seed.sprintf.apply(this, arguments)) };
+
+if(!imports.searchPath || (imports.searchPath.length == 0))
+{
+	imports.searchPath = [ ".",
+	                       ".." ];
+
+	if(Seed.argv.length > 1)
+	{
+		__script_path__ = GLib.path_get_dirname(Seed.argv[1]);
+		
+		try
+		{
+			if(!GLib.path_is_absolute(__script_path__))
+			{
+				__script_path__ = GLib.build_filenamev([GLib.get_current_dir(),
+				                                      __script_path__]);
+			}
+		
+			__script_path__ = imports.os.realpath(__script_path__);
+		
+			if(__script_path__ && __script_path__ != "")
+				imports.searchPath.push(__script_path__);
+		}
+		catch(e)
+		{
+			print(imports.JSON.stringify(e));
+		}
+	}
+
+	imports.searchPath.push(".");
+}
-- 
cgit v1.2.3