# File lib/merb-core/dispatch/router/route.rb, line 109
      def generate(params = {}, fallback = {})
        raise "Cannot generate regexp Routes" if regexp?
        query_params = params.dup if params.is_a? Hash
        url = @segments.map do |segment|
          value =
            if segment.is_a? Symbol
              if params.is_a? Hash
                params[segment] || fallback[segment]
                query_params.delete segment
              else
                if segment == :id && params.respond_to?(:to_param) 
                  params.to_param
                elsif segment == :id && params.is_a?(Fixnum)
                  params
                elsif params.respond_to?(segment)
                  params.send(segment)
                else
                  fallback[segment]
                end
              end
            elsif segment.respond_to? :to_s
              segment
            else
              raise "Segment type '#{segment.class}' can't be converted to a string"
            end
          (value.respond_to?(:to_param) ? value.to_param : value).to_s.unescape_regexp
        end.join
        if query_params && format = query_params.delete(:format)
          format = fallback[:format] if format == :current
          url += ".#{format}"
        end
        if query_params && !query_params.empty?
          url += "?" + Merb::Request.params_to_query_string(query_params)
        end
        url
      end