/**
  * 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);
 }
    /**
     * Returns pagination HTML
     * for the currently
     * active loop
     *
     * @param array|string $args
     *
     * @return string
     */
    public static function get_pagination($args = array())
    {
        $args = wp_parse_args($args, array('prev_next' => false));
        $pagination_items = array_filter(self::get_pagination_arr($args), function ($item) {
            return false !== $item['text'];
        });
        if (empty($pagination_items)) {
            return '';
        }
        ob_start();
        ?>

			<nav class="pagination">
				<ul class="pagination__list">
					<?php 
        foreach ($pagination_items as $item) {
            ?>

						<li class="pagination__list-item">
							<?php 
            $classes = 'pagination__item';
            if ('page' === $item['type']) {
                $classes .= " pagination__item--{$item['type']}";
            }
            $tag = 'span';
            $attrs = array('class' => $classes);
            if (false !== $item['link'] && '#' !== $item['link']) {
                $tag = 'a';
                $attrs['href'] = $item['link'];
            }
            MOZ_Html::element($tag, $attrs, $item['text']);
            ?>
						</li>

					<?php 
        }
        ?>
				</ul>
			</nav>

		<?php 
        return ob_get_clean();
    }
    /**
     * Return the breadcrumbs HTML
     * based on the given menu
     * location
     *
     * @param string $theme_location
     * @param array  $options
     *
     * @return string
     */
    public static function get_breadcrumbs($theme_location = 'primary', $options = array())
    {
        $breadcrumbs_items = self::get_breadcrumbs_arr($theme_location, $options);
        if (!$breadcrumbs_items || empty($breadcrumbs_items)) {
            return '';
        }
        ob_start();
        ?>

			<nav class="breadcrumbs">
				<ul class="breadcrumbs__list">
					<?php 
        foreach ($breadcrumbs_items as $item) {
            ?>

						<li class="breadcrumbs__list-item">
							<?php 
            $classes = 'breadcrumbs__item';
            if ($item['current']) {
                $classes .= ' breadcrumbs__item--current';
            }
            $tag = 'span';
            $attrs = array('class' => $classes);
            if (false !== $item['link'] && '#' !== $item['link']) {
                $tag = 'a';
                $attrs['href'] = $item['link'];
            }
            MOZ_Html::element($tag, $attrs, $item['text']);
            ?>
						</li>

					<?php 
        }
        ?>
				</ul>
			</nav>

		<?php 
        return ob_get_clean();
    }
 /**
  * Get the markup for an image
  * using srcset and sizes
  *
  * @param int        $image
  * @param array      $sources
  * @param array      $sizes
  * @param array|null $attrs
  * @param array|null $flags
  *
  * @returns string
  */
 public static function get_image($image, $sources, $sizes, $attrs = array(), $flags = array())
 {
     if (!wp_attachment_is_image($image)) {
         return false;
     }
     $srcset = array();
     foreach ($sources as $size) {
         if ($src = wp_get_attachment_image_src($image, $size, false)) {
             $srcset[] = "{$src[0]} {$src[1]}w {$src[2]}h";
         }
     }
     if (empty($srcset)) {
         return false;
     }
     $img_attrs = self::maybe_lazify($flags, array_merge(array('srcset' => implode(', ', $srcset), 'sizes' => implode(', ', $sizes), 'alt' => self::get_img_alt($image)), (array) $attrs));
     return MOZ_Html::get_sc_element('img', $img_attrs);
 }
 /**
  * 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;
 }