示例#1
0
 public function testTagElement()
 {
     $data = ["aaa", "bbbb"];
     $li = TagNode::element('li', ['class' => 'le']);
     $ul = TagNode::element('ul', ['class' => 'fl']);
     $call = _Array::map($li)->implode('')->then($ul);
     $this->assertEquals($call($data), '<ul class="fl"><li class="le">aaa</li><li class="le">bbbb</li></ul>');
 }
示例#2
0
 public function testMapNode()
 {
     $before = _Array::map(_String::ucfirst());
     $this->assertInstanceOf(ArrayMap::class, $before);
     $this->assertInstanceOf(CollectionNodeInterface::class, $before);
     $this->assertInstanceOf(AbstractArray::class, $before);
     $this->assertInstanceOf(AbstractNode::class, $before);
     $this->assertEquals($before(['a.b'])[0], 'A.b');
 }
示例#3
0
文件: XNodeTest.php 项目: sysvyz/hurl
 public function testXNode()
 {
     $data = ['abc', 'qwert', 'xyz'];
     $fn = _Node::init(function ($data) {
         $map = _Array::map(function ($value) {
             return Tag::init('li')->inner($value);
         });
         return Tag::init('ul')->inner($map($data));
     });
     $this->assertEquals('<ul><li>abc</li><li>qwert</li><li>xyz</li></ul>', $fn($data) . '');
 }
示例#4
0
abstract class AbstractArray extends AbstractNode implements CollectionNodeInterface
{
    /**
     * @param callable $do
     * @return AbstractNode
     */
    public function then(callable $do)
    {
        return new class($this, $do) extends AbstractArray implements ContainerTraitInterface
        {
            use ContainerTrait;
        };
    }
    /**
     * @param callable $do
     * @return ArrayEach
     */
    public function each(callable $do)
    {
        return new class($this, _Array::each($do)) extends ArrayEach implements ContainerTraitInterface
        {
            use ContainerTrait;
        };
    }
    /**
     * @param callable $callable
     * @return ArrayMap
     */
    public function map(callable $callable)
    {
        return new class($this, _Array::map($callable)) extends ArrayMap implements ContainerTraitInterface
        {
            use ContainerTrait;
        };
    }
    /**
     * @param callable $callable
     * @return ArrayMap
     */
    public function fold(callable $callable)
    {
        return new class($this, _Array::map($callable)) extends ArrayMap implements ContainerTraitInterface
        {
            use ContainerTrait;
        };
    }
    /**
     * @param \callable[] ...$callable
     * @return ArraySort
     */
    public function sort(callable ...$callable)
    {
        return new class($this, _Array::sort(...$callable)) extends ArraySort implements ContainerTraitInterface
        {
            use ContainerTrait;
        };
    }
    /**
     * @return ArraySort
     */
    public function merge()
    {
        return new class($this, _Array::merge()) extends ArrayMerge implements ContainerTraitInterface
        {
            use ContainerTrait;
        };
    }
    /**
     * @return AbstractNode
     */
    public function sum()
    {
        return new class($this, MathNode::sum()) extends AbstractNode implements ContainerTraitInterface
        {
            use ContainerTrait;
        };
    }
    /**
     * @return ArraySort
     */
    public function values()
    {
        return new class($this, _Array::values()) extends AbstractArray implements ContainerTraitInterface
        {
            use ContainerTrait;
        };
    }
    /**
     * @param string $glue
     * @return AbstractNode
     */
    public function implode(string $glue)
    {
        return $this->then(_Array::implode($glue));
    }
    /**
     * @return IsEmptyFilter
     */
    public function isEmpty()
    {
        return new class($this, _Filter::isEmpty()) extends IsEmptyFilter implements ContainerTraitInterface
        {
            use ContainerTrait;
        };
    }
    /**
     * @return ContainsFilter
     */
    public function contains($needle, $strict = null)
    {
        return new class($this, _Filter::contains($needle, $strict)) extends ContainsFilter implements ContainerTraitInterface
        {
            use ContainerTrait;
        };
    }
}