Sha256: ebac43415d3d74f21f7c218b9259d7ecbbb6e58611b113b5337979a493c3f40d

Contents?: true

Size: 1.19 KB

Versions: 1

Compression:

Stored size: 1.19 KB

Contents

module Lita
  module Handlers
    class OnewheelWordJumble < Handler

      route /^words\s+([a-zA-Z]+)\s*(\d*)$/i, :words, command: true

      def words(response)
        Lita.logger.debug('Loading words...')

        # Build the dict of words
        words = {}
        File.open(File.expand_path('../../words', File.dirname(__FILE__))).each_line do |l|
          l.chomp!
          words[l.downcase] = 1
        end

        letters = response.matches[0][0]
        len = response.matches[0][1].to_i

        if len == 0
          min_len = 3
          len = letters.length
        else
          min_len = len
        end

        Lita.logger.debug "Searching for alternatives to #{letters} with a length between #{min_len} and #{len}"

        combos = []

        for n in (min_len..len) do
          Lita.logger.debug "Checking for #{n} length words..."
          letters.split(//).permutation(n).to_a.map(&:join).each do |combo|
            combos.push combo  if words[combo] == 1
          end
        end

        combo_str = combos.sort.uniq.join ", "

        Lita.logger.info "Returning: #{combo_str}"

        response.reply(combo_str)
      end

      Lita.register_handler(self)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
lita-onewheel-word-jumble-0.1.0 lib/lita/handlers/onewheel_word_jumble.rb