[Tustep-Liste] Endtags richtig zuordnen und aufloesen

Hans Derkits hans.derkits at utanet.at
Fr Jun 10 14:39:39 CEST 2005


	Lieber Herr Kopp,
	Liebe Listenteilnehmer,

gerne hier die Kommentare zur der vorgeschlagenen Lösung.
Ihr Interesse, Herr Kopp, freut mich besonders.

Am Freitag, 10. Juni 2005 10:44 schrieb Matthias Kopp:
> vielen Dank für die Mitteilung der RUBY-Lösung;
> dürfte ich Sie bitten, das Programm noch etwas zu kommentieren?

Kommentare stehen über der Zeile. 

---------------------
## Definition einer Liste (von Zeichenketten) - die zugleich als
## Stapel ansprechbar ist

kennungen   = [ ]

## Für jede Eingabezeile ... hier von der Standareingabe gelesen

while zeile = gets 

## startpos: Beginnpositon für die Suche (0 bei neuer Zeile)

  startpos  = 0

## Solange zeile[ab startpos] das Muster
## |<<></a><<><%>>| - hier in Tustep-Notation - 
## enthält ("..-1" bedeutet: bis zum Ende der Zeile)

  while ( muster = %r|</?a(\w*)>|.match( zeile[startpos..-1] ))

## '(\w*)': beliebig viele Wortzeichen, die auch fehlen dürfen, 
## die () erlaubt, auf das Ergebnis mit dem index 1 zuzugreifen
## (erster Klammerausdruck des Suchmusters).

## Wenn '(\w*)' (= muster[1]; = '<=02' in Tustep-Notation) 
## länger als 0 Zeichen (z.B. 'ABC')

    if muster[1].length > 0

## Inhalt von '(\w*)' (Tustep: '<=02') auf den Stapel legen

      kennungen.push muster[1]

## sonst (<=02 hat die Länge 0; das gef. TAG ist also '</a>')

    else

## das erste Vorkommen von '</a>' in zeile ersetzen durch 
## '</a' + oberstes Stapelelement + '>' 

      zeile.sub! %r|</a>|, "</a#{ kennungen.pop }>"

## END IF

    end

## Beginnposition für die nächste Suche:
## Endposition des zuvor gefundenen (gesamten) Musters,
## deshalb '0'. 
## (Sie wird aufaddiert, weil die vorige Suche 
## wahrscheinlich nach 0 begann).

     startpos += muster.end(0)

## END WHILE

  end

## fertige Zeile ausgeben

  print zeile

## DATEIENDE 

end
---------------------

So üppig kommentiert, könnte das womöglich kompliziert erscheinen. Um 
zu sehen, dass die Sache sogar sehr intuitiv ist (ohne Handbuch und 
'Sprungziele'), braucht man nur selbst ein wenig probieren. Ist man 
erst die Schreibkonventionen gewohnt - dazu genügt ein halber Tag -, 
kann man das ohne jeden Kommentar einfach lesen, einfache Programme 
auch schreiben.

Mit herzlichen Grüßen an Sie
und Sie alle

Hans Derkits

-- 
Hans Derkits
hans.derkits at utanet.at



Mehr Informationen über die Mailingliste Tustep-Liste