Your browser doesn't support the features required by impress.mod.js, so you are presented with a simplified version of this presentation.

For the best experience please use the latest Chrome, Safari or Firefox browser.

2021-03-31 ZOOM-Universe
ITUG Jour Fixe 02

Datei- und Projektnamen in TUSTEP

Nichtkonforme Namen

Präsentation https://itug.github.io/ITUGJF02
Daten https://github.com/ITUG/ITUGJF02
Download Präsentation und Daten (zip)
Thomas Kollatz
Digital Academy@Akademie der Wissenschaften und Literatur | Mainz
@kol_t | CC-BY 4.0

Gültige Projektnamen

Projektnamen
darf […] aus 1 bis 8 Zeichen (Buchstaben a bis z, Ziffern, Minuszeichen und »_«) bestehen, muss mit einem Buchstaben beginnen und darf nicht mit Minuszeichen oder »_« enden.
Projekt == Verzeichnis == Ordner == directory
dirname
Handbuch 25

Gültige Dateinamen

Dateinamen
dürfen in TUSTEP aus 1 bis 12 Zeichen (Buchstaben a bis z, Ziffern, Minuszeichen und »_«) bestehen, müssen mit einem Buchstaben beginnen und dürfen nicht mit Minuszeichen oder »_« enden. Solche Dateinamen können noch mit einer Namenserweiterung (Extension) versehen werden. Diese wird durch einen Punkt getrennt an den Dateinamen angehängt. Sie darf in TUSTEP aus 1 bis 4 Zeichen (Buchstaben a bis z, Ziffern, Minuszeichen und »_«) bestehen und darf nicht mit Minuszeichen oder »_« enden.
Handbuch 26
dateiname.tf

#*desi

  • Mit dem Standardmakro #*desi können den Systemvariablen TUSTEP_DSK und TUSTEP_SCR mit ungültige Projektnamen zugewiesen werden.
  • TUSTEP_DSK ~/Projekte/#1
    TUSTEP_SCR ~/Projekte/#1/#1scr_
Datei mit definierten Dateinamen
#da,meine_aliase,seq-ap
Datei edieren
#ed,meine_aliase
alias=~/Downloads/impress/ITUGJF02/#2_material/1A-
Datei definieren
#de,dateinamen=meine_aliase
Information über definierte Dateinamen
#in,dateinamen=+
Alias-Datei anlegen, bearbeiten, …
#da,alias,seq-ap,tr=-
Definierte Dateinamen löschen
#de,dateinamen=-

Arbeitsumgebung

Gültige und ungültige Projekt- und Dateinamen

#2_material/
├── 01.letters
│   ├── Q.01.19140115.FMA.01.xml
│   └── Q.01.19140518.GAP.01.xml
├── 02.periodicals
├── 04\ ein\ wahrlich\ schau3rl!cherDateiname.01

├── scr
├── skripte
├── tei.def
└── tustep.ini

3 directories, 6 files

Die Beispieldateien und Skripte stehen auf github zum Download bereit

#liste,variable,po=TUSTEP_DSK'TUSTEP_SCR
****  Mögliche System-Variablen
      TUSTEP_DSK           ~/Downloads/impress/ITUGJF02/#2_material
      TUSTEP_SCR           ~/Downloads/impress/ITUGJF02/#2_material/scr
#liste,projekt
****  1 von 3 Projekten auf TRAEGER = TUSTEP_DSK
      SCR
#liste,dateinamen
****  3 von 4 Dateien mit  PROJEKT = -  und  TRAEGER = TUSTEP_DSK
      SKRIPTE       TEI.DEF       TUSTEP.INI

FILE_NAMES PROJECT_NAMES

$$ MODE TUSCRIPT,{}

files    = FILE_NAMES    (-,TUSTEP_DSK)
projects = PROJECT_NAMES (TUSTEP_DSK)

Segment basis01 aus -*skripte

TRACE

   3    00  files    = FILE_NAMES    (-,TUSTEP_DSK)
files        = SKRIPTE'TEI.DEF'TUSTEP.INI
   4    00  projects = PROJECT_NAMES (TUSTEP_DSK)
projects     = SCR

FILE_NAMES (projekt, traeger)

$$ MODE TUSCRIPT,{}
                            
FETCH root = TUSTEP_DSK
files      = FILE_NAMES    (-,$root)
projects   = PROJECT_NAMES ($root)

Segment basis02 aus -*skripte

Wenn für das Argument projekt »-« (ohne Anführungszeichen) angegeben wird, kann bei dieser Makrofunktion für das Argument traeger auch ein Verzeichnis (directory) angegeben werden. Diese Angabe muss in Anführungszeichen eingeschlossen werden und den vollständigen Pfad zu diesem Verzeichnis sowie den Namen des Verzeichnisses enthalten. Die Makrofunktion liefert in diesem Fall die Namen aller in diesem Verzeichnis enthaltenen Dateien, also auch derjenigen, die einen für TUSTEP unzulässigen Namen haben.

Handbuch 500-501

TRACE

   3    00  FETCH root = TUSTEP_DSK
root         = ~/Downloads/impress/ITUGJF02/#2_material
   4    00  files      = FILE_NAMES    (-,$root)
files        = *
           1 = 04 ein wahrlich schau3rl!cherDateiname.01.xml
           2 = skripte
           3 = tei.def
           4 = tustep.ini
   5    00  projects   = PROJECT_NAMES ($root)
projects     = *
           1 = 01.letters
           2 = 02.periodicals
           3 = scr

CREATE ("-", project, pfad)

$$ MODE TUSCRIPT,{}
                            
