diff options
author | marcus <marcus@df743ca5-7f9a-e211-a948-0013205c9059> | 2010-05-09 01:04:45 +0800 |
---|---|---|
committer | marcus <marcus@df743ca5-7f9a-e211-a948-0013205c9059> | 2010-05-09 01:04:45 +0800 |
commit | 05ccd39c97f808674571f03e6e65da66870d0b45 (patch) | |
tree | 25827769cec33203027866159dc88e7881c309a1 /devel | |
parent | e09fd884b58d6f5f7418bcdfb0563c9068715856 (diff) | |
download | marcuscom-ports-05ccd39c97f808674571f03e6e65da66870d0b45.tar.gz marcuscom-ports-05ccd39c97f808674571f03e6e65da66870d0b45.tar.zst marcuscom-ports-05ccd39c97f808674571f03e6e65da66870d0b45.zip |
Do not import installed modules when building seed.
git-svn-id: svn://creme-brulee.marcuscom.com/ports/trunk@14130 df743ca5-7f9a-e211-a948-0013205c9059
Diffstat (limited to 'devel')
-rw-r--r-- | devel/seed/Makefile | 14 | ||||
-rw-r--r-- | devel/seed/files/Seed.js | 203 |
2 files changed, 216 insertions, 1 deletions
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("."); +} |