NotificationDaemon: add rewriteRules infrastructure, use it for xchat

Changes notifications like:

    XChat: Private message from: danw (GimpNet) blah...

to

    danw: blah blah blah blah

(the "XChat" being unnecessary since there's already an xchat icon
there anyway.)

https://bugzilla.gnome.org/show_bug.cgi?id=608915
This commit is contained in:
Dan Winship 2010-02-16 17:32:19 -05:00
parent e5ba414f2d
commit d8800c095a

View File

@ -69,6 +69,16 @@ const Urgency = {
CRITICAL: 2 CRITICAL: 2
}; };
const rewriteRules = {
'XChat': [
{ pattern: /^XChat: Private message from: (\S*) \(.*\)$/,
replacement: '<$1>' },
{ pattern: /^XChat: New public message from: (\S*) \((.*)\)$/,
replacement: '$2 <$1>' },
{ pattern: /^XChat: Highlighted message from: (\S*) \((.*)\)$/,
replacement: '$2 <$1>' }
]
};
function NotificationDaemon() { function NotificationDaemon() {
this._init(); this._init();
} }
@ -150,6 +160,15 @@ NotificationDaemon.prototype = {
summary = GLib.markup_escape_text(summary, -1); summary = GLib.markup_escape_text(summary, -1);
let rewrites = rewriteRules[appName];
if (rewrites) {
for (let i = 0; i < rewrites.length; i++) {
let rule = rewrites[i];
if (summary.search(rule.pattern) != -1)
summary = summary.replace(rule.pattern, rule.replacement);
}
}
let notification = new MessageTray.Notification(source, summary, body, true); let notification = new MessageTray.Notification(source, summary, body, true);
if (actions.length) { if (actions.length) {
for (let i = 0; i < actions.length - 1; i += 2) for (let i = 0; i < actions.length - 1; i += 2)