def self.parse(name, data)
raise ArgumentError, "No option named #{name} defined" if !@options.has_key?(name)
if !(@options[name].type === data)
data = data.to_s
data = if @options[name].type == String
data
elsif @options[name].type == Integer
Integer(data) rescue raise Kramdown::Error, "Invalid integer value for option '#{name}': '#{data}'"
elsif @options[name].type == Float
Float(data) rescue raise Kramdown::Error, "Invalid float value for option '#{name}': '#{data}'"
elsif @options[name].type == Symbol
(data.strip.empty? ? nil : data.to_sym)
elsif @options[name].type == Boolean
data.downcase.strip != 'false' && !data.empty?
end
end
data = @options[name].validator[data] if @options[name].validator
data
end