module Kramdown::Options

def self.define(name, type, default, desc)

option will be opaque and cannot be used, for example, by CLI command!
The type 'Object' should only be used if none of the other types suffices because such an

Symbol, Boolean, Array, Object), default value +default+ and the description +desc+.
Define a new option called +name+ (a Symbol) with the given +type+ (String, Integer, Float,
def self.define(name, type, default, desc)
  raise ArgumentError, "Option name #{name} is already used" if @options.has_key?(name)
  raise ArgumentError, "Invalid option type #{type} specified" if !ALLOWED_TYPES.include?(type)
  raise ArgumentError, "Invalid type for default value" if !(type === default) && !default.nil?
  @options[name] = Definition.new(name, type, default, desc)
end