. */ /* */ /*************************************************************************************/ require_once __DIR__ . "/../../fonctions/autoload.php"; class ContenuElement extends PexElement{ public $elements; public $idx; public $last_type; function __construct() { $this->elements = array(); $this->idx = 0; $this->last_type = -1; } function type() { return PexToken::TYPE_CONTENU; } function ajouter($element) { // Merge subsequent text elements //if (DEBUG_PARSER) { Analyse::echo_debug("Contenu ajouter: idx=".$this->idx.", last_type=".$this->last_type.", element type=".$element->type());} if ($this->idx > 0 && $this->last_type == PexToken::TYPE_TEXTE && $element->type() == PexToken::TYPE_TEXTE) { //if (DEBUG_PARSER) { Analyse::echo_debug("Contenu append: "); $element->imprimer();} $this->elements[$this->idx-1]->ajouter($element->texte); } else { //if (DEBUG_PARSER) { Analyse::echo_debug("Contenu ajout:"); $element->imprimer(); } $this->elements[] = $element; $this->last_type = $element->type(); //if (DEBUG_PARSER) { Analyse::echo_debug("Après ajout: last_type=".$this->last_type); } $this->idx++; } } function evaluer(&$substitutions = array()) { if (DEBUG_EVAL) { Analyse::echo_debug("Eval contenu $this->idx"); } $val = ''; foreach($this->elements as $element) { if (DEBUG_EVAL) { Analyse::echo_debug("CONT:eval ". $element->type()); $element->imprimer();} $val .= $element->evaluer($substitutions); } return $val; } function imprimer() { foreach($this->elements as $element) { $element->imprimer(); } } } ?>