# File lib/loquacious/configuration/help.rb, line 58
    def initialize( config, opts = {} )
      opts = @@defaults.merge opts
      @config = config.kind_of?(::Loquacious::Configuration) ? config :
                ::Loquacious::Configuration.for(config)

      @io = opts[:io]
      @name_length = Integer(opts[:name_length])
      @desc_leader = opts[:desc_leader]
      @nesting_nodes = opts[:nesting_nodes]
      @colorize = opts[:colorize]
      @colors = opts[:colors]

      unless @name_length > 0
        Iterator.new(@config).each do |node|
          length = node.name.length
          @name_length = length if length > @name_length
        end
      end

      name_leader = opts[:name_leader]
      name_value_sep = opts[:name_value_sep]
      extra_length = name_leader.length + name_value_sep.length
      name_value_sep = name_value_sep.gsub('%', '%%')

      @value_length = 78 - @name_length - extra_length
      @value_leader = "\n" + ' '*(@name_length + extra_length)
      @format = "#{name_leader}%-#{@name_length}s#{name_value_sep}%s"
      @name_format = "#{name_leader}%s"

      if colorize?
        @desc_leader = self.__send__(@colors[:leader], @desc_leader)
        name_leader = self.__send__(@colors[:leader], name_leader)
        name_value_sep = self.__send__(@colors[:leader], name_value_sep)

        @format = name_leader.dup
        @format << self.__send__(@colors[:name], "%-#{@name_length}s")
        @format << name_value_sep.dup
        @format << self.__send__(@colors[:value], "%s")

        @name_format = name_leader.dup
        @name_format << self.__send__(@colors[:name], "%s")
      end

      @desc_leader.freeze
      @value_leader.freeze
      @format.freeze
      @name_format.freeze
    end