function formatu_subtabelon($sxablono, $titolo) { // echo("<!-- formatu_subtabelon( ..., " . var_export($titolo, true) . // ")\n-->"); $teksto = "\n"; $titolo = eotransformado($titolo, $this->kodigo); $teksto .= "\n " . $titolo . " "; $teksto .= "\n-" . str_repeat('-', mb_strlen($titolo, "UTF-8")) . "-"; $teksto .= "\n"; $linioj = explode("\n", $sxablono); $tabellinioj = array(); $largxo = 0; foreach ($linioj as $linio) { list($titolo, $kamponomo) = explode("|", $linio); $titolo = eotransformado($titolo, trim($this->kodigo)); $len = mb_strlen($titolo, "UTF-8"); $tabellinio = array($titolo, $kamponomo, $len); $tabellinioj[] = $tabellinio; $largxo = max($largxo, $len); } // echo "<!-- " . var_export($tabellinioj, true) . "-->"; foreach ($tabellinioj as $tabellinio) { list($titolo, $kamponomo, $len) = $tabellinio; $teksto .= "\n" . $titolo . " " . str_repeat(" ", $largxo - $len); $kamponomo = trim($kamponomo); $valoro = teksttransformo_donu_datumon($kamponomo, $this->datumoj); $valoro = implode(str_repeat(" ", $largxo + 1), explode("\n", eotransformado($valoro, $this->kodigo))); $teksto .= $valoro; } $this->teksto .= $teksto . "\n"; }
/** * traktas <tekstero>n el la gramatiko cxe * transformu_tekston(). */ function simpla_teksttransformo($sxablonero, $datumoj) { $teksto = ""; $sxablona_pozicio = 0; while (false !== ($komenco = strpos($sxablonero, '{{', $sxablona_pozicio))) { // la <simpla_teksto> el (4). $teksto .= substr($sxablonero, $sxablona_pozicio, $komenco - $sxablona_pozicio); $fino = strpos($sxablonero, '}}', $komenco + 2); if ($fino === false) { darf_nicht_sein(); } // la <variablo> el (4). $teksto .= teksttransformo_donu_datumon(substr($sxablonero, $komenco + 2, $fino - ($komenco + 2)), $datumoj); // la sekva iteracio (aux la post-iteracia parto de la funkcio) // traktas la <tekstero>n el (4). $sxablona_pozicio = $fino + 2; } // la simpla_teksto el (3). $teksto .= substr($sxablonero, $sxablona_pozicio); return $teksto; }
/** * Traktas <variablonomo> el la gramatiko cxe * transformu_tekston(). */ function teksttransformo_donu_datumon($variablonomo, $datumoj) { list($komenco, $resto) = explode('.', $variablonomo, 2); if ($resto and is_array($datumoj[$komenco])) { return teksttransformo_donu_datumon($resto, $datumoj[$komenco]); } else { return $datumoj[$komenco]; } }