class Rouge::Lexer

def hash_option(name, defaults, &val_cast)

def hash_option(name, defaults, &val_cast)
  name = name.to_s
  out = defaults.dup
  base = @options.delete(name.to_s)
  base = {} unless base.is_a?(Hash)
  base.each { |k, v| out[k.to_s] = val_cast ? val_cast.call(v) : v }
  @options.keys.each do |key|
    next unless key =~ /(\w+)\[(\w+)\]/ and $1 == name
    value = @options.delete(key)
    out[$2] = val_cast ? val_cast.call(value) : value
  end
  out
end