| getValue($id);
// L::d($this->getVariables($id));
foreach((array)$this->getVariables($id) as $var){
$type = $var['type'];
$value = $var['value'];
// var_dump($type,$value);
// var_dump($tag->getPlain());
switch($type){
// case 'loop':
// //TODO:ループ処理
// return $this->_setLoop($tag,$value);
case 'wrap':
$src = $this->_wrap($tag,$value);
// L::d($src);
break;
case 'append':
$src = $this->_append($tag,$value);
break;
case 'prepend':
$src = $this->_prepend($tag,$value);
break;
// case 'block':
// //TODO:ループ処理
// return $this->_setBlock($tag);
case 'string':
$src = $this->_setString($tag,$value);
break;
case 'param':
$src = $this->_setParam($tag,$value);
break;
case 'appendparam':
$src = $this->_appendParam($tag,$value);
break;
// case 'attr':
// $src = $this->_setAttr($tag,$value);
// break;
default:
$src = $tag->getPlain();
}
// var_dump($src);
preg_match("/<([\w:_-]+)[\s][^>]*?>/i",$src,$tagMatch);
// if($id=='hoge') L::d($tagMatch);
// L::d($src);
//var_dump($src,$tagMatch);
SimpleTag::setof($tag,$src,$tagMatch[1]);
// if($id=='hoge') L::d($tag);
// $tag =$newtag;
}
return $tag->getPlain();
}
function _wrap(&$tag,$value){
$wraps = explode('',$value,2);
$wraps[1] = ''.$wraps[1];
return $wraps[0].$tag->getPlain().$wraps[1];
}
function _append(&$tag,$value){
return $tag->getStart().$tag->getValue().$value.$tag->getEnd();
}
function _prepend(&$tag,$value){
return $tag->getStart().$value.$tag->getValue().$tag->getEnd();
}
function _setString(&$tag,$value){
$rep = preg_replace('/(<[\s]*([\w\:\-]+)([\s]*[^>]*)>)(?!<[\s]*([\w\:\-]+)[\s]*[^>]*>)(.*)(?!<[\s]*\/\4[\s]*>)(<[\s]*\/\2[\s]*>)/isum','${1}'.$value.'${6}',$tag->getPlain());
return $rep;
}
function _setParam(&$tag,$value){
list($key,$var) = $value;
if(preg_match('/^<[\s]*([\w\:\-]+)[\s]*[^>]*>/imus',$tag->getPlain(),$match)){
$tagName = $match[1];
SimpleTag::setof($retag,$tag->getPlain(),$tagName);
$retag->setParameter($key,$var);
return $retag->get();
}else{
return $tag->getValue();
}
}
function _appendParam(&$tag,$value){
list($key,$var) = $value;
if(preg_match('/^<[\s]*([\w\:\-]+)[\s]*[^>]*>/imus',$tag->getPlain(),$match)){
$tagName = $match[1];
SimpleTag::setof($retag,$tag->getPlain(),$tagName);
$retag->setParameter($key,implode(' ',array($var,$retag->getParameter($key))));
return $retag->get();
}else{
return $tag->getValue();
}
}
function _setAttr(&$tag,$value){
// $id = $tag->getParameter("rt:id");
// if(preg_match('/^<[\s]*([\w\:\-]+)[\s]*[^>]*>/imus',$tag->getPlain(),$match)){
// $tagName = $match[1];
// SimpleTag::setof($retag,$tag->getPlain(),$tagName);
// $retag->setAttr($value);
// return $retag->get();
// }else{
// return $tag->getPlain();
// }
}
function separate($src){
if(preg_match('/(<[\s]*([\w\:\-]+)([\s]*[^>]*)>)(.*)(<[\s]*\/\2[\s]*>)/isum',$src,$match)){
return array($match[1],$match[4],$match[5]);
}
return array();
}
function getVariables($name){
if(isset($this->parser->variables['_rhacket_'.$name])){
return $this->parser->variables['_rhacket_'.$name];
}
}
function getVariable($name){
if(isset($this->parser->variables['_rhacket_'.$name])){
return $this->parser->variables['_rhacket_'.$name];
}
}
function _getId(&$tag){
return '_rhacket_'.$tag->getParameter("rt:id");
}
}
?>
|