Hi Benedikt, ich möchte auf keinem Fall irgend etwas schlecht machen.
Sicherlich rühren meine Vermutungen von einer ... guten Beschreibung.
Ich nehme es auch sofort zurück.
Zurück zum Thema, ich überarbeite gerade mein Script
Spezial-Lesezeichen.
Hier der Aktuelle Code:
- Code: Alles auswählen
/////////////////////////////////////////
// //
// //::<Lesezeichen> //
// //
// (cc) gabischatz 2011/12 //
// http://bad-Langensalza.npage.de //
// //
/////////////////////////////////////////
var app = application;
//Handle auf die Applications-Klasse holen
var doc = app.document;
//Handle auf die Funktionen fürs aktuelle Dokument holen
var allText = doc.text;
//Inhalt des Dokumentes zwischenspeichern
var selText = doc.seltext;
//Inhalt der Markierung zwischenspeichern
var cursor = doc.selstart;
//Cursor zwischenspeichern
/*------------------------------------------------------------------*/
if(doc) { //::<Language>
if(app.editorLanguage == "de") {
//Sprache abfragen, deutsche Meldungen
var lng_msg_Abb = "Abbruch durch Benutzer";
var lng_msg_Abb_Zahl = "Abbruch durch Benutzer\noder es wurde keine korrekte Nummer eingegeben!";
var lng_dlg_caption = "Es wurde kein Lesezeichen gefunden.";
var lng_msg_no_L = "Möchten Sie ein Lesezeichen anlegen?"
var lng_msg_Clear = "Möchten Sie das Lesezeichen Löschen? \n\nJa für: "
var lng_msg_Del = "\nNein für: "
} else {
//Englische Meldungen
var lng_msg_Abb = "Cancelled by the user";
var lng_msg_Abb_Zahl = "Cancelled by the user\nor no correct number entered!";
var lng_dlg_caption = "No bookmark found.";
var lng_msg_no_L = "Do you want to create a bookmark?"
var lng_msg_Clear = "Do you want to delete the bookmark? \n\nYes for: "
var lng_msg_Del = "\nNo for: "
}
/*------------------------------------------------------------------*/
if (doc.sellength != 0) { // Text wurde markiert
// Funktion zeile()[0] mit Parameter(0), gibt die aktuelle Zeile am Cursor wieder.
if (pruefe(zeile()[0])!= -1) { // Funktion pruefe() prüft die Zeile am Corsor, lieferte 1 zurück, gefunden.
loeschen(zeile()[0]); // Funktion loeschen() löscht aus der Zeile das Lesezeichen
} else { // Funktion pruefe() lieferte -1 zurück, nicht gefunden
createL();
}
} else { // Text wurde nicht markiert
if (pruefe(zeile()[0])!= -1) { // Funktion pruefe() prüft die Zeile am Corsor, lieferte 1 zurück, gefunden
loeschen(zeile()[0]); // Funktion loeschen() löscht aus der Zeile das Lesezeichen
} else { // Lieferte -1 zurück, nicht gefunden
geheZu(); // Funktion geheZu(), listet alle Lesezeichen auf.
}
doc.selstart = cursor; // Cursor an die Ausgangsposition stellen
}
}
/*----------------------------------------------------------------------------*/
function geheZu() { //::<geheZu()>
var Cursor = doc.selstart; // Cursor zwischenspeichern
var SelText = doc.seltext; // Inhalt der Markierung zwischenspeichern
var SelLength = doc.sellength; // Länge der Markierung auslesen
var OptRegEx = search.optRegEx // Einstellung zwischen speichern
if(search.optRegEx != true){search.optRegEx = true;}
// suchen mit Regulären Ausdrücken einschalten falls noch nicht schon eingestellt.
var go = search.search("//::<\\w[^<>]*>",0,"") // Suchen Dialog öffnen
if(OptRegEx != true){search.optRegEx = false;}
// suchen mit Regulären Ausdrücken wieder ausschalten falls vorher einschalten.
if(go!=true){
var btn = app.inputDlg(lng_dlg_caption,lng_msg_no_L, "");
//Anzeige Meldungsfenster (Fehler kein Lesezeichen gefunden)
/*--------------------------------------------------------------------*/
if (btn != "") {
//Abfrage Button, weiter machen
doc.seltext = btn;
//search.optFromCursor = true;
//search.search(btn,0,"")
doc.selstart = Cursor; // Cursor positionieren
//sleep(1000);
doc.sellength = btn.length; // Länge der Markierung festlegen
createL();
//search.optFromCursor = false;
}
}
if(SelText!=""){ // Markierten Text wieder markieren
doc.selstart = Cursor; // Cursor positionieren
doc.sellength = SelLength; // Länge der Markierung festlegen
}else{
doc.selstart = Cursor; // Cursor positionieren
}
} //app.showMessage(a);
/*------------------------------------------------------------------*/
function loeschen(iIn) {
var Cursor = doc.selstart; // Cursor zwischenspeichern app.document.selstart
var anfangZeile = zeile()[1]; // Zeilenanfang zwischenspeichern
var endeZeile = zeile()[2]; // Zeilenanfang zwischenspeichern
var reg = new RegExp(/(?:<\?php.*|<\?.*|<!.*|\/\*.*|\s|^|^\s*)(\/\/::<(\/?\w[^<>]*)>)(?:\/?\s?.*?\?>|\s?.*?->|.*$)/im);
var m = reg.exec(iIn); // Regulären Ausdruck anwenden, gibt einen Array mit dem Treffer zurück
var len1 = iIn.indexOf(m[0]); // Ermittelt das erste Vorkommen eines Zeichens
var leng1 = ""; // Ersetzung (Variable) definieren
var i = 0; // Lauf-Variable definieren
while (i!=m[0].length){ // solange wiederholen, bis erfüllt ist.
leng1 += " "; // +=, Fügt an einen String an die Variable an.(Leerzeichen)
i++; // i++, erhöht die Lauf-Variable nach Aufruf, Ausgabe = 0,1
}
var iOut1 = iIn.replace(m[0],leng1); // Regulären Ausdruck anwenden und ersetzen
// ersetzt '//::<Text1> Tex2' durch 'Leerzeichen'
/* reg.compile(/(?:<\?php.*|<\?.*|<!.*|\/\*.*|\s|^|^\s*)(\/\/::<(\/?\w[^<>]*)>)(?:\/?\s?.*?\?>|\s?.*?->|.*$)/i);
// 'variable.compile()' ersetzt 'new RegExp()' für eine schnellere Ausführung bei ähnlichen RegEx. */
var len2 = iIn.indexOf(m[1]); // Ermittelt das erste Vorkommen eines Zeichens
var leng2 = ""; // Ersetzung (Variable) definieren
var j = 0; // Lauf-Variable definieren
while (j!=m[1].length){ // solange wiederholen, bis erfüllt ist.
leng2 += " "; // +=, Fügt an einen String an die Variable an.(Leerzeichen)
j++; // ++j, erhöht die Lauf-Variable direkt vor dem Aufruf, Ausgabe = 1,1
}
var iOut2 = iIn.replace(m[1],leng2); // Regulären Ausdruck anwenden und ersetzen leng2
// ersetzt '//::<Text>' durch 'Leerzeichen'
if(iOut1 != iOut2){ // Prüfen ob die Ausgabe nicht gleich ist
var iOut3 = lng_msg_Clear + m[0] + lng_msg_Del + m[1];
// Abffage Text zusammenstellen
var Zahl = app.messageDlg(3, iOut3);// Abfrage=3 [Ja=6, Nein=7, Abbrechen=2]
}else{ // Ausgabe ist gleich
var Zahl = 6; // Kein Dialog, Ja simulieren
}
if(Zahl!=2){if(Zahl==6){iOut=iOut1}else{iOut=iOut2}}else{iOut=-1;}
// Abfrage auswerten, Abbrechen=2, Ja=6, Nein=7
if (iOut != -1) { // bearbeiten
doc.selstart = anfangZeile; // Cursor am Anfang der Zeile positionieren
doc.sellength = endeZeile-anfangZeile;// Text Markieren mit der Anzahl der zu makierenden Zeichen
doc.seltext = iOut; // Text überschreiben / zurückschreiben
} else {
return -1; // Liefert -1 zurück, nicht nicht bearbeitet
}
doc.selstart = Cursor; // Cursor an die Ausgangsposition stellen
}
/*------------------------------------------------------------------*/
function pruefe(x) { //::<pruefe(x)> // x = Text der getestet werden soll
if (/\/\/::<(\s*?.*\s*?)>/.test(x)){ // Regulären Ausdruck probehalber anwenden
return 1; // Successful match
} else { // Match attempt failed
return -1; // Liefert -1 zurück, nicht gefunden
}
}
/*------------------------------------------------------------------*/
function createL() { //::<createL()>
var SelText = doc.seltext
var Cursor = doc.selstart; // Cursor zwischenspeichern
var len = SelText.length; // Länge des markierten Text`s ermitteln
if (/\d:\w.*/i.test(SelText)) { // Successful match Sondermarkierung erwünscht
if (/1:\w.*/i.test(SelText)) { // Successful match
var match1 = SelText.match(/1:(\w.*)/);
doc.seltext = SelText.replace(selText,"<?//::<"+match1[1]+">?>"); // ersetzen
}else if (/2:\w.*/i.test(SelText)) { // Successful match
var match2 = SelText.match(/2:(\w.*)/);
doc.seltext = SelText.replace(selText,"/*//::<"+match2[1]+">*/"); // ersetzen
}else{
var match3 = SelText.match(/3:(\w.*)/);
doc.seltext = SelText.replace(selText,"<!-- //::<"+match3[1]+"> -->");// ersetzen
}
}else{ // Match attempt failed, keine Sondermarkierung erwünscht
doc.seltext = SelText.replace(SelText,"//::<"+selText+">");
}
doc.selstart = Cursor; // Cursor neu positionieren
}
/*------------------------------------------------------------------*/
function sleep(milliseconds) { //::<sleep()>
// Delay for a given number of milliseconds
// note: Consider using setTimeout() instead.
// example 1: sleep(1000); = 1s
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds){
break;
}//Enf If
}//End for -Schleife
//while (new Date() < start + milliseconds) {}
//statt ser for -Schleife
return 0;
} //End function sleep()
/*------------------------------------------------------------------*/
function zeile(){ //::<zeile()>
var Cursor = doc.selstart; // Cursor zwischenspeichern app.document.selstart
var SelText = doc.seltext; // Inhalt der Markierung zwischenspeichern
var SelLength = doc.sellength; // Länge der Markierung auslesen
var aText = doc.text.slice(0, Cursor); // Extrahiert den Dokumentenanfang bis zum Cursor
var lines = new Array(); // Array definieren
lines = aText.split("\n"); // Zeilen bis Cursor, ins Array einfügen // Zerlegt Zeichenkette in mehrere Teilzeichenketten
var onLinie = lines.length; // Anzahl der Zeilen vom Anfang bis zum Cursor
lines = doc.text.split("\n"); // Zeilen bis Cursor, ins Array einfügen // Zerlegt Zeichenkette in mehrere Teilzeichenketten
var allLinie = lines.length; // Anzahl der Zeilen im Dokument
var offLinie = allLinie-onLinie; // Anzahl der Zeilen nach dem Cursor bis zum Ende
document.gotoLine(onLinie) // Bewegt den Cursor zu einer bestimmten Zeile (Cursor Zeile)
var anfangZeile = doc.selstart; // Holt die Cursorposition (Startposition Cursor Zeile)
document.gotoLine(onLinie+1) // Bewegt den Cursor zu einer bestimmten Zeile
var endeZeile = doc.selstart-1; // Holt die Cursorposition (Endposition Cursor Zeile)
doc.selstart = anfangZeile; // Cursor positionieren
doc.sellength = endeZeile-anfangZeile; // Länge der Markierung festlegen
var returnArray = new Array(); // Array definieren
returnArray[0] = doc.seltext; // Aktuelle Zeile in Array speichern
returnArray[1] = anfangZeile; // Cursorposition Zeilenanfang
returnArray[2] = endeZeile; // Cursorposition Zeilenende
returnArray[3] = allLinie; // Anzahl der Zeilen im Dokument in Array speichern
returnArray[4] = onLinie; // Anzahl der Zeilen bis zum Cursor in Array speichern
returnArray[5] = offLinie; // Anzahl der Zeilen nach dem Cursor in Array speichern
doc.selstart = Cursor; // Cursor an die Ausgangsposition stellen
if(SelText!=""){ // Markierten Text wieder markieren
doc.selstart = Cursor; // Cursor positionieren
doc.sellength = SelLength; // Länge der Markierung festlegen
}
return returnArray; // Array zurück geben
}
In Zeile 64 wird der Suchen Dialog aufgerufen und in Zeile 67 wird geprüft ob etwas gefunden wurde.
Wenn nichts gefunden wurde soll in Zeile 68 eine Input-Box den Wert des neuen Lesezeichen zwischengespeichert werden.
In Zeile 78 sollte dann der Text aus der Input-Box eingeschrieben und Markiert sein.
Die Funktion
createL(); aus Zeile 144, erstellt nun das neue Lesezeichen.
Zum erstellen der Lesezeichen gibt es fünf Möglichkeiten.
1. Text nicht/-markieren Script ausführen
2. keine
Zahl und kein
: Lesezeichen 1 ergibt
//::<Lesezeichen 1>3.
1:Lesezeichen 2 ergibt ein php Lesezeichen
<?//::<Lesezeichen 2>?>4.
2:Lesezeichen 3 ergibt ein css Lesezeichen
/*//::<Lesezeichen 3>*/5.
3:Lesezeichen 4 ergibt ein html Lesezeichen
<!-- //::<Lesezeichen 4> -->MfG gabischatz