From 8a9e3e0df27c590462948eb2ad8a409a329fd9e3 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Fri, 4 May 2012 17:23:08 -0400 Subject: [PATCH] Switch string formatting to the one inside gjs https://bugzilla.gnome.org/show_bug.cgi?id=675479 --- js/Makefile.am | 1 - js/extensionPrefs/main.js | 2 +- js/misc/format.js | 71 --------------------------------------- js/ui/environment.js | 2 +- src/shell-js.c | 12 ------- src/shell-js.h | 2 -- 6 files changed, 2 insertions(+), 88 deletions(-) delete mode 100644 js/misc/format.js diff --git a/js/Makefile.am b/js/Makefile.am index 6b055365e..ea66c3e32 100644 --- a/js/Makefile.am +++ b/js/Makefile.am @@ -28,7 +28,6 @@ nobase_dist_js_DATA = \ misc/config.js \ misc/extensionUtils.js \ misc/fileUtils.js \ - misc/format.js \ misc/gnomeSession.js \ misc/history.js \ misc/jsParse.js \ diff --git a/js/extensionPrefs/main.js b/js/extensionPrefs/main.js index 59bf6cb53..c924af590 100644 --- a/js/extensionPrefs/main.js +++ b/js/extensionPrefs/main.js @@ -6,11 +6,11 @@ const GObject = imports.gi.GObject; const Gio = imports.gi.Gio; const Gtk = imports.gi.Gtk; const Pango = imports.gi.Pango; +const Format = imports.format; const _ = Gettext.gettext; const Config = imports.misc.config; -const Format = imports.misc.format; const ExtensionUtils = imports.misc.extensionUtils; diff --git a/js/misc/format.js b/js/misc/format.js deleted file mode 100644 index c30a1bac0..000000000 --- a/js/misc/format.js +++ /dev/null @@ -1,71 +0,0 @@ -// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- - -const ShellJS = imports.gi.ShellJS; - -/* - * This function is intended to extend the String object and provide - * an String.format API for string formatting. - * It has to be set up using String.prototype.format = Format.format; - * Usage: - * "somestring %s %d".format('hello', 5); - * It supports %s, %d, %x and %f, for %f it also support precisions like - * "%.2f".format(1.526). All specifiers can be prefixed with a minimum - * field width, e.g. "%5s".format("foo"). Unless the width is prefixed - * with '0', the formatted string will be padded with spaces. - */ - -function format() { - let str = this; - let i = 0; - let args = arguments; - - return str.replace(/%(I+)?([0-9]+)?(?:\.([0-9]+))?(.)/g, function (str, flagsGroup, widthGroup, precisionGroup, genericGroup) { - - if (precisionGroup != '' && genericGroup != 'f') - throw new Error("Precision can only be specified for 'f'"); - - let hasAlternativeIntFlag = (flagsGroup.indexOf('I') != -1); - - if (hasAlternativeIntFlag && genericGroup != 'd') - throw new Error("Alternative output digits can only be specfied for 'd'"); - - let fillChar = (widthGroup[0] == '0') ? '0' : ' '; - let width = parseInt(widthGroup, 10) || 0; - - function fillWidth(s, c, w) { - let fill = ''; - for (let i = 0; i < w; i++) - fill += c; - return fill.substr(s.length) + s; - } - - let s = ''; - switch (genericGroup) { - case '%': - return '%'; - break; - case 's': - s = args[i++].toString(); - break; - case 'd': - let intV = parseInt(args[i++]); - if (hasAlternativeIntFlag) - s = ShellJS.format_int_alternative_output(intV); - else - s = intV.toString(); - break; - case 'x': - s = parseInt(args[i++]).toString(16); - break; - case 'f': - if (precisionGroup == '') - s = parseFloat(args[i++]).toString(); - else - s = parseFloat(args[i++]).toFixed(parseInt(precisionGroup)); - break; - default: - throw new Error('Unsupported conversion character %' + genericGroup); - } - return fillWidth(s, fillChar, width); - }); -} diff --git a/js/ui/environment.js b/js/ui/environment.js index fc3992ae2..aa7a4bd07 100644 --- a/js/ui/environment.js +++ b/js/ui/environment.js @@ -90,7 +90,7 @@ function init() { } // OK, now things are initialized enough that we can import shell JS - const Format = imports.misc.format; + const Format = imports.format; const Tweener = imports.ui.tweener; Tweener.init(); diff --git a/src/shell-js.c b/src/shell-js.c index 6657b4879..8267fdc98 100644 --- a/src/shell-js.c +++ b/src/shell-js.c @@ -79,15 +79,3 @@ shell_js_add_extension_importer (const char *target_object_script, JS_EndRequest (context); return ret; } - -/** - * shell_js_format_int_alternative_output: - * @intval: - * - * Returns: (transfer full): - */ -gchar * -shell_js_format_int_alternative_output (gint intval) -{ - return g_strdup_printf ("%Id", intval); -} diff --git a/src/shell-js.h b/src/shell-js.h index fd8530480..26cbf4d82 100644 --- a/src/shell-js.h +++ b/src/shell-js.h @@ -11,8 +11,6 @@ gboolean shell_js_add_extension_importer (const char *target_object_script, const char *directory, GError **error); -gchar *shell_js_format_int_alternative_output (gint intval); - G_BEGIN_DECLS #endif /* __SHELL_JS_H__ */