seed r92 - in trunk: . extensions libseed



Author: racarr
Date: Tue Nov  4 01:58:45 2008
New Revision: 92
URL: http://svn.gnome.org/viewvc/seed?rev=92&view=rev

Log:
Add printf. Build system fixes.


Added:
   trunk/extensions/Makefile.am
   trunk/extensions/Seed.js   (contents, props changed)
Removed:
   trunk/Makefile.am.bak
   trunk/Makefile.in
   trunk/configure
   trunk/configure.ac.bak
Modified:
   trunk/Makefile.am
   trunk/configure.ac
   trunk/libseed/seed-engine.c

Modified: trunk/Makefile.am
==============================================================================
--- trunk/Makefile.am	(original)
+++ trunk/Makefile.am	Tue Nov  4 01:58:45 2008
@@ -3,7 +3,8 @@
 
 SUBDIRS = po \
 	libseed\
-	src
+	src\
+	extensions
 
 seeddocdir = ${prefix}/doc/seed
 seeddoc_DATA = \

Modified: trunk/configure.ac
==============================================================================
--- trunk/configure.ac	(original)
+++ trunk/configure.ac	Tue Nov  4 01:58:45 2008
@@ -42,4 +42,5 @@
 libseed/Makefile
 po/Makefile.in
 src/Makefile
+extensions/Makefile
 ])

Added: trunk/extensions/Makefile.am
==============================================================================
--- (empty file)
+++ trunk/extensions/Makefile.am	Tue Nov  4 01:58:45 2008
@@ -0,0 +1,4 @@
+EXTRA_DIST=
+
+extensiondir=$(datadir)/seed
+extension_DATA = Gio.js Seed.js

Added: trunk/extensions/Seed.js
==============================================================================
--- (empty file)
+++ trunk/extensions/Seed.js	Tue Nov  4 01:58:45 2008
@@ -0,0 +1,132 @@
+#!/usr/local/bin/seed
+
+/**
+*
+*  Javascript sprintf
+*  http://www.webtoolkit.info/
+*
+*
+**/
+
+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.printf = function () { Seed.print(Seed.sprintf.apply(this, arguments)) };
+

Modified: trunk/libseed/seed-engine.c
==============================================================================
--- trunk/libseed/seed-engine.c	(original)
+++ trunk/libseed/seed-engine.c	Tue Nov  4 01:58:45 2008
@@ -871,6 +871,7 @@
 gboolean seed_init(int * argc, char *** argv)
 {
 	JSObjectRef seed_obj_ref;
+	JSStringRef defaults_script;
 
 	g_type_init ();
 	g_log_set_handler("GLib-GObject", G_LOG_LEVEL_WARNING, seed_log_handler, 0);
@@ -900,6 +901,12 @@
 	seed_create_function("import_namespace", &seed_gi_import_namespace, seed_obj_ref);
 	seed_init_builtins(argc, argv);
 	
+	defaults_script = 
+		JSStringCreateWithUTF8CString("Seed.include(\"/usr/local/share"
+									  "/seed/Seed.js\")");
+	JSEvaluateScript(eng->context, defaults_script, NULL, NULL, 0, NULL);
+	JSStringRelease(defaults_script);
+	
 	return TRUE;
 
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]