/**
  * Renders a HTML tag attribute.
  *
  * @access public
  * @since  0.8
  *
  * @uses   sanitize_html_class()
  * @uses   esc_attr()
  *
  * @param  string       $type  The attribute name.
  * @param  array|string $value The attribute value.
  *
  * @return string        The rendered attribute.
  */
 public static function attribute($type, $value)
 {
     switch ($type) {
         case 'class':
             if (is_array($value) && !empty($value)) {
                 array_walk($value, 'sanitize_html_class');
                 return $value ? ' class="' . implode($value, ' ') . '" ' : '';
             } elseif (!empty($value)) {
                 return ' class="' . sanitize_html_class((string) $value) . '" ';
             } else {
                 return '';
             }
             break;
         case 'id':
             if (!empty($value)) {
                 return ' id="' . esc_attr((string) $value) . '" ';
             } else {
                 return '';
             }
             break;
         case 'style':
             if (is_array($value) && !empty($value)) {
                 array_walk($value, create_function('&$i, $property', '$i = "$property: $i";'));
                 return $value ? ' style="' . implode($value, '; ') . '"' : '';
             }
             return '';
             break;
         case 'value':
             return ' value="' . esc_attr((string) $value) . '" ';
             break;
         case 'data':
             $data = array();
             /**
              * Create valid HTML5 data attributes.
              *
              * @link http://stackoverflow.com/a/22753630/5351316
              * @link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/dataset
              */
             if (cnFunction::isDimensionalArray($value)) {
                 foreach ($value as $_value) {
                     if (isset($_value['name']) && 0 < strlen($_value['name'])) {
                         $name = 'data-' . cnFormatting::toCamelCase($_value['name']);
                         $data[$name] = $_value['value'];
                     }
                 }
             } else {
                 if (isset($value['name']) && 0 < strlen($value['name'])) {
                     $name = 'data-' . cnFormatting::toCamelCase($value['name']);
                     $data[$name] = $value['value'];
                 }
             }
             if (!empty($data)) {
                 array_walk($data, create_function('&$i, $name', '$i = $name . \'="\' . esc_attr( $i ) . \'"\';'));
                 return ' ' . implode($data, ' ');
             }
             return '';
             break;
         default:
             if (is_array($value) && !empty($value)) {
                 array_walk($value, 'esc_attr');
                 return $value ? ' ' . esc_attr($type) . '="' . implode($value, ' ') . '" ' : '';
             } elseif (!empty($value)) {
                 return ' ' . esc_attr($type) . '="' . esc_attr((string) $value) . '" ';
             } else {
                 return '';
             }
     }
 }