示例#1
0
 /**
  * 指定された引数で Renderer オブジェクトを初期化します.
  * 
  * @see    Renderer::setRenderer()
  * @param  Renderer|string $var
  * @return Renderer
  * @throws \InvalidArgumentException
  */
 private function initRenderer($var)
 {
     if ($var instanceof Renderer) {
         return $var;
     }
     if ($var === null) {
         return null;
     }
     $type = strtolower(Values::stringValue($var));
     $xmlList = array("xml", "xhtml");
     if (in_array($type, $xmlList)) {
         return XmlRenderer::getInstance();
     }
     $sgmlList = array("sgml", "html");
     if (in_array($type, $sgmlList)) {
         return SgmlRenderer::getInstance();
     }
     throw new \InvalidArgumentException("Invalid type name: {$type}.");
 }
示例#2
0
 /**
  * この NodeList に実際に追加される値を返します.
  * 
  * @param  mixed $var
  * @return Component|array 追加されるノード (またはノードの配列)
  */
 private function getAppendee($var)
 {
     if ($var instanceof None) {
         return null;
     }
     if ($var instanceof Node) {
         return $var;
     }
     if ($var instanceof Container) {
         return $var->getChildNodes();
     }
     if (is_array($var)) {
         $result = array();
         foreach ($var as $i) {
             $appendee = $this->getAppendee($i);
             if (is_array($appendee)) {
                 $result = array_merge($result, $appendee);
             } else {
                 $result[] = $appendee;
             }
         }
         return $result;
     }
     if (!isset($var)) {
         return null;
     }
     return new Text(Values::stringValue($var));
 }
示例#3
0
 /**
  * 引数の値をノードに変換します. このメソッドは {@link HelperObject}
  * から参照されます. エンドユーザーが直接使う機会はありません.
  * 返り値は, 引数によって以下のようになります.
  * 
  * - {@link Node} 型オブジェクトの場合: 引数自身
  * - {@link NodeList} 型オブジェクトの場合: 引数自身
  * - {@link HelperObject} 型オブジェクトの場合: 引数のオブジェクトがラップしているノード
  * - 文字列の場合: 引数の文字列を要素名に持つ新しい {@link Element}
  * - null または空文字列の場合: 空の {@link NodeList}
  * - 上記に当てはまらない場合: 引数の文字列表現をあらわす {@link Text} ノード
  * 
  * @param  mixed $var 変換対象の値
  * @return Component  変換後のノード
  * @ignore
  */
 public function createNode($var)
 {
     if ($var instanceof Node) {
         return $var;
     }
     if ($var instanceof NodeList) {
         return $var;
     }
     if ($var instanceof HelperObject) {
         return $var->getNode();
     }
     if (is_string($var) && strlen($var)) {
         return $this->createElement($var);
     }
     $nodeName = Values::stringValue($var);
     return strlen($nodeName) ? new Text($nodeName) : new NodeList();
 }
示例#4
0
 /**
  * 引数の文字列から UTF-8 として不適切なシーケンスを除去します.
  * 
  * @param  string $var 文字列
  * @return string      不正なシーケンスを除去した結果
  */
 private static function cleanString($var)
 {
     // @codeCoverageIgnoreStart
     static $utf8Codec = null;
     if ($utf8Codec === null) {
         $utf8Codec = new Utf8Codec();
     }
     // @codeCoverageIgnoreEnd
     $str = Values::stringValue($var);
     return $utf8Codec->encode($utf8Codec->decode($str));
 }
示例#5
0
文件: Code.php 项目: trashtoy/peach2
 /**
  * 引数の文字列を整形済テキストとする Code オブジェクトを生成します.
  * @param string $text 整形済テキスト
  */
 public function __construct($text)
 {
     $this->text = Values::stringValue($text);
 }
示例#6
0
 /**
  * 指定された prefix と suffix を持つ Comment オブジェクトを構築します.
  * prefix と suffix は, 主に条件付きコメントの先頭 ("[if IE 6]>" など) と
  * 末尾 ("<![endif]" など) に使用されます.
  * 引数を指定しない場合は通常のコメントノードを生成します.
  * 
  * @param string $prefix コメントの冒頭 ("[if IE 6]>" など)
  * @param string $suffix コメントの末尾 ("<![endif]" など)
  */
 public function __construct($prefix = "", $suffix = "")
 {
     $this->nodeList = new NodeList(null, $this);
     $this->prefix = Values::stringValue($prefix);
     $this->suffix = Values::stringValue($suffix);
 }
示例#7
0
 /**
  * encode() の本体の処理です.
  * 指定された値がスカラー型 (null, 真偽値, 数値, 文字列), 配列, オブジェクトのいずれかにも該当しない場合,
  * 文字列にキャストした結果をエンコードします.
  * 
  * @param  mixed  $var 変換対象の値
  * @return string      JSON 文字列
  * @ignore
  */
 public function encodeValue($var)
 {
     if ($var === null) {
         return "null";
     }
     if ($var === true) {
         return "true";
     }
     if ($var === false) {
         return "false";
     }
     if (is_float($var)) {
         return $this->encodeFloat($var);
     }
     if (is_integer($var)) {
         return strval($var);
     }
     if (is_string($var)) {
         return is_numeric($var) ? $this->encodeNumeric($var) : $this->encodeString($var);
     }
     if (is_array($var)) {
         return $this->checkKeySequence($var) ? $this->encodeArray($var) : $this->encodeObject($var);
     }
     if (is_object($var)) {
         $arr = (array) $var;
         return $this->encodeValue($arr);
     }
     return $this->encodeValue(Values::stringValue($var));
 }