( jc – 20.07.2010 11:25)

Textile: hr. als markup für horizontal ruler

Leider bietet Textile ab Werk kein markup um ein HR tag zu erzeugen.. dies läßt sich durch einen kleinen Patch aber nachrüsten. Der Patch orientiert sich dabei am bekannten block level Element markup von Textile, lediglich mit der Ausnahme, das dem tag (außer einem obligatorischen Leerzeichen) kein Inhalt folgt, da ein HR nunmal inhaltslos ist. Wie für die übrigen block level Elemente in Textile lassen sich über die gewohnte Notation Klassen bzw. inline Styles vergeben.

Beispiel 1: einfaches HR Element

Textile: hr.
HTML   : <hr />

live:


Beispiel 2: class Attribut

Textile: hr(foobar).
HTML   : <hr class="foobar" />

live:


Beispiel 3: inline CSS

Textile: hr{height:50px;background:#D9D5FC;color:#D9D5FC;border:2px dotted white;}. 
HTML   : <hr style="height:50px;background:#D9D5FC;color:#D9D5FC;border:2px dotted white;" />

live:


Beispiel 4: Text als title Attribut

Textile: hr{height:20px;background:pink;border:0;width:80%;}. Text wird zum title Attribut.. 
HTML   : <hr style="height:20px;background:pink;border:0;width:80%;" title="Text wird zum title Attribut.."

live ( ja, das ist valide! )..:


Caveat

Wie alle block level Elemente erfordert das hr. tag eine Leerzeile nach dem Punkt, auch wenn kein Text folgt. Wird kein Leerzeichen gesetzt, wird das tag nicht interpretiert.

Patch

// class.textile.inc.php - ca. Zeile 254:
    
$this->btag = array('bq''bc''notextile''pre''h[1-6]''fn\d+''p''hr'); 

// class.textile.inc.php - ca. Zeile 609 innerhalb der fBlock($m) Funktion:
    
elseif ($tag == 'hr') {
      
$o1 "<hr$atts ";
      if(
rtrim($content,"\n")!='')
      {
        
$o2 'title="';
        
$c2 '"';
        
$c1 ' />';
        
$content $this->shelve($this->r_encode_html(rtrim($content,"\n")));
      }
      else
      {
        
$o2 $c2 '';
        
$c1 '/>';
      }
    }