30 lines
		
	
	
		
			737 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			737 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
namespace nur\data\template;
 | 
						|
 | 
						|
use nur\base;
 | 
						|
use nur\data\expr\GenericExpr;
 | 
						|
use nur\data\expr\IContext;
 | 
						|
 | 
						|
trait TTemplate {
 | 
						|
  /** @var IContext */
 | 
						|
  protected $context;
 | 
						|
 | 
						|
  function getContext(): IContext {
 | 
						|
    return $this->context;
 | 
						|
  }
 | 
						|
 | 
						|
  function setContext(IContext $context): void {
 | 
						|
    $this->context = $context;
 | 
						|
  }
 | 
						|
 | 
						|
  function applyRules(string $text, IContext $context) {
 | 
						|
    foreach ($this->EXPRS() as $name => $expr) {
 | 
						|
      $value = GenericExpr::with($expr, $name)->eval($context);
 | 
						|
      if (!base::is_undef($value)) $text = str_replace($name, $value, $text);
 | 
						|
    }
 | 
						|
    #XXX ajouter le support des expressions conditionnelles. traiter ligne par
 | 
						|
    # ligne s'il y a des expressions conditionnelles
 | 
						|
    return $text;
 | 
						|
  }
 | 
						|
}
 |