SciTE - CommonTools

  • Die erste Version der Toolsammlung hatte ich hier gepostet.

    Da ich das aber sicher Schritt für Schritt erweitern werde, erstelle ich nun einen eigenen Thread dafür.


    Version 0.7 - 0.8

    Code
    v 0.8   
    NEU:      gekapseltes Modul: StringOr ( .find() / .gmatch() / .gsub() / .match() )
              Lua-Stringpattern ermöglichen keine ODER-Pattern. In diesen Funktionen können dafür mehrere Pattern als Table übergeben werden.
    NEU:      LineTabReplace() - Ersetzen von TAB  mit Leerzeichen in einer Textzeile
    NEU:      EditorTabReplace() - Ersetzen aller TAB in der aktuell in SciTE geöffneten Datei
    GEÄNDERT: Optionale Parameter ASCIIcompare(), (in)sensitiver Vergleich / Reihenfolge auf-/absteigend. Standard: sensitiv aufsteigend (nil, nil)
    
    v0.7   
    NEU:      ASCIIcompare() - Vergleich zweier ASCII-Strings

    Version 0.6

    Code
    NEU:      PropExt() - Liest den Wert einer dateispezifischen Eigenschaft von "PROP.$(file.pattern.EXT)" od. "PROP.EXT" 
    GEÄNDERT: Erkennung der Tabweite über die dateispezifische Eigenschaft "tab.size.filter_ext/ext" anstatt der allgemeingültigen "tabsize"


    Version 0.5

    Da ich nicht extra eine Bit-Bibliothek einbinden wollte, habe ich eine BitAnd-ähnliche Funktion zum Prüfen von 2-er Potenzen in Summenwerten erstellt.

    Code
    NEU:      Power2And()              Prüft, ob ein Summenwert eine übergebene 2-er Potenz enthält (wie BitAnd, aber liefert true/false)
    GEÄNDERT: StripSpaceChar()         Verwendet jetzt Power2And() zum Prüfen der Flags


    Version 0.4

    Code
    NEU:      EditorTabColPosInLine()  Ermittelt Spalte und Position des vorigen/nächsten Tab in übergebener/aktueller Zeile
    NEU:      StripSpaceChar()         Entfernt Leerzeichen von Strings, Flags adäquat zu AutoIt: StringStripWS
    GEÄNDERT: Split()                  Zusätzlicher Parameter um mögliche führende und folgende Leerzeichen von den gesplitteten Werten zu entfernen


    Version 0.3

    Statt der Begrenzung auf den ANSI Zeichensatz, wird für die neuen Funktionen jedes UTF8 Zeichen erkannt.

    Dazu erforderlich: conversion.lua


    Version 0.2

    Ich habe mich schon oft geärgert, dass man Probleme mit den Stringfunktionen bekommt, wenn ANSI Zeichen im String sind. Die Funktion string.len ermittelt die Länge anhand der Bytes. Bei ASCII Zeichen passt das, aber nicht bei ANSI. Dort sind die Zeichen 2 oder 3 Byte lang. Meine Funktion StringAnsiLen ermittelt neben der korrekten Anzahl der Zeichen auch deren Byte-Position (Start,Ende) im String. Das ist besonders dann von Interesse, wenn ich mich im Editor zeichenweise bewegen möchte.

    Auch beim Splitten eines Strings mit ANSI Zeichen in ein Table mit einzelnen Zeichen hat man die Probleme mit der Bytelänge. Das habe ich hier mit StringAnsiSplit gelöst.

    Als weitere Funktion habe ich GetIncludePathes erstellt, da ich in verschiedenen Anwendungen die Speicherorte der Includes benötige.



    geändert:

    Code
    StringUTF8Len     Ermittelt die Anzahl der Zeichen (nicht - wie String.Len - die Anzahl der Bytes) bei Strings, die  UTF8 Zeichen enthalten
    StringUTF8Split   Splittet einen String und ohne Trennzeichen wird auch jedes UTF8 Zeichen korrekt als einzelner Eintrag erfasst


    Code ist jetzt zu viel für den Thread - nur als DL (oder auf Git - s. Signatur)


    DL before: 13

  • ANSI? ==>> UTF-8!

    Jein.

    Ich kann damit (sicher) ausschließlich die Zeichen des ANSI Zeichensatzes identifizieren. Natürlich nutze ich dazu deren UTF-8 Darstellung. Aber eine Erkennung aller Zeichen des UTF-8 Bereiches ist damit nicht gesichert. Ich habe nicht analysiert, wie das Verhalten von erstem Byte und Zeichenlänge bei allen deren Zeichen ist. Für den ANSI Bereich hat dazu eine kleine Schleife gereicht. ;)


    EDIT:

    Ich habe mal die Kodierungsregeln für UTF8 näher angeschaut. Das lässt sich doch einfacher als vermutet umsetzen. Werde dann die Funktionen noch anpassen für den gesamten UTF8 Bereich.

  • Neue Version im #Startpost

    Code
    v 0.8   
    NEU:      gekapseltes Modul: StringOr ( .find() / .gmatch() / .gsub() / .match() )
              Lua-Stringpattern ermöglichen keine ODER-Pattern. In diesen Funktionen können dafür mehrere Pattern als Table übergeben werden.
    NEU:      LineTabReplace() - Ersetzen von TAB  mit Leerzeichen in einer Textzeile
    NEU:      EditorTabReplace() - Ersetzen aller TAB in der aktuell in SciTE geöffneten Datei
    GEÄNDERT: Optionale Parameter ASCIIcompare(), (in)sensitiver Vergleich / Reihenfolge auf-/absteigend. Standard: sensitiv aufsteigend (nil, nil)
    
    v0.7   
    NEU:      ASCIIcompare() - Vergleich zweier ASCII-Strings