Sto provando a crearmi dei modificatori personalizzati per phptal, ma purtroppo la documentazione è un po' carente...

Ho buttato giù questo codice:
Codice PHP:
function phptal_tales_ucfirst ($src$nothrow) {
    
$parsed = (array) phptal_tales($src$nothrow);
    
$i 1;
    
$return "";
    foreach (
$parsed as $x) {
        if (
$i count($parsed)) $return .= "!empty(" $x ") ? ucfirst(" $x ") : ";
        else 
$return .= "ucfirst(" $x ")";
        
$i++;
    }
   return 
$return;

Funziona alla perfezione, solo che... s'inceppa con i valori di default mi restituisce '')

Per curiosità allora ho provato togliendo gli "ucfirst":
Codice PHP:
function phptal_tales_ucfirst ($src$nothrow) {
   
$parsed = (array) phptal_tales($src$nothrow);
   
$i 1;
   
$return "";
   foreach (
$parsed as $x) {
       if (
$i count($parsed)) $return .= "!empty(" $x ") ? " $x " : ";
       else 
$return .= $x;
       
$i++;
   }
   return 
$return;

E funziona tutto (a parte il fatto che non rende maiuscola la prima lettera, ovviamente), anche i valori di default...

Sapete dirmi dov'è che sbaglio?

(Ah, se vi serve il codice del template è questo:
codice HTML:
<h1 tal:content="ucfirst: title | default">valore di default</h1>
e il risultato è questo:
Codice PHP:
<h1>
    <?php
        
echo phptal_escape(!empty($ctx->path($ctx'title'true)) ? ucfirst($ctx->path($ctx'title'true)) : ucfirst(new PHPTAL_DefaultKeyword), 'UTF-8');
    
?>
</h1>
)