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.
OVERVIEW
USAGE
load module: module = require "ModuleName"
function call: module:FunctionName()
for nested module (like "StringOr")
function call: module.StringOr:FunctionName()
or
assign nested module: strOr = module.StringOr
function call: strOr:FunctionName()
or
load nested module only: strOr = (require "CommonTools").StringOr
function call: strOr:FunctionName()
REQUIRES module "conversion.lua" ( https://github.com/BugFix/Conversion/blob/master/conversion.lua )
( https://autoit.de/thread/86555-konvertieren-zwischen-zahlensystemen-in-lua/?postID=695947#post695947 )
Content
SYSTEM
FileExists Checks if a file exists
FolderCreate Creates a folder (if not exists)
FolderExists Checks if a folder exists
GetCurrentDir Returns the script directory
GetFilesRecursive Returns a table with all recursive files (full path name) from given root. You can use filter for file type and attributes.
GetFolderRecursive Returns a table with all recursive sub folders (full path name) from given root. You can use filter for attributes.
OSNow Returns a table with date & time fields from now
OSDate Returns a string with the current date as "YYYY-MM-DD"
OSTime Returns a string with the current time as "hh:mm:ss"
require_protected Load library protected
EDITOR
EditorCodingCookieLine Checks the current buffer for coding cookie. Returns the line number from this or nil.
EditorDeleteLine Deletes the passed line number from editor. Returns line content if success.
EditorGetCommentChar Returns the character(s) for a line comment of the passed file type (or default: from current buffer), if defined.
EditorGetEOL Returns length, mode of EOL and the EOL character(s) in current SciTE buffer
EditorMoveLine Moves a line in editor up/down by param count (negative=up/positive=down).
EditorTabColPosInLine Returns column and position of previous/next TAB in passed line
EditorTabReplace Replaces all TAB in the file currently open in SciTE
MISC
ASCIIcompare Comparison of two ASCII strings, optionally case-insensitive (default: case-sensitive), descending (default: ascending). Return of both strings in sorted order.
EscapeMagic Escapes all magic characters in a string: ( ) . % + - * ? [ ^ $
InSensePattern Creates an insensitive pattern string ("Hallo" --> "[Hh][Aa][Ll][Ll][Oo]"). Ascii chars only!
LineTabReplace Replaces TAB in a line with the number of spaces corresponding to the column.
Power2And Checks if a passed uint value contains a given power of 2.
PropExt Asks for propertie specified by filter.extension or extension
Split Splits a string by the passed delimiter into a table (each character as one element only with ASCII characters)
StringOr A nested module with string functions: .find / .gmatch / .gsub / .match
Lua patterns do not support alternations. Therefore, these functions can be called here
with a list of patterns applied to the string. The pattern works: "patt1 or patt2 or patt_n"
StringOr.find Returns start/end of the first occurence of the first matching pattern.
StringOr.gmatch Returns a table with all occurences of each matching pattern.
StringOr.gsub Returns a string in which all (or _n) occurrences of each matching pattern are replaced.
StringOr.match Returns the first occurence of the first matching pattern.
StripSpaceChar Strip space characters (%s) from a string.
StringUTF8Len Get the number of characters (not the number of bytes, like string.len) of a string with UTF8 characters
StringUTF8Split Splits a string by the passed delimiter into a table (each character as one element with UTF8 characters too)
Ternary The ternary operator as function (condition, if_true, if_false)
Trim Trim a count of chars from a strings left or right side
UrlEncode Returns the given string encoded for use in URL
AU3 - SPECIFIC
GetIncludePathes Returns a table with locations of AU3 - include files in the system
Alles anzeigen
Version 0.7 - 0.8
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
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.
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
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:
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