/**
  * Get the markup for an
  * svg sprite icon
  *
  * @param string $icon
  * @param array  $options
  *
  * @return string
  */
 public static function get_icon($icon, $options = array())
 {
     if (is_array($icon) && isset($icon['icon'])) {
         $icon = $icon['icon'];
     }
     $attrs = array_merge(array('role' => 'img', 'class' => 'icon'), $options);
     $svg_use = MOZ_Html::get_element('use', array('xmlns:xlink' => 'http://www.w3.org/1999/xlink', 'xlink:href' => "#icon-{$icon}"));
     return MOZ_Html::get_element('svg', $attrs, $svg_use);
 }
 /**
  * Get the markup for a
  * picture element
  *
  * @param int        $image
  * @param string     $base_size
  * @param array      $sizes
  * @param array|null $attrs
  * @param array|null $flags
  *
  * @return bool|string
  */
 public static function get_picture($image, $base_size, $sizes, $attrs = array(), $flags = array())
 {
     if (!wp_attachment_is_image($image)) {
         return false;
     }
     $content = array();
     // required for IE9 support...
     $content[] = '<!--[if IE 9]><video style="display: none;"><![endif]-->';
     foreach (array_reverse($sizes) as $size => $query) {
         $src = wp_get_attachment_image_src($image, $size, false);
         $source_attrs = self::maybe_lazify($flags, array('srcset' => esc_attr($src[0]), 'media' => esc_attr($query), 'type' => esc_attr(get_post_mime_type($image))), false, false);
         $content[] = MOZ_Html::get_sc_element('source', $source_attrs);
     }
     $content[] = '<!--[if IE 9]></video><![endif]-->';
     $base_src = wp_get_attachment_image_src($image, $base_size, false);
     $img_attrs = self::maybe_lazify($flags, array_merge(array('srcset' => esc_attr($base_src[0]), 'alt' => self::get_img_alt($image)), (array) $attrs));
     $content[] = MOZ_Html::get_sc_element('img', $img_attrs);
     return MOZ_Html::get_element('picture', null, implode('', $content));
 }
 /**
  * Get an anchor tag
  *
  * @param array  $data
  * @param array  $attrs
  * @param string $content
  *
  * @return string
  */
 public static function get_link($data = null, $attrs = array(), $content = '')
 {
     if (!empty($data) && ($href = self::get_link_href($data))) {
         $attrs['href'] = $href;
     }
     return MOZ_Html::get_element('a', self::add_link_target($attrs), $content);
 }
 /**
  * Start the element output.
  *
  * @see   Walker_Nav_Menu::start_el()
  *
  * @since 1.0
  *
  * @param string        $output Passed by reference. Used to append additional content.
  * @param object        $item   Menu item data object.
  * @param int           $depth  Depth of menu item. Used for padding.
  * @param object|array  $args   An array of arguments. @see wp_nav_menu()
  * @param int           $id     Current item ID.
  */
 public function start_el(&$output, $item, $depth = 0, $args = array(), $id = 0)
 {
     /// Menu Item Opening
     $item_classes = array('__item');
     // add classes to current/parent/ancestor items
     if (isset($item->current) && $item->current) {
         $item_classes[] = '__item--current';
     }
     if (isset($item->current_item_ancestor) && $item->current_item_ancestor) {
         $item_classes[] = '__item--ancestor';
     }
     if (isset($item->current_item_parent) && $item->current_item_parent) {
         $item_classes[] = '__item--parent';
     }
     if (isset($item->has_children) && $item->has_children) {
         $item_classes[] = '__item--has-children';
     }
     // BEM-ify the given sub classes
     $item_classes_str = MOZ_BEM::get_bem($args->menu_class, $item_classes);
     if (isset($item->classes[0]) && !empty($item->classes[0])) {
         // the first item in the 'classes' array is the user-set class
         // the rest of the classes are superfluous
         $item_classes_str .= " {$item->classes[0]}";
     }
     $output .= "<li class=\"{$item_classes_str}\">";
     /// Menu Link
     $attrs = array_filter(array('title' => $item->attr_title, 'target' => $item->target, 'rel' => $item->xfn, 'href' => !empty($item->url) && '#' !== $item->url ? $item->url : '', 'class' => "{$args->menu_class}__link"), function ($attr) {
         // filter out the empty
         // attributes
         return !empty($attr);
     });
     $tag = isset($attrs['href']) ? 'a' : 'span';
     $link_content = $args->link_before . apply_filters('the_title', $item->title, $item->ID) . $args->link_after;
     $output .= $args->before;
     $output .= MOZ_Html::get_element($tag, $attrs, $link_content);
     $output .= $args->after;
 }