FETCH root = TUSTEP_DSK
newproject   ="2021-03-31"
                            
path2project =ADJUST_PATH (root,newproject)
DEFINE path2project = path2project
ERROR/STOP CREATE ("-",PROJECT,path2project)

Segment basis03 aus -*skripte

Ist für das Argument typ das Schlüsselwort PROJECT und mit dem Argument name kein Projektname, sondern »-« angegeben, so werden diejenigen Verzeichnisse eingerichtet, die für den mit dem Argument traeger angegebenen Pfad noch nicht existieren.

Handbuch 480

TRACE

   6    00  path2project =ADJUST_PATH(root,newproject)
path2project = ~/Downloads/impress/ITUGJF02/#2_material/2021-03-31
   7    00  DEFINE path2project = path2project
   8    00  ERROR/STOP CREATE ("-",PROJECT,path2project)

CREATE (pfad,typ,-)

$$ MODE TUSCRIPT,{}

FETCH root = TUSTEP_DSK
newproject =" 2021-03-31"
path2project = ADJUST_PATH (root,newproject)
newname= "001 log.txt"

path2file=ADJUST_PATH (path2project,newname)
DEFINE "path2file" = path2file
txtfile="path2file"
ERROR/STOP CREATE (txtfile,FDF-o,-)

Segment basis04 aus -*skripte

TRACE

   9    00  path2file=ADJUST_PATH (path2project,newname)
path2file    = ~/Downloads/impress/ITUGJF02/#2_material/2021-03-31/001 log.txt
  10    00  DEFINE "path2file" = path2file
  11    00  txtfile="path2file"
txtfile      = path2file
  12    00  ERROR/STOP CREATE (txtfile,FDF-o,-)

Zugriff auf Datei mit nicht TUSTEP-konformen Namen

$$ MODE TUSCRIPT,{}

FETCH root   = TUSTEP_DSK
newproject   = "2021-03-31"
path2project = ADJUST_PATH (root,newproject)
newname      = "001 log.txt"

path2file=ADJUST_PATH (path2project,newname)
DEFINE  "path2file" = path2file
txtfile="path2file"
ERROR/STOP CREATE (txtfile,FDF-o,-)

FILE/ERASE/UTF8  $txtfile = "äöü"
ERROR/STOP CLOSE (txtfile)

Segment basis05 aus -*skripte

Edieren einer Datei mit nicht TUSTEP-konformen Dateinamen

$$ MODE TUSCRIPT,{}


FETCH root = TUSTEP_DSK
newproject   ="2021-03-31"
path2project =ADJUST_PATH(root,newproject)

newname="001 log.tf"
path2tffile=ADJUST_PATH (path2project,newname)
DEFINE "tffile" = path2tffile
tffile="tffile"
ERROR/STOP CREATE (tffile,SEQ-o,-)

Segment basis06 aus -*skripte

LOOP CREATE

$$ MODE TUSCRIPT,{}
FETCH root = TUSTEP_DSK
projects=PROJECT_NAMES ($root)
LOOP project=projects
 IF (project.nc." letters ") CYCLE
 path2files=ADJUST_PATH (root,project)
 files=FILE_NAMES (-,$path2files)
 xmlfiles=FILTER (files," *.xml ",-)
 LOOP xmlfile=xmlfiles
  rtffile=EXCHANGE (xmlfile,"|.xml|.rtf|")
  path2rtffile=ADJUST_PATH (path2files,rtffile)
  DEFINE "rtffile" = path2rtffile
  rtffile="rtffile"
  ERROR/STOP CREATE (rtffile,FDF-o,-)
  ERROR/STOP CLOSE  (rtffile)
 ENDLOOP
ENDLOOP

Segment projectfiles aus -*skripte

$$ MODE TUSCRIPT,{}
ERROR/STOP OPEN ("tei.def",WRITE,-std-)
FETCH root = TUSTEP_DSK
projects=PROJECT_NAMES ($root)
LOOP project=projects
 IF (project.nc." letters ") CYCLE
 path2files=ADJUST_PATH (root,project)
 files=FILE_NAMES (-,$path2files)
 xmlfiles=FILTER (files," *.xml ",-)
 LOOP n,xmlfile=xmlfiles
  tffile=CONCAT ("xml2rtf",n,".tf")
  path2tffile  =ADJUST_PATH (path2files,tffile)
  path2xmlfile =ADJUST_PATH (path2files,xmlfile)
  DEFINE "tffile"  = path2tffile
  tffile="tffile"
  ERROR/STOP CREATE (tffile,SEQ-o,-)
  status=READ (path2xmlfile,xmldaten,UTF8)
  IF (status!="OK") STOP
  ACCESS q: READ/VARIABLE/STREAM    xmldaten s,a+t+e,typ,stack,stack_num
  ACCESS z: WRITE/FILE/ERASE/STREAM tffile   s.z/u, a+t+e
   INCLUDE "skripte" bereiteauf
  ENDACCESS q
  ENDACCESS z
  rtffile=EXCHANGE (xmlfile,"|.xml|.rtf|")
  path2rtffile =ADJUST_PATH (path2files,rtffile)
  DEFINE "rtffile" = path2rtffile
  rtffile="rtffile"
  ERROR/STOP CREATE (rtffile,FDF-o,-)
  EXECUTE #*export,{tffile},{rtffile},lo=+,de=tei.def
  ERROR/STOP CLOSE (tffile)
  ERROR/STOP CLOSE (rtffile)
 ENDLOOP
ENDLOOP

Segment ex_xml2rtf aus -*skripte

*EXPORT

export
export

RTF-Datei

rtf

*eof