Example #1
0
 public function element($name = 'div', $attr = array(), $text = null)
 {
     $element = (object) array('name' => $name, 'attr' => $attr);
     if (empty($element->name)) {
         return false;
     }
     $element->one_liner = in_array($element->name, self::$sets['self_close']);
     $html = array();
     if ('a' === $element->name) {
         if (!isset($element->attr['title'])) {
             $element->attr['title'] = Lorem::sentence(Base::numberBetween(1, Base::numberBetween(3, 9)));
         }
         if (!isset($element->attr['href'])) {
             $element->attr['href'] = $this->generator->url();
         }
     }
     if ('img' === $element->name) {
         $element = $this->html_element_img($element, array('placeholdit', 'lorempixel', 'unsplashit'));
     }
     $attributes = array();
     foreach ($element->attr as $key => $value) {
         $attributes[] = sprintf('%s="%s"', $key, esc_attr($value));
     }
     $html[] = sprintf('<%s%s>', $element->name, (!empty($attributes) ? ' ' : '') . implode(' ', $attributes));
     if (!$element->one_liner) {
         if (!is_null($text)) {
             $html[] = $text;
         } elseif (in_array($element->name, self::$sets['inline'])) {
             $text = Lorem::text(Base::numberBetween(5, 25));
             $html[] = substr($text, 0, strlen($text) - 1);
         } elseif (in_array($element->name, self::$sets['item'])) {
             $text = Lorem::text(Base::numberBetween(10, 60));
             $html[] = substr($text, 0, strlen($text) - 1);
         } elseif (in_array($element->name, self::$sets['list'])) {
             for ($i = 0; $i < Base::numberBetween(1, 15); $i++) {
                 $html[] = $this->element('li');
             }
         } elseif (in_array($element->name, self::$sets['header'])) {
             $text = Lorem::text(Base::numberBetween(60, 200));
             $html[] = substr($text, 0, strlen($text) - 1);
         } else {
             $html[] = $this->random_apply_element('a', Base::numberBetween(0, 10), Lorem::paragraph(Base::numberBetween(2, 40)));
         }
         $html[] = sprintf('</%s>', $element->name);
     }
     return implode('', $html);
 }