1969 års psalmbokskommitté

Från Rilpedia

Hoppa till: navigering, sök
Wikipedia_letter_w.pngTexten från svenska WikipediaWikipedialogo_12pt.gif
rpsv.header.diskuteraikon2.gif

ChatZilla

Svensk version från 26 mars 2006 kl.10.34 (CEST) för senaste version se en:Rilpedia:IRC_channel_scripts#ChatZilla. För att installera, kopiera scriptet till en fil som kallas wikilinks.js någonstans och lägg till det på Auto-load scripts under Startup-taben under Global Settings.


//***********************************************
// IceKarma's WikiLinks script for ChatZilla
// Version 1.2
//   1.2 by James Ross: fix the normal links by shunting the
//       word-hyphenator as well.
// Version 2.0
//   2.0 By Glen Mailer:
//        - Converted to new plugin API
//        - Ripped out a whole load of unused stuff
plugin.prefary = [
   ["class", "wiki-link", ""],
];
//
// Plugin management
//
plugin.init = 
function init(glob) {
   plugin.major = 2;
   plugin.minor = 2;
   plugin.version = plugin.major + "." + plugin.minor;
   plugin.description =
   "Munges wiki-links to be clickable in the output window";
   plugin.prefary = plugin.prefary.concat(plugin.prefary);
}
plugin.disable = 
function disable()
{
   client.munger.delRule("wiki-link");
   client.munger.delRule("wiki-template-link");
   client.commandManager.removeCommands(plugin.commands);
   display( plugin.id + " v" + plugin.version + " disabled.");
   return true;
}
plugin.enable = 
function enable()
{
   client.munger.addRule("wiki-link", /(\[\[.+?\]\])/, insertWikiLink);
   client.munger.addRule("wiki-template-link", /(\{\{.+?\}\})/, insertWikiTemplateLink);
   // ugly hack to cause the munger to evaluate wiki-link before these rules
   var tmp1 = client.munger.entries["link"];
   var tmp2 = client.munger.entries["channel-link"];
   var tmp3 = client.munger.entries["word-hyphenator"];
   delete client.munger.entries["link"];
   delete client.munger.entries["channel-link"];
   delete client.munger.entries["word-hyphenator"];
   client.munger.entries["link"] = tmp1;
   client.munger.entries["channel-link"] = tmp2;
   client.munger.entries["word-hyphenator"] = tmp3;
   var cmdary = [
       [ "wiki-links-class", cmdClass, CMD_CONSOLE, "[<className>]" ],
   ];
   plugin.commands = client.commandManager.defineCommands(cmdary);
   display( plugin.id + " v" + plugin.version + " enabled.");
   return true;
}
//
// Mungers
//
function insertWikiLink(matchText,containerTag) {
   var wikiLink = matchText;
   var linkTitle;
   wikiLink  = matchText.replace(/^\[\[/, "");
   wikiLink  = wikiLink.replace(/\]\]$/, "");
   linkTitle = wikiLink;
   if (linkTitle.match(/\|/)) {
       var ary = linkTitle.match(/^(.*?)\|(.*)$/);
       wikiLink = ary[1];
       linkTitle = ary[2];
   }
   wikiLink = escape(wikiLink.replace(/ /g, "_"));
   var anchor = document.createElementNS( "http://www.w3.org/1999/xhtml",                                          "html:a");
   anchor.setAttribute("href", "http://sv.wikipedia.org/wiki/" + wikiLink);
   anchor.setAttribute("class", "chatzilla-link "+plugin.prefs["class"]);
   insertHyphenatedWord(linkTitle, anchor);
   containerTag.appendChild(document.createTextNode("[["));
   containerTag.appendChild(anchor);
   containerTag.appendChild(document.createTextNode("]]"));
}
function insertWikiTemplateLink(matchText,containerTag) {
   var wikiLink = matchText;
   var linkTitle;
   wikiLink  = matchText.replace(/^\{\{/, "");
   wikiLink  = wikiLink.replace(/\}\}$/, "");
   linkTitle = wikiLink;
   if (linkTitle.match(/^subst:/))
   {
       var ary = linkTitle.match(/^(subst:)(.*)$/);
       wikiLink = ary[2];
   }
   if (linkTitle.match(/\|/))
   {
       if(linkTitle.match(/^subst:/))
       {
           var ary = linkTitle.match(/^(subst:)(.*?)\|(.*)$/);
           wikiLink = ary[2];
       }
       else
       {
           var ary = linkTitle.match(/^(.*?)\|(.*)$/);
           wikiLink = ary[1];
       }
   }
   wikiLink = escape(wikiLink.replace(/ /g, "_"));
   var anchor = document.createElementNS( "http://www.w3.org/1999/xhtml",
                                          "html:a");
   anchor.setAttribute("href", "http://sv.wikipedia.org/wiki/Template:" + wikiLink);
   anchor.setAttribute("class", "chatzilla-link "+plugin.prefs["class"]);
   insertHyphenatedWord(linkTitle, anchor);
   containerTag.appendChild(document.createTextNode("{{"));
   containerTag.appendChild(anchor);
   containerTag.appendChild(document.createTextNode("}}"));
}
//
// Commands
//
function cmdClass(e) {
   if ( null != e.linkclass )
       plugin.prefs["class"] = e.linkclass;
   display( "Current value: " + plugin.prefs["class"] );
}

irssi

Ursprungligen från http://en.wikipedia.org/wiki/Wikipedia:Scripts#Irssi

#!/usr/bin/perl
use strict;
use warnings;
use Irssi;

Irssi::settings_add_str ('wikify', 'wiki_lang', 'sv');
Irssi::settings_add_str ('wikify', 'wiki_active_channels', 'freenode/#wikipedia
freenode/#wikibooks');

sub wikilang {
        Irssi::settings_get_str ('wiki_lang');
}

sub urlencode {
        my $string = shift;
        $string =~ y/ /_/;
        $string =~ s/([^A-Za-z0-9_])/sprintf("%%%02X", ord($1))/seg;
        return $string;
}

sub wikilink {
        my $s = shift;
        my $u = urlencode $s;
        my $l = wikilang;
        "[[$s]] <http://$l.wikipedia.org/wiki/$u>";
}

sub wikitemplate {
        my $s = shift;
        my $u = urlencode $s;
        my $l = wikilang;
        "{{$s}} <http://$l.wikipedia.org/wiki/Template:$u>";
}

sub wikify {
        my $line = shift;
        $line =~ s/\[\[(.*?)\]\]/wikilink $1/eg;
        $line =~ s/Template:(.+?)/wikitemplate $1/eg;
        return $line;
}

sub sig_message_public {
        my ($server, $msg, $nick, $address, $target) = @_;
        my $chatnet = $server->{chatnet};
        my $ok = 0;
        for my $t (split /\s+/, Irssi::settings_get_str ('wiki_active_channels')) {
                $ok = 1 if lc $t eq lc "$chatnet/$target";
        }
        return unless $ok;
        $msg = wikify $msg;
        Irssi::signal_continue ($server, $msg, $nick, $address, $target);
}

Irssi::signal_add_first ('message public', \&sig_message_public);
Personliga verktyg