Script eigene Funktionen über Scriptdatei einbinden

Hallo,

wäre es möglich, eigene Funktionen nach den bisherigen Scriptformatkonventionen zum Beispiel über eine externe Datei einzubinden?
Anwendungsfall:
Ich filtere das "The" und ein "&" aus Artist aus.
The Beatles wird Beatles
The Rolling Stones wird Stones
und
Jimmy Thackery & The Drivers
Jimmy Thackery & Tab Benoit
Jimmy Thackery & Duke Robillard
wird alles zu
Jimmy Thackery

Beispiel: Mein Scriptausschnitt für den Datei-Ordner

... root folder ...
... artist folder ...
$if($eql($strchr(%artist%,&),0),$if($eql($strstr(%artist%,The ),0),$trim(%artist%),
$trim($mid(%artist%,5)) ),$trim($left(%artist%,$sub($strchr(%artist%,&),1))))
... album Folder ...
... file name ...

Obwohl es schon recht unübersichtlich ist und es prima klappt, möchte ich nun noch eine Ordner-Ebene 1. Buchstabe des ermittelten Interpreten einbauen.

... root folder ...
... register folder ...
\$mid(
$if($eql($strchr(%artist%,&),0),$if($eql($strstr(%artist%,The ),0),$trim(%artist%),
$trim($mid(%artist%,5)) ),$trim($left(%artist%,$sub($strchr(%artist%,&),1))))
,1)
... artist folder ...
\$if($eql($strchr(%artist%,&),0),$if($eql($strstr(%artist%,The ),0),$trim(%artist%),
$trim($mid(%artist%,5)) ),$trim($left(%artist%,$sub($strchr(%artist%,&),1))))
... album Folder ...
... file name ...

Wenn man nun extern eine Funktion definieren könnte:

$define function MyFolderArtist(artist)
result :=  
$if($eql($strchr(%artist%,&),0),$if($eql($strstr(%artist%,The ),0),$trim(%artist%), $trim($mid(%artist%,5)) ),$trim($left(%artist%,$sub($strchr(%artist%,&),1))))
$define end

sähe es so schon übersichtlicher aus

... root folder ...
... register folder ...
\$mid($MyFolderArtist(%artist%),1)
... artist folder ...
\$MyFolderArtist(%artist%)
... album Folder ...
... file name ...

Eine Alternative, um im Script nicht die Übersicht zu verlieren, wäre, ein mehrzeiliges Memofeld dafür zu nehmen: Beispielsweise wie in dem im Kürzel Tool Shortcut (www.typer.de).
Das Memo könnte dann so aussehen:

// -----------------------------------------------
// Mein Script für MP3TAG vom 08.08.2009
// -----------------------------------------------
// root folder
// -----------------------------------------------
// register folder
// -----------------------------------------------
\$mid(
$if($eql($strchr(%artist%,&),0),$if($eql($strstr(%artist%,The ),0),$trim(%artist%),
$trim($mid(%artist%,5)) ),$trim($left(%artist%,$sub($strchr(%artist%,&),1))))
,1)
// -----------------------------------------------
// artist folder
// -----------------------------------------------
\$if($eql($strchr(%artist%,&),0),$if($eql($strstr(%artist%,The ),0),$trim(%artist%), 
$trim($mid(%artist%,5)) ),$trim($left(%artist%,$sub($strchr(%artist%,&),1))))
// -----------------------------------------------
// album folder
// -----------------------------------------------
// file name
// -----------------------------------------------

Der Parser müste lediglich vor der Auführung, die Kommentarzeilen // und alle crlf entfernen, bevor das Script an die bisher verwendete Routine im MP3Tag übergeben wird.

Viel Grüße Uwe

Hallo Uwe, dein Vorschlag ist ja schon fast ketzerisch zu nennen, weil er an den Grundfesten von Mp3tag rüttelt!

Ich glaube, diese Idee hatten schon viele Mp3tag Benutzer, wenn sie sich mit komplexen Skriptanweisungen in engen Dialogfeldern mit kleiner Schrift herumgeschlagen haben.

Aus meiner Sicht wäre eine Mp3tag Skriptsprache, die neben GUI-Einzeiler-Quickaktionen auch das formatfreie Schreiben von Skripten in einem Volltextseiteneditor unterstützt die ideale Lösung!

Dazu gehört ganz klar die programmatische Anwendung von benutzerdefinierten Funktionen und SubRoutinen (im Prinzip wie die Aktionen jetzt).

Die Skriptsprache soll zwar strukturiert sein, aber die Skripte an sich formatfrei, mit der Möglichkeit im entsprechenden Editor Syntaxcolorierung einwandfrei benutzen zu können.

So sollte es dann z. B. für Exportskripte eine explizite Möglichkeit geben, den Zeilenvorschub beliebig zu steuern, unabhängig vom Format resp. vom Inhalt der Skriptdatei.

Denn was ich immer wieder als total ärgerlich empfinde ist die Tatsache, dass ich nahezu jede Exportdatei mit anderen technischen Hilfsmitteln nachbearbeiten muss, um die Leerzeilen zu entfernen, die Mp3tag aus dem zugrundeliegenden Skript nicht ordnungsgemäß entfernt hat.
Deshalb "formatfreies" Skripting.

Ein solcher Umbau resp. Anpassung von Mp3tag erfordert sicherlich einiges handwerkliches Programmierergeschick und Verständnis vom Parserbau.
Das kann nicht unbedingt von einer Person allein zu schultern sein, deshalb an dieser Stelle noch einmal meine Empfehlung an Florian: die Last auf mehrere Schultern verteilen, ein Entwicklerteam bilden, "open source" praktizieren, ... "und Mp3tag wird abgehen wie eine Rakete".

DD.20090813.0915.CEST

Hallo DetlevD,
von OpenSource scheint Herr Heidenreich nicht begeistert zu sein und zu einem mehrzeiligen Eingabefeld möchte er wohl auch nichts sagen.
Schade.