public function active(IObject $aParent, string $aSource, $nPosition) { Assert::type("org\\jecat\\framework\\ui\\xhtml\\Tag", $aParent, 'aParent'); $sByte = $aSource->byte($nPosition); if (in_array($sByte, array('"', "'"))) { $nStartPos = $nPosition + 1; $sBorder = $sByte; } else { $nStartPos = $nPosition; $sBorder = null; } $aAttriVal = new AttributeValue(null, $sBorder, $nStartPos, ObjectBase::getLine($aSource, $nStartPos)); $aParent->attributes()->add($aAttriVal); $aAttriVal->setParent($aParent); if ($sByte == '=') { $aAttriVal->setEndPosition($nPosition); $aAttriVal->setSource($sByte); return $aParent; } else { // 只有一个字节的属性值 $nNextPos = $nPosition + 1; if (ParserStateTag::singleton()->examineEnd($aSource, $nNextPos, $aAttriVal)) { return $this->complete($aAttriVal, $aSource, $nPosition); } return $aAttriVal; } }
public function active(IObject $aParent, string $aSource, $nPosition) { $sStartMacro = $this->determineMacroBorder($aSource, $nPosition); $aMacro = new Macro($aSource->byte($nPosition + strlen($sStartMacro)), $nPosition, 0, ObjectBase::getLine($aSource, $nPosition), ''); $aMacro->setBorder($sStartMacro, $this->arrMacroBorder[$sStartMacro]); $aParent->add($aMacro); return $aMacro; }
public function active(IObject $aParent, string $aSource, &$nPosition) { $nLine = ObjectBase::getLine($aSource, $nPosition); $nStartPos = $nPosition; // 标签名称 if (!($sTagName = $this->parseTagName($aSource, $nPosition))) { throw new Exception("UI引擎在分析模板时遇到无效的xhtml节点:缺少节点名称(位置:%d行)", $nLine); } $aTag = new Tag($sTagName, null, 0, $nStartPos, 0, $nLine, ''); // 尾标签 if ($sTagName[0] == '/') { if (!$aParent instanceof Node) { throw new Exception("错误类型"); } $aTag->setTagType(Tag::TYPE_TAIL); $aTag->setName(substr($sTagName, 1)); $aParent->setTailTag($aTag); } else { $aTag->setTagType(Tag::TYPE_HEAD); $aNode = new Node($aTag); $aParent->add($aNode); } return $aTag; }
public function active(IObject $aParent, string $aSource, $nPosition) { $aText = new Text($nPosition, 0, ObjectBase::getLine($aSource, $nPosition), ''); $aParent->add($aText); return $aText; }