<?php
class Radio {
  /**
   * Gera o código HTML das opções do tipo radio com os atributos fornecidos
   * 
   * @param array $options Opções para formação do HTML.
   * @param array $attributes Atributos adicionais para o campo.
   * @return string O código HTML renderizado.
   */
  public static function render($options, $attributes) {
    $attribute_value = $attributes['value'] ?? null;
    $html = '';
    $is_associative = Helper::is_associative_array($options);

    if ($attribute_value == null) {
      if (isset($attributes['default']))
        $attribute_value = $attributes['default'];
      else if (count($options) > 0)
        $attribute_value = $is_associative ? array_keys($options)[0] : $options[0];
    }

    foreach ($options as $key => $value) {
      if ($is_associative) {
        $option_value = $key;
        $option_label = $value;
      } else {
        $option_value = $option_label = $value;
      }

      $options_attributes = array_merge($attributes, array('value' => $option_value, 'type' => 'radio'));

      if ($option_value == $attribute_value)
        $options_attributes['checked'] = 'checked';

      $html .= '<label>' .
        Input::render($options_attributes) .
        Helper::sanitize_value($option_label) .
        "</label>";
    }
    return $html;
  }
}
