Benutzer:Deus Figendi/ChatLogFormater.js
Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
- Opera: Strg+F5
/* A WORD ON LICENCIES: This script was written in less a day so... I'm not sure if it reaches a hight enough threshold of originality. 'Cause there might be no such law in your country you'll need a licence anyway. And: This plattform wants me to use the GDLF but... that is a document-licence not for software and this is software! However, so I decided just to multi-licence this work XD For every licence: Name: Chat Formater Version: 1.2 Description: JavaScript that converts some chat-logs into HTML-definition-lists Author: ©2011 Deus Figendi aka Kai-Uwe Kramer Contact: http://www.jedipedia.net/wiki/Benutzer_Diskussion:Deus_Figendi * -------------------------THE BEER-WARE LICENSE------------------------------ * "THE BEER-WARE LICENSE" (Revision 42): * http://www.jedipedia.net/wiki/Benutzer_Diskussion:Deus_Figendi schrieb * diese Datei. Solange Sie diesen Vermerk nicht entfernen, können Sie mit * der Datei machen, was Sie möchten. Wenn wir uns eines Tages treffen * und Sie denken, die Datei ist es wert, können Sie mir dafür ein Bier * ausgeben. Deus Figendi * * Für weitere Informationen über diese Lizenz siehe: * http://people.freebsd.org/~phk/ * ---------------------------------------------------------------------------- ------------------------------------GPL--------------------------------------- (C) 2011 Deus Figendi alias Kai-Uwe Kramer This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. --------------------------------GFDL------------------------------------------ Copyright (C) 2011 Deus Figendi aka Kai-Uwe Kramer Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license can be found here: http://www.gnu.org/copyleft/fdl.html */ function getGlobalParser () { //this function creates a parser-Object //it containts for various Chat-Clients a RegularExpression and //the numbers/positions of sub-expressions. if (!globalParser) { var globalParser = new Array(); var line_analyser = new Object(); line_analyser.name = "ChatZilla"; // v----------------1 Date/Time-----------------------v line_analyser.pattern = /^(\[(\d{4})\-(\d\d)\-(\d\d)\s(\d\d)\:(\d\d):(\d\d)\])?\s(\<|\*\s|\=\-\=\s|\-\-\>\|\s|\|\<\-\-\s)([\w\^\-\.\|]+)\>?\s(.*)$/; // 2Jahr 3Monat 4Tag 5Stunde 6Minute7Sekunde 8 Action-Identifier 9 Nickname 10Txt line_analyser.dt_year = 2; line_analyser.dt_month = 3; line_analyser.dt_day = 4; line_analyser.dt_hour = 5; line_analyser.dt_minute= 6; line_analyser.dt_second= 7; line_analyser.act_say_pos = 8; line_analyser.act_say_pat = /^\<$/; line_analyser.act_say_nic = 9; line_analyser.act_say_txt = 10; line_analyser.act_mode_pos= 8; line_analyser.act_mode_pat= /^\=\-\=\s$/; line_analyser.act_mode_nic = 9; line_analyser.act_mode_txt = 10; line_analyser.act_act_pos = 8; line_analyser.act_act_pat = /^\*\s$/; line_analyser.act_act_nic = 9; line_analyser.act_act_txt = 10; line_analyser.act_join_pos= 8; line_analyser.act_join_pat= /^\-\-\>\|\s$/; line_analyser.act_join_nic = 9; line_analyser.act_join_txt = 10; line_analyser.act_part_pos= 8; line_analyser.act_part_pat= /^\|\<\-\-\s$/; line_analyser.act_part_nic = 9; line_analyser.act_part_txt = 10; line_analyser.act_quit_pos= 8; line_analyser.act_quit_pat= /^\-\-\>\|\s$/; line_analyser.act_quit_nic = 9; line_analyser.act_quit_txt = 10; line_analyser.act_nick_pos= 8; line_analyser.act_nick_pat= /^\=\-\=\s_____$/; line_analyser.act_nick_nic = 9; line_analyser.act_nick_txt = 10; // =-= steht für Topic-Change, Nickchange, Modi... muss nachgebessert werden. globalParser[globalParser.length] = line_analyser; var line_analyser = new Object(); line_analyser.name = "mibbit"; line_analyser.pattern = /^(\d\d)\:(\d\d)\s(\s*\**\s)?([\w\^\-\.\|]+)\s(.*)$/; // 1Stunde 2Minute 3Act-Type 4nickname 5text line_analyser.dt_year = -1; line_analyser.dt_month = -1; line_analyser.dt_day = -1; line_analyser.dt_hour = 1; line_analyser.dt_minute= 2; line_analyser.dt_second= -1; line_analyser.act_say_pos = 3; line_analyser.act_say_pat = /^$/; line_analyser.act_say_nic = 4; line_analyser.act_say_txt = 5; line_analyser.act_mode_pos= 3; line_analyser.act_mode_pat= /^\s*\*\*\*\s$/; line_analyser.act_mode_nic = 4; line_analyser.act_mode_txt = 5; line_analyser.act_act_pos = 3; line_analyser.act_act_pat = /^\s*\*\s$/; line_analyser.act_act_nic = 4; line_analyser.act_act_txt = 5; line_analyser.act_join_pos= 3; line_analyser.act_join_pat= /^\s*\*\*\*\s$/; //check line_analyser.act_join_nic = 4; line_analyser.act_join_txt = 5; line_analyser.act_part_pos= 3; line_analyser.act_part_pat= /^\s*\*\*\*\s$/; //check line_analyser.act_part_nic = 4; line_analyser.act_part_txt = 5; line_analyser.act_quit_pos= 3; line_analyser.act_quit_pat= /^\s*\*\*\*\s$/; //check line_analyser.act_quit_nic = 4; line_analyser.act_quit_txt = 5; line_analyser.act_nick_pos= 3; line_analyser.act_nick_pat= /^\s*\*\*\*\s$/; //check line_analyser.act_nick_nic = 4; line_analyser.act_nick_txt = 5; globalParser[globalParser.length] = line_analyser; var line_analyser = new Object(); line_analyser.name = "MirandaIM"; // v----------------------------------------------------4 Action + Mode-Block----------------------------------------------------------------------------------------------v line_analyser.pattern = /^\[(\d\d):(\d\d)\]\s([\w\^\-\.\|]+)((:)?\s(has left|has joined|[\w]{2,3}ables \'\w+\' status for [\w\^\-\.\|]+|sets mode (\+|\-)[\w]+\s?[\w\^\-\.]*|is now known as [\w\^\-\.\|]+|has disconnected\: Quit\: .*))(.*)$/; // 1hour 2Minute 3nickname 5act ^--------------------------------6 action type------------------------------------------------------------------------------------------------------------------^ 8txt // 7mode+/ line_analyser.dt_year = -1; line_analyser.dt_month = -1; line_analyser.dt_day = -1; line_analyser.dt_hour = 1; line_analyser.dt_minute= 2; line_analyser.dt_second= -1; line_analyser.act_say_pos = 5; line_analyser.act_say_pat = /^:$/; line_analyser.act_say_nic = 3; line_analyser.act_say_txt = 8; line_analyser.act_mode_pos= 4; line_analyser.act_mode_pat= /^\s([\w]{2,3}ables \'\w+\' status for [\w\^\-\.\|]+|sets mode (\+|\-)[\w]+\s?[\w\^\-\.\|]*).*$/; line_analyser.act_mode_nic = 3; line_analyser.act_mode_txt = 6; line_analyser.act_act_pos = 4; line_analyser.act_act_pat = /^\s(has left|has joined|[\w]{2,3}ables \'\w+\' status for [\w\^\-\.\|]+|sets mode (\+|\-)[\w]+\s?[\w\^\-\.\|]*|is now known as [\w\^\-\.\|]+|has disconnected\: Quit\: .*){0}$/; line_analyser.act_act_nic = 3; line_analyser.act_act_txt = 8; line_analyser.act_join_pos= 4; line_analyser.act_join_pat= /^\shas joined.*$/; line_analyser.act_join_nic = 3; line_analyser.act_join_txt = 6; line_analyser.act_part_pos= 4; line_analyser.act_part_pat= /^\shas left.*$/; line_analyser.act_part_nic = 3; line_analyser.act_part_txt = 6; line_analyser.act_quit_pos= 4; line_analyser.act_quit_pat= /^\shas disconnected\: Quit\: .*$/; line_analyser.act_quit_nic = 3; line_analyser.act_quit_txt = 6; line_analyser.act_nick_pos= 6; line_analyser.act_nick_pat= /^\sis now known as [\w\^\-\.\|]+.*$/; line_analyser.act_nick_nic = 3; line_analyser.act_nick_txt = 6; globalParser[globalParser.length] = line_analyser; var line_analyser = new Object(); line_analyser.name = "PidGin"; // v 4 Typ/Nick-Block v line_analyser.pattern = /^\((\d\d)\:(\d\d)\:(\d\d)\)\s(\*{0,3}([\w\^\-]+)\:?)\s(.*)$/; // 1Stunde 2Minute 3Sekunde 5nickname 6text line_analyser.dt_year = -1; line_analyser.dt_month = -1; line_analyser.dt_day = -1; line_analyser.dt_hour = 1; line_analyser.dt_minute= 2; line_analyser.dt_second= 3; line_analyser.act_say_pos = 4; line_analyser.act_say_pat = /^[\w\^\-\.\|]+\:$/; line_analyser.act_say_nic = 5; line_analyser.act_say_txt = 6; line_analyser.act_mode_pos= 5; line_analyser.act_mode_pat= /^Modus$/; line_analyser.act_mode_nic = -1; line_analyser.act_mode_txt = 6; line_analyser.act_act_pos = 4; line_analyser.act_act_pat = /^\*\*\*[\w\^\-\.\|]+$/; line_analyser.act_act_nic = 5; line_analyser.act_act_txt = 6; line_analyser.act_join_pos= 6; line_analyser.act_join_pat= /^\s?\[[\w\^\-\.\|]+\]\shat\sden\sRaum\sbetreten\..*$/; line_analyser.act_join_nic = 5; line_analyser.act_join_txt = 6; line_analyser.act_part_pos= 6; line_analyser.act_part_pat= /^\s?hat\sden\sRaum\sverlassen\.$/; line_analyser.act_part_nic = 5; line_analyser.act_part_txt = 6; line_analyser.act_quit_pos= 6; line_analyser.act_quit_pat= /^\s?hat\sden\sRaum\sverlassen\.\s\(quit\:\s.*$/; line_analyser.act_quit_nic = 5; line_analyser.act_quit_txt = 6; line_analyser.act_nick_pos= 6; line_analyser.act_nick_pat= /^\s?hei.t jetzt[\w\^\-\.\|]+.*$/; line_analyser.act_nick_nic = 5; line_analyser.act_nick_txt = 6; globalParser[globalParser.length] = line_analyser; var line_analyser = new Object(); line_analyser.name = "Trillian"; // v 3 Action- and Nick- and Text-Block v line_analyser.pattern = /^\[(\d\d)\:(\d\d)\]\s((\*{0,3})\s?\<?[\@\+]?([\w\^\-\.\|]+)\>?(\s|\!)(.*))$/; // 1Stunde 2Minute 4Act-Type 5nickname 6????? 7text line_analyser.dt_year = -1; line_analyser.dt_month = -1; line_analyser.dt_day = -1; line_analyser.dt_hour = 1; line_analyser.dt_minute= 2; line_analyser.dt_second= -1; line_analyser.act_say_pos = 4; line_analyser.act_say_pat = /^$/; line_analyser.act_say_nic = 5; line_analyser.act_say_txt = 7; line_analyser.act_mode_pos= 3; line_analyser.act_mode_pat= /^\*\*\*\s[\w\^\-\.\|]+\ssets\smode\s.*$/; line_analyser.act_mode_nic = 5; line_analyser.act_mode_txt = 7; line_analyser.act_act_pos = 3; line_analyser.act_act_pat = /^\*\s.*$/; line_analyser.act_act_nic = 5; line_analyser.act_act_txt = 7; line_analyser.act_join_pos= 3; line_analyser.act_join_pat= /^\*\*\*\s[\w\^\-\.\|]+\shas\sjoined\s.*$/; line_analyser.act_join_nic = 5; line_analyser.act_join_txt = 7; line_analyser.act_part_pos= 3; line_analyser.act_part_pat= /^\*\*\*\s[\w\^\-\.\|]+\shas\sleft\s.*$/; line_analyser.act_part_nic = 4; line_analyser.act_part_txt = 5; line_analyser.act_quit_pos= 3; line_analyser.act_quit_pat= /^\*\*\*\s[\w\^\-\.\|]+\shas\squit\s.*$/; line_analyser.act_quit_nic = 4; line_analyser.act_quit_txt = 5; line_analyser.act_nick_pos= 3; line_analyser.act_nick_pat= /^\*\*\*\s[\w\^\-\.\|]+\sis now known as [\w\^\-\.\|]+.*$/; line_analyser.act_nick_nic = 4; line_analyser.act_nick_txt = 5; globalParser[globalParser.length] = line_analyser; var line_analyser = new Object(); line_analyser.name = "xChat-de"; // v--------1 Date--------v v--------4 Time-----------v v----------8 Nick/Action-Block-------v //line_analyser.pattern = /^\s?((\w{1,3})\s(\d{1,2})\s)?(\[?(\d\d):(\d\d)(\:(\d\d))?\]?)?\s{0,2}(<?([\w\^\-]+)>?|((\*)\s*([\w\^\-]*)))\s{1,2}(.*)$/; // 2Month 3Day 5hour 6minute 7seconds 9saynick 11act 12act-nick 13text // v----------------------------------1 Date-------------------v v----------4 time------------v v----------------------------------------------------------------------8 action/say-Block-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------v line_analyser.pattern = /^((Jan|Feb|Mrz|Apr|Mai|Jun|Jul|Aug|Sep|Okt|Nov|Dez)\s(\d\d)\s)?(\[?(\d\d):(\d\d):?(\d\d)?\]?)?\s*((\*\s|<)?([\w\^\-\.\|]+)>?\s+(\([\~\w\.\-\@\/]+\)\shat\s[\#\w\-\.]+\sbetreten|\([\~\w\.\-\@]+\)\shat\s[#\w\-\.]+\sverlassen|hat die Verbindung getrennt \(.*|ist jetzt bekannt als [\w\^\-\.\|]+|gibt \w+\-Status an [\w\^\-\.\|]+|setzt Modus (\+|\-)\w [\w\#\-\.]+|entfernt \w+\-Status bei [\w\^\-\.\|]+|ist jetzt bekannt als [\w\^\-\.\|]+)?(.*))$/ // ^-------------------2 Month---------------------^ 3 day 5hour 6minute 7second 9action? 10 nickname ^-------------------------------11 action-type--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^ 13txt // ^-----------------join-------------------------^-------------------part----------------------^-----------------quit-----------^-------------------nick------------^--------------------------------mode----------11cmode-----------------------------------------------------^------------nick-------------------^ line_analyser.dt_year = -1; line_analyser.dt_month = 2; line_analyser.dt_day = 3; line_analyser.dt_hour = 5; line_analyser.dt_minute= 6; line_analyser.dt_second= 7; line_analyser.act_say_pos = 9; line_analyser.act_say_pat = /^<$/; line_analyser.act_say_nic = 10; line_analyser.act_say_txt = 13; line_analyser.act_mode_pos= 11; line_analyser.act_mode_pat= /^gibt \w+\-Status an [\w\^\-\.\|]+|setzt Modus (\+|\-)\w [\w\#\-\.]+|entfernt \w+\-Status bei [\w\^\-\.\|]+$/; line_analyser.act_mode_nic = 10; line_analyser.act_mode_txt = 11; line_analyser.act_act_pos = 8; line_analyser.act_act_pat = /^\*\s[\w\^\-\.\|]+\s(\([\~\w\.\-\@]+\)\shat\s[#\w\-\.]+\sbetreten|\([\~\w\.\-\@]+\)\shat\s[#\w\-\.]+\sverlassen|hat die Verbindung getrennt \(Quit: .*\)?|ist jetzt bekannt als [\w\^\-\.\|]+|gibt \w+\-Status an [\w\^\-\.\|]+|setzt Modus (\+|\-)\w [\w\#\-\.]+|ist jetzt bekannt als [\w\^\-\.\|]+){0}.*$/; line_analyser.act_act_nic = 10; line_analyser.act_act_txt = 13; line_analyser.act_join_pos= 11; line_analyser.act_join_pat= /^\([\~\w\.\-\@\/]+\)\shat\s[\#\w\-\.]+\sbetreten.*$/; line_analyser.act_join_nic = 10; line_analyser.act_join_txt = 11; line_analyser.act_part_pos= 11; line_analyser.act_part_pat= /^\([\~\w\.\-\@\/]+\)\shat\s[#\w\-\.]+\sverlassen.*$/; line_analyser.act_part_nic = 10; line_analyser.act_part_txt = 11; line_analyser.act_quit_pos= 11; line_analyser.act_quit_pat= /^hat die Verbindung getrennt \(.*$/; line_analyser.act_quit_nic = 10; line_analyser.act_quit_txt = 11; line_analyser.act_nick_pos= 11; line_analyser.act_nick_pat= /^ist jetzt bekannt als [\w\^\-\.\|]+.*$/; line_analyser.act_nick_nic = 10; line_analyser.act_nick_txt = 11; globalParser[globalParser.length] = line_analyser; } return globalParser; } function movePreloadSelect (repitations) { //moves the preload-<select>-Element to the right if it has the style.marginLeft-Thingy in px (otherwise I'd need CSS3) if (document.getElementById("stdPreloads")) { if (document.getElementById("stdPreloads").parentNode) { var ml_text = document.getElementById("stdPreloads").parentNode.style.marginLeft; var ml_re = /^(\d+)(.+)$/; var ml_re_result = ml_re.exec(ml_text); if (ml_re_result) { if (ml_re_result[2].trim() == "px") { var num_pixel = parseInt(ml_re_result[1]); num_pixel = parseInt(num_pixel + (23 * (repitations))); document.getElementById("stdPreloads").parentNode.style.marginLeft = String(num_pixel)+"px"; } } } } } /* function analyse_line(input_line,parse_object) { var log_type = -1; var j = 0; while (log_type < 0 && j < parse_object.length) { if (parse_object[j].pattern.test(input_line)) { log_type = j; } j++; } return log_type; } function c2c_lineident (input_line) { //Tries to identify from what kind of client the logfile was created. Returns an integer: // 0 = did not identify // 10 = xChat with timestamps (my client) // 11 = xChat without timestamps // 20 = PidGin // 30 = Trillian // 40 = mibbit // 50 = ChatZilla if (/^(\w{1,3}\s\d{1,2}\s)?\[?\d\d\:\d\d(\:\d\d)?\]?\s{1,2}((\<?[\w\^\-\.\|]+\>?)|\*)\s{1,2}.*$/.exec(input_line)) { return 10; //xChat mit Timestamps } else if (/^\s?((\<?[\w\^\-\.\|]+\>?)|\*)\s{1,2}.*$/.exec(input_line)) { return 11; //xChat ohne Timestamps } else if (/^\(\d\d\:\d\d\:\d\d\)\s\*{0,3}[\w\^\-\.\|]+\:?\s.*$/.exec(input_line)) { return 20; //PidGin } else if (/^\[\d\d\:\d\d\]\s(((\*\s)?\<(\@|\+)?[\w\^\-\.\|]+\>?\s.*)|(\*\*\*\s[\w\^\-\.\|]+\!.*))$/.exec(input_line)) { return 30; //Trillian } else if (/^\d\d\:\d\d\s\s?(\*\*\*\s)?[\w\^\-\.\|]+\s.*$/.exec(input_line)) { return 40; //mibbit } else if (/^\[\d{4}\-\d\d\-\d\d\s\d\d\:\d\d:\d\d\]\s(\<|\*\s|\=\-\=\s|\-\-\>\|\s|\|\<\-\-\s)[\w\^\-\.\|]*\>?\s.*$/.exec(input_line)) { return 50; //ChatZilla } else { return 0; //nicht erkannt. } } function find_2_highest(input_array) { //finds out what indexes in an array are the highest. Returns an array with two elements telling what indexes are the highest. var first = 0; var second = 0; for (var i = 0; i < input_array.length; i++) { if (!isNaN(input_array[i])) { if (input_array[i] > input_array[first]) { second = first; first = i; } if (input_array[i] > input_array[second] && i != first) { second = i; } } } return (new Array(first,second)); } */ function chatlog2chatlog (input_text) { //Main-Function: //Takes every line, parses it and returns finaly a formated string. var my_parser = getGlobalParser(); if (document.getElementById("df_nicklinkscheck").checked) { var nick_user_array = new Object(); } var c2c_linearray = input_text.split("\n"); var c2c_outputtext = "\n"; var c2c_outputformat = document.getElementById("df_outputformatselect").options[document.getElementById("df_outputformatselect").selectedIndex].value; var c2c_inputtype1 = document.getElementById("df_logformatselect").options[document.getElementById("df_logformatselect").selectedIndex].value; var datestring = document.getElementById("df_chatdate").value; if (c2c_outputformat == "DEBUG") { c2c_outputtext += "Settings:\nClient: "+c2c_inputtype1+"\nAusgabe: "+c2c_outputformat+"\ndateString: "+datestring+"\nUsernames: "+document.getElementById("df_nicklinkscheck").checked+"\nnowiki: "+document.getElementById("df_nowikicheck").checked+"\n\n"; } else if (c2c_outputformat == "HTML1") { c2c_outputtext += "<dl class=\"chatlog\">"; } else if (c2c_outputformat == "WIKI1") { c2c_outputtext += "{{Dialog\n"; } else if (c2c_outputformat == "WIKI2") { c2c_outputtext += "{|"; } if (c2c_inputtype1 >=0) { var c2c_inputtype2 = c2c_inputtype1; } var c2c_this_parsed = new Object(); var c2c_this_parsed2 = new Object(); var theday = new Date(); if (datestring.match(/^\d{4}\-\d\d?\-\d\d?$/)) { var datearray = /^(\d{4})\-(\d\d?)\-(\d\d?)$/.exec(datestring); theday.setFullYear(datearray[1]); theday.setMonth(datearray[2]); theday.setDate(datearray[3]); } var c2c_nick2user = new Object(); for (var i = 0; i < c2c_linearray.length; i++) { if (c2c_inputtype1 <0) { var c2c_inputtype2 = analyse_line(c2c_linearray[i]); } //defaults: c2c_this_parsed.year = theday.getFullYear();//Year c2c_this_parsed.month = theday.getMonth(); //Month c2c_this_parsed.day = theday.getDate(); //Day c2c_this_parsed.hour = "."; //Hour c2c_this_parsed.minute = "."; //Minute c2c_this_parsed.second = "00"; //Second c2c_this_parsed.nick = "."; //Nickname c2c_this_parsed.acttype= "say"; //Action-Type like say, me, join, part, nickchange, quit... c2c_this_parsed.content= "."; //Content-Line (whats said/happened) var c2c_this_parsed2 = my_parser[c2c_inputtype2].pattern.exec(c2c_linearray[i]); if (c2c_this_parsed2) { if (c2c_outputformat == "DEBUG") { c2c_outputtext += "\n\n\nAnalysiere:\n"+c2c_linearray[i]+"\nc2c_this_parsed2:\n"+c2c_this_parsed2.join("\n")+"\n"; } if (my_parser[c2c_inputtype2].act_nick_pos) { if (my_parser[c2c_inputtype2].act_nick_pos >0) { if (my_parser[c2c_inputtype2].act_nick_pat.test(c2c_this_parsed2[my_parser[c2c_inputtype2].act_nick_pos])) { c2c_this_parsed.acttype = "nick"; } else { if (c2c_outputformat == "DEBUG") { c2c_outputtext += "-1:"+c2c_this_parsed2[my_parser[c2c_inputtype2].act_nick_pos]+"\n"; }} } else { if (c2c_outputformat == "DEBUG") {c2c_outputtext += "-2"; }} } else { if (c2c_outputformat == "DEBUG") {c2c_outputtext += "-3"; }} if (c2c_this_parsed.acttype == "say") { if (my_parser[c2c_inputtype2].act_quit_pos) { if (my_parser[c2c_inputtype2].act_quit_pos >0) { if (my_parser[c2c_inputtype2].act_quit_pat.test(c2c_this_parsed2[my_parser[c2c_inputtype2].act_quit_pos])) { c2c_this_parsed.acttype = "quit"; } else { if (c2c_outputformat == "DEBUG") {c2c_outputtext += "-4:"+c2c_this_parsed2[my_parser[c2c_inputtype2].act_quit_pos]+" ("+my_parser[c2c_inputtype2].act_quit_pos+")"+"\n"; }} } else { if (c2c_outputformat == "DEBUG") {c2c_outputtext += "-5"; }} } else { if (c2c_outputformat == "DEBUG") {c2c_outputtext += "-6"; }} } else { if (c2c_outputformat == "DEBUG") {c2c_outputtext += "-7"; }} if (c2c_this_parsed.acttype == "say") { if (my_parser[c2c_inputtype2].act_mode_pos) { if (my_parser[c2c_inputtype2].act_mode_pos >0) { if (my_parser[c2c_inputtype2].act_mode_pat.test(c2c_this_parsed2[my_parser[c2c_inputtype2].act_mode_pos])) { c2c_this_parsed.acttype = "mode"; } else { if (c2c_outputformat == "DEBUG") {c2c_outputtext += "-8"; }} } else { if (c2c_outputformat == "DEBUG") {c2c_outputtext += "-9"; }} } else { if (c2c_outputformat == "DEBUG") {c2c_outputtext += "-10"; }} } else { if (c2c_outputformat == "DEBUG") {c2c_outputtext += "-11"; }} if (c2c_this_parsed.acttype == "say") { if (my_parser[c2c_inputtype2].act_part_pos) { if (my_parser[c2c_inputtype2].act_part_pos >0) { if (my_parser[c2c_inputtype2].act_part_pat.test(c2c_this_parsed2[my_parser[c2c_inputtype2].act_part_pos])) { c2c_this_parsed.acttype = "part"; } else { if (c2c_outputformat == "DEBUG") {c2c_outputtext += "-12"; }} } else { if (c2c_outputformat == "DEBUG") {c2c_outputtext += "-13"; }} } else { if (c2c_outputformat == "DEBUG") {c2c_outputtext += "-14"; }} } else {if (c2c_outputformat == "DEBUG") { c2c_outputtext += "-15"; }} if (c2c_this_parsed.acttype == "say") { if (my_parser[c2c_inputtype2].act_join_pos) { if (my_parser[c2c_inputtype2].act_join_pos >0) { if (my_parser[c2c_inputtype2].act_join_pat.test(c2c_this_parsed2[my_parser[c2c_inputtype2].act_join_pos])) { c2c_this_parsed.acttype = "join"; } else { if (c2c_outputformat == "DEBUG") {c2c_outputtext += "-16:"+c2c_this_parsed2[my_parser[c2c_inputtype2].act_join_pos]+"\n"; }} } else { if (c2c_outputformat == "DEBUG") {c2c_outputtext += "-17"; }} } else { if (c2c_outputformat == "DEBUG") {c2c_outputtext += "-18"; }} } else {if (c2c_outputformat == "DEBUG") { c2c_outputtext += "-19"; }} if (c2c_this_parsed.acttype == "say") { if (my_parser[c2c_inputtype2].act_act_pos) { if (my_parser[c2c_inputtype2].act_act_pos >0) { if (my_parser[c2c_inputtype2].act_act_pat.test(c2c_this_parsed2[my_parser[c2c_inputtype2].act_act_pos])) { c2c_this_parsed.acttype = "act"; } else { if (c2c_outputformat == "DEBUG") {c2c_outputtext += "-20"; }} } else { if (c2c_outputformat == "DEBUG") {c2c_outputtext += "-21"; }} } else { if (c2c_outputformat == "DEBUG") {c2c_outputtext += "-22"; }} } else { if (c2c_outputformat == "DEBUG") {c2c_outputtext += "-23"; }} if (my_parser[c2c_inputtype2].dt_year >0 && c2c_this_parsed2[my_parser[c2c_inputtype2].dt_year]) { c2c_this_parsed.year = c2c_this_parsed2[my_parser[c2c_inputtype2].dt_year]; } else { if (c2c_outputformat == "DEBUG") {c2c_outputtext += "-24"; }} if (my_parser[c2c_inputtype2].dt_month >0 && c2c_this_parsed2[my_parser[c2c_inputtype2].dt_month]) { c2c_this_parsed.month = c2c_this_parsed2[my_parser[c2c_inputtype2].dt_month]; } else { if (c2c_outputformat == "DEBUG") {c2c_outputtext += "-25"; }} if (my_parser[c2c_inputtype2].dt_day >0 && c2c_this_parsed2[my_parser[c2c_inputtype2].dt_day]) { c2c_this_parsed.day = c2c_this_parsed2[my_parser[c2c_inputtype2].dt_day]; } else { if (c2c_outputformat == "DEBUG") {c2c_outputtext += "-26"; }} if (my_parser[c2c_inputtype2].dt_hour >0 && c2c_this_parsed2[my_parser[c2c_inputtype2].dt_hour]) { c2c_this_parsed.hour = c2c_this_parsed2[my_parser[c2c_inputtype2].dt_hour]; } else { if (c2c_outputformat == "DEBUG") {c2c_outputtext += "-27"; }} if (my_parser[c2c_inputtype2].dt_minute >0 && c2c_this_parsed2[my_parser[c2c_inputtype2].dt_minute]) { c2c_this_parsed.minute = c2c_this_parsed2[my_parser[c2c_inputtype2].dt_minute]; } else { if (c2c_outputformat == "DEBUG") {c2c_outputtext += "-28"; }} if (my_parser[c2c_inputtype2].dt_second >0 && c2c_this_parsed2[my_parser[c2c_inputtype2].dt_second]) { c2c_this_parsed.second = c2c_this_parsed2[my_parser[c2c_inputtype2].dt_second]; } else { if (c2c_outputformat == "DEBUG") {c2c_outputtext += "-29"; }} if (c2c_this_parsed.acttype == "say") { c2c_this_parsed.nick = c2c_this_parsed2[my_parser[c2c_inputtype2].act_say_nic]; c2c_this_parsed.content = c2c_this_parsed2[my_parser[c2c_inputtype2].act_say_txt]; } else if (c2c_this_parsed.acttype == "act") { c2c_this_parsed.nick = c2c_this_parsed2[my_parser[c2c_inputtype2].act_act_nic]; c2c_this_parsed.content = c2c_this_parsed2[my_parser[c2c_inputtype2].act_act_txt]; } else if (c2c_this_parsed.acttype == "mode") { c2c_this_parsed.nick = c2c_this_parsed2[my_parser[c2c_inputtype2].act_mode_nic]; c2c_this_parsed.content = c2c_this_parsed2[my_parser[c2c_inputtype2].act_mode_txt]; } else if (c2c_this_parsed.acttype == "part") { c2c_this_parsed.nick = c2c_this_parsed2[my_parser[c2c_inputtype2].act_part_nic]; c2c_this_parsed.content = c2c_this_parsed2[my_parser[c2c_inputtype2].act_part_txt]; } else if (c2c_this_parsed.acttype == "join") { c2c_this_parsed.nick = c2c_this_parsed2[my_parser[c2c_inputtype2].act_join_nic]; c2c_this_parsed.content = c2c_this_parsed2[my_parser[c2c_inputtype2].act_join_txt]; } else if (c2c_this_parsed.acttype == "nick") { c2c_this_parsed.nick = c2c_this_parsed2[my_parser[c2c_inputtype2].act_nick_nic]; c2c_this_parsed.content = c2c_this_parsed2[my_parser[c2c_inputtype2].act_nick_txt]; } else if (c2c_this_parsed.acttype == "quit") { c2c_this_parsed.nick = c2c_this_parsed2[my_parser[c2c_inputtype2].act_quit_nic]; c2c_this_parsed.content = c2c_this_parsed2[my_parser[c2c_inputtype2].act_quit_txt]; } if (document.getElementById("df_nicklinkscheck").checked) { if (c2c_nick2user[c2c_this_parsed.nick] === undefined) { c2c_nick2user[c2c_this_parsed.nick] = prompt("Wie lautet der Benutzername von "+c2c_this_parsed.nick+"?\n(Lösche das Feld wenn er oder sie kein Benutzerkonto hat)", c2c_this_parsed.nick); } } if (c2c_outputformat == "DEBUG") { c2c_outputtext += "\nRead:\nYear: "+c2c_this_parsed.year+"\nMonth: "+c2c_this_parsed.month+"\nDay: "+c2c_this_parsed.day+"\nHour: "+c2c_this_parsed.hour+"\nMinute: "+c2c_this_parsed.minute+"\nSecond: "+c2c_this_parsed.second+"\nAct-Type: "+c2c_this_parsed.acttype+"\nNickname: "+c2c_this_parsed.nick+"\nUser: "+c2c_nick2user[c2c_this_parsed.nick]+"\nContent: "+c2c_this_parsed.content; } else if (c2c_outputformat == "HTML1") { c2c_outputtext += "<dt class=\"timenick"; if (c2c_this_parsed.acttype == "say") { c2c_outputtext += " sayline\""; } if (c2c_this_parsed.acttype == "act") { c2c_outputtext += " actline\" "; } if (c2c_this_parsed.acttype == "mode") { c2c_outputtext += " modeline\" style=\"color:#a5a5a5;\""; } if (c2c_this_parsed.acttype == "part") { c2c_outputtext += " partline\" style=\"color:#a00;\""; } if (c2c_this_parsed.acttype == "join") { c2c_outputtext += " joinline\" style=\"color:#0A0;\""; } if (c2c_this_parsed.acttype == "nick") { c2c_outputtext += " ncline\" style=\"text-weight:bold;\""; } if (c2c_this_parsed.acttype == "quit") { c2c_outputtext += " quitline\" style=\"color:#a00\""; } c2c_outputtext += ">"; c2c_outputtext += ">"; if (c2c_this_parsed.minute != ".") { c2c_outputtext += "<abbr style=\"font-size:xx-small;\" class=\"time\" title=\""+c2c_this_parsed.year; c2c_outputtext += "-"+c2c_this_parsed.month+"-"+c2c_this_parsed.day+"T"+c2c_this_parsed.hour+":"; c2c_outputtext += c2c_this_parsed.minute+":"+c2c_this_parsed.second+"\">"+c2c_this_parsed.hour+":"; c2c_outputtext += c2c_this_parsed.minute+"</abbr>"; } c2c_outputtext += "<span class=\"nickname\">"; if (c2c_nick2user[c2c_this_parsed.nick]) { c2c_outputtext += "[[Benutzer:"+c2c_nick2user[c2c_this_parsed.nick]+"|"+c2c_this_parsed.nick+"]]"; } else { c2c_outputtext += c2c_this_parsed.nick; } c2c_outputtext += "</span>"; c2c_outputtext += "</dt>"; c2c_outputtext += "<dd "; if (c2c_this_parsed.acttype == "say") { c2c_outputtext += " class=\"sayline\""; } if (c2c_this_parsed.acttype == "act") { c2c_outputtext += " class=\"actline\" style=\"font-style:italic;\""; } if (c2c_this_parsed.acttype == "mode") { c2c_outputtext += " class=\"modeline\" style=\"color:#a5a5a5;\""; } if (c2c_this_parsed.acttype == "part") { c2c_outputtext += " class=\"partline\" style=\"color:#a00;\""; } if (c2c_this_parsed.acttype == "join") { c2c_outputtext += " class=\"joinline\" style=\"color:#0A0;\""; } if (c2c_this_parsed.acttype == "nick") { c2c_outputtext += " class=\"ncline\" style=\"text-weight:bold;\""; } if (c2c_this_parsed.acttype == "quit") { c2c_outputtext += " class=\"quitline\" style=\"color:#a00\""; } c2c_outputtext += ">"; if(document.getElementById("df_nowikicheck").checked) { c2c_outputtext += "<nowiki>"+c2c_this_parsed.content+"</nowiki>"; } else { c2c_outputtext += c2c_this_parsed.content; } c2c_outputtext += "</dd>\n"; } else if (c2c_outputformat == "WIKI1") { c2c_outputtext += "|Person"+parseInt(i % 7 + 1)+"="; if (c2c_nick2user[c2c_this_parsed.nick]) { c2c_outputtext += "[[Benutzer:"+c2c_nick2user[c2c_this_parsed.nick]+"|"+c2c_this_parsed.nick+"]]"; } else { c2c_outputtext += c2c_this_parsed.nick; } c2c_outputtext += "\n|Aussage"+parseInt(i % 7 + 1)+"="; if(document.getElementById("df_nowikicheck").checked) { c2c_outputtext += "<nowiki>"+c2c_this_parsed.content+"</nowiki>"; } else { c2c_outputtext += c2c_this_parsed.content; } c2c_outputtext += "\n"; if (i % 7 == 6) { c2c_outputtext += "|Zuschreibung=\n|Quelle=\n}}\n{{Dialog\n"; } } else if (c2c_outputformat == "WIKI2") { c2c_outputtext += "\n|-"; c2c_outputtext += "\n|"; if (c2c_this_parsed.minute != ".") { c2c_outputtext += c2c_this_parsed.day+"."+c2c_this_parsed.month+"."+c2c_this_parsed.year c2c_outputtext += " "+c2c_this_parsed.hour+":"+c2c_this_parsed.minute+":"+c2c_this_parsed.second; } c2c_outputtext += "||"; if (c2c_nick2user[c2c_this_parsed.nick]) { c2c_outputtext += "[[Benutzer:"+c2c_nick2user[c2c_this_parsed.nick]+"|"+c2c_this_parsed.nick+"]]"; } else { c2c_outputtext += c2c_this_parsed.nick; } c2c_outputtext += "||"; if (c2c_this_parsed.acttype == "act") { c2c_outputtext += "''"; } if (c2c_this_parsed.acttype == "mode") { c2c_outputtext += "''"; } if (c2c_this_parsed.acttype == "part") { c2c_outputtext += "''"; } if (c2c_this_parsed.acttype == "join") { c2c_outputtext += "''"; } if (c2c_this_parsed.acttype == "nick") { c2c_outputtext += "'''"; } if (c2c_this_parsed.acttype == "quit") { c2c_outputtext += "''"; } if(document.getElementById("df_nowikicheck").checked) { c2c_outputtext += "<nowiki>"+c2c_this_parsed.content+"</nowiki>"; } else { c2c_outputtext += c2c_this_parsed.content; } if (c2c_this_parsed.acttype == "act") { c2c_outputtext += "''"; } if (c2c_this_parsed.acttype == "mode") { c2c_outputtext += "''"; } if (c2c_this_parsed.acttype == "part") { c2c_outputtext += "''"; } if (c2c_this_parsed.acttype == "join") { c2c_outputtext += "''"; } if (c2c_this_parsed.acttype == "nick") { c2c_outputtext += "'''"; } if (c2c_this_parsed.acttype == "quit") { c2c_outputtext += "''"; } } } else { if (c2c_outputformat == "DEBUG") { c2c_outputtext += "\n\nKonnte Zeile nicht einlesen:\n"+c2c_linearray[i]+"\n\n"; } else if (c2c_outputformat == "HTML1") { c2c_outputtext += "\n<!--\nKonnte Zeile nicht einlesen:\n"+c2c_linearray[i]+"\n-->\n"; } else if (c2c_outputformat == "WIKI1") { c2c_outputtext += "\n<!--\nKonnte Zeile nicht einlesen:\n"+c2c_linearray[i]+"\n-->\n"; } else if (c2c_outputformat == "WIKI2") { c2c_outputtext += "\n<!--\nKonnte Zeile nicht einlesen:\n"+c2c_linearray[i]+"\n-->\n"; } } } if (c2c_outputformat == "DEBUG") { c2c_outputtext += "\n\nEOF\n\n"; } else if (c2c_outputformat == "HTML1") { c2c_outputtext += "</dl>\n\n"; } else if (c2c_outputformat == "WIKI1") { c2c_outputtext += "|Zuschreibung=\n|Quelle=\n}}\n\n"; } else if (c2c_outputformat == "WIKI2") { c2c_outputtext += "\n}\n\n"; } return c2c_outputtext; } function create_SelectElement (select_id,resize) { //Creates a Select-Element. //First parameter is the elements id, second... //if an option contains more than resize characters //it will set a smaller font-size. 0 means not resize. //Third and following parameters are the option-values and the text. //example: create_SelectElement("my_id",15,0,"zero",1,"one",2,"two"); var new_select = document.createElement("select"); new_select.id = select_id; if (document.cookie) { var my_RegExp_string = select_id+"_selsave\\=(\\w*)\\;" var my_RegExp = new RegExp(my_RegExp_string,""); if (document.cookie.match(my_RegExp)) { var my_cookie = document.cookie.match(my_RegExp)[1]; } else { var my_cookie = "kljhfsaökjh"; } } for (var i = 1; i < create_SelectElement.arguments.length/2; i++) { var new_option = document.createElement("option"); new_option.value = create_SelectElement.arguments[i*2]; new_option.appendChild(document.createTextNode(create_SelectElement.arguments[i*2+1])); if (my_cookie == create_SelectElement.arguments[i*2]) { new_option.selected = "selected"; } if (resize && create_SelectElement.arguments[i*2+1].length>resize) { new_option.style.fontSize = parseInt(resize/create_SelectElement.arguments[i*2+1].length*100)+"%"; } new_select.appendChild(new_option); } new_select.addEventListener("change",function(){var dfin30days = new Date(); dfin30days.setTime(dfin30days.getTime()+33*24*60*60*1000); document.cookie = select_id+"_selsave="+this.options[this.selectedIndex].value+"; expire="+dfin30days.toGMTString()+";";},false); return new_select; } function createChatParser() { //Creates and displays an input-form. if (document.getElementById("df_chatpannel")) { document.getElementById("df_chatpannel").parentNode.removeChild(document.getElementById("df_chatpannel")); } else { var cp_pannel = document.createElement("div"); cp_pannel.id = "df_chatpannel"; cp_pannel.style.position = "fixed"; cp_pannel.style.top = "50px"; cp_pannel.style.right = "50px"; cp_pannel.style.zIndex = "100"; cp_pannel.style.background = "rgba(180,220,255,0.5)"; cp_pannel.style.padding = "4px"; cp_pannel.style.paddingRight = "81px"; var cp_textarea = document.createElement("textarea"); cp_textarea.style.display = "inline"; cp_textarea.cols = 60; cp_textarea.rows = 13; cp_textarea.id = "cp_textarea"; var cp_setupbox = document.createElement("div"); cp_setupbox.style.display = "block"; cp_setupbox.style.position = "absolute"; cp_setupbox.style.background = "rgba(255,220,180,0.8)"; cp_setupbox.style.padding = "4px"; cp_setupbox.style.top = "4px"; cp_setupbox.style.right = "4px"; cp_setupbox.style.width = "150px"; var my_parser = getGlobalParser(); var my_parser_nn = new Array("df_logformatselect",12); for (var j = 0; j < my_parser.length; j++) { my_parser_nn[my_parser_nn.length] = j; my_parser_nn[my_parser_nn.length] = my_parser[j].name; } my_parser_nn[my_parser_nn.length] = -1; my_parser_nn[my_parser_nn.length] = "Sonstiges..."; var cp_logformat = create_SelectElement.apply(null,my_parser_nn); cp_logformat.style.display = "block"; cp_logformat.style.margin = "4px"; cp_outformat = create_SelectElement("df_outputformatselect",12,"HTML1","HTML-dl","WIKI1","Vorlage:Dialog","WIKI2","Wiki-Tabelle","DEBUG","Debug-Modus: Ausgabe aller gefundenen Felder..."); cp_outformat.style.display = "block"; cp_outformat.style.margin = "4px"; var cp_date = document.createElement("input"); cp_date.setAttribute("type", "date"); cp_date.id = "df_chatdate"; cp_date.style.width = "140px"; cp_date.style.margin = "4px"; var today = new Date(); cp_date.value=today.getFullYear()+"-"+today.getMonth()+"-"+today.getDate(); if (cp_date.type == "text") { //type=date not suported, load jq-datepicker..? //'cause I have no idea about jQuery I will not //maybe write an own datepicker..? } var cp_nicklinks1 = document.createElement("label"); cp_nicklinks1.style.display = "block"; cp_nicklinks1.for = "df_nicklinkscheck"; cp_nicklinks1.style.fontSize = "xx-small"; var cp_nicklinks2 = document.createElement("input"); cp_nicklinks2.type="checkbox"; cp_nicklinks2.id="df_nicklinkscheck"; cp_nicklinks1.appendChild(cp_nicklinks2); cp_nicklinks1.appendChild(document.createTextNode("Nicknames mit Benutzerprofilen verknüpfen")); var cp_nowiki1 = document.createElement("label"); cp_nowiki1.style.display = "block"; cp_nowiki1.for = "df_nowikicheck"; cp_nowiki1.style.fontSize = "xx-small"; var cp_nowiki2 = document.createElement("input"); cp_nowiki2.type="checkbox"; cp_nowiki2.id="df_nowikicheck"; cp_nowiki2.checked="checked"; cp_nowiki1.appendChild(cp_nowiki2); cp_nowiki1.appendChild(document.createTextNode("Wiki-Syntax unterdrücken")); var cp_convert = document.createElement("button"); cp_convert.style.margin = "4px"; cp_convert.style.display = "block"; cp_convert.style.listStyleType = "none"; cp_convert.appendChild(document.createTextNode("konvertieren")); cp_convert.addEventListener("click",function() { document.getElementById("cp_textarea").value = chatlog2chatlog(document.getElementById("cp_textarea").value);},false); var cp_close = document.createElement("button"); cp_close.style.margin = "4px"; cp_close.style.display = "block"; cp_close.style.listStyleType = "none"; cp_close.appendChild(document.createTextNode("schließen")); cp_close.addEventListener("click",function() { document.getElementsByTagName("body")[0].removeChild(this.parentNode.parentNode);},false); cp_pannel.appendChild(cp_textarea); cp_pannel.appendChild(cp_setupbox); cp_setupbox.appendChild(cp_logformat); cp_setupbox.appendChild(cp_outformat); cp_setupbox.appendChild(cp_date); cp_setupbox.appendChild(cp_nicklinks1); cp_setupbox.appendChild(cp_nowiki1); cp_setupbox.appendChild(cp_convert); cp_setupbox.appendChild(cp_close); document.getElementsByTagName("body")[0].appendChild(cp_pannel); } } function AddChatLogFunctionality() { //This identifies the edit-page if (document.getElementById("toolbar") && document.getElementById("stdPreloads") && document.getElementById("mw-editbutton-extlink")) { var tooldiv = document.getElementById("toolbar"); // find the toolbar var ChatButton = document.createElement("span"); // create a new button ChatButton.id = "df-editbutton-chatlog"; // name it ChatButton.className = "mw-toolbar-editbutton"; // class it ;) ChatButton.style.margin = "0"; // style ChatButton.style.padding = "0"; // | ChatButton.style.bottom = "0"; // | ChatButton.style.height = "22px"; // | ChatButton.style.border = "none"; // | ChatButton.style.width = "23px"; // | ChatButton.style.display = "inline-block"; // | ChatButton.style.overflow = "hidden"; // | ChatButton.style.backgroundImage = "url(/w/skins/common/images/button_template.png)"; ChatButton.style.verticalAlign = "middle"; // V ChatButton.style.fontSize = "10px"; // it ChatButton.appendChild(document.createTextNode("Chat")); // Write a caption ChatButton.title = "ChatProtokoll"; ChatButton.style.cursor = "pointer"; ChatButton.addEventListener("click",function(){ createChatParser(); },false); // give it a function tooldiv.appendChild(ChatButton); // Display it movePreloadSelect(1); // And move the Select-Thingy away } else { //there is not enough DOM ^^ wait a half second and try again... window.setTimeout(AddChatLogFunctionality,500); } } function df_doOnLoad () { //all stuff that should happen on finishing page-load if (document.getElementById("toolbar")) { AddChatLogFunctionality(); } } df_debugmode = 0; //addOnloadHook(df_doOnLoad); $(document).ready(df_doOnLoad); //df_doOnLoad();