def find_tag_info(tag_info, dictionary)
      ti = {}
      ti[:errors] = []
      ti[:complete_match] = tag_info[0]
      ti[:is_tag] = (tag_info[0].start_with? '[')
      if ti[:is_tag]
        ti[:closing_tag] = (tag_info[2] == '/')
        ti[:tag] = tag_info[3].to_sym.downcase
        ti[:params] = {}
        @definition = dictionary[ti[:tag]]
        if tag_info[5][0] == ?= and can_have_quick_param?
          quick_param = tag_info[5][1..-1]
          # Get list of parameter values and add them as (regular) parameters
          value_array = quick_param.scan(@definition[:quick_param_format])[0]
          if value_array.nil?
            ti[:invalid_quick_param] = quick_param
          else
            param_tokens = @definition[:param_tokens]
            value_array[0..param_tokens.length - 1].each.with_index do |value, i|
              ti[:params][param_tokens[i][:token]] = value
            end
          end
        elsif tag_info[5][0] == ?\s
          regex_string = '((\w+)=([\w#]+)) | ((\w+)="([^"]+)") | ((\w+)=\'([^\']+)\')'
          tag_info[5].scan(/#{regex_string}/ix) do |param_info|
            param = param_info[1] || param_info[4] || param_info[7]
            value = param_info[2] || param_info[5] || param_info[8]
            ti[:params][param.to_sym] = value
          end
        end
      else
        # Plain text
        ti[:text] = tag_info[9]
      end
      ti
    end
def find_tag_info(tag_info, dictionary)
      ti = {}
      ti[:errors] = []
      ti[:complete_match] = tag_info[0]
      ti[:is_tag] = (tag_info[0].start_with? '[')
      if ti[:is_tag]
        ti[:closing_tag] = (tag_info[2] == '/')
        ti[:tag] = tag_info[3].to_sym.downcase
        ti[:params] = {}
        @definition = dictionary[ti[:tag]]
        if tag_info[5][0] == ?= and can_have_quick_param?
          quick_param = tag_info[5][1..-1]
          # Get list of parameter values and add them as (regular) parameters
          value_array = quick_param.scan(@definition[:quick_param_format])[0]
          if value_array.nil?
            ti[:invalid_quick_param] = quick_param
          else
            param_tokens = @definition[:param_tokens]
            value_array[0..param_tokens.length - 1].each.with_index do |value, i|
              ti[:params][param_tokens[i][:token]] = value
            end
          end
        elsif tag_info[5][0] == ?\s
          regex_string = '((\w+)=([\w#]+)) | ((\w+)="([^"]+)") | ((\w+)=\'([^\']+)\')'
          tag_info[5].scan(/#{regex_string}/ix) do |param_info|
            param = param_info[1] || param_info[4] || param_info[7]
            value = param_info[2] || param_info[5] || param_info[8]
            ti[:params][param.to_sym] = value
          end
        end
      else
        # Plain text
        ti[:text] = tag_info[9]
      end
      ti
    end
Convert the result of the TagSifter#process_text regex into a more usable hash, that is used by the rest of the parser.
 tag_info should a result of the regex of TagSifter#process_text
 Returns the tag hash