Sha256: 19053fddfad7d3a91790506df971cbfd150dc4040a7cceea7da6912a3c95ce9b

Contents?: true

Size: 1.77 KB

Versions: 1

Compression:

Stored size: 1.77 KB

Contents

require 'marky_markov'

module Lita
  module Handlers
    class OnewheelSnowcrash < Handler
      route /^snowcrash$/i,
            :generate_random_sentence,
            command: true
      route /^snowcrash (\d+)$/i,
            :generate_by_number,
            command: true
      route /^snowcrashwords$/i,
            :generate_random_words,
            command: true
      route /^snowcrashwords (\d+)$/i,
            :generate_words_by_number,
            command: true

      def generate_random_sentence(response)
        response.reply return_sentence_chain(1)
      end

      def generate_by_number(response)
        response.reply return_sentence_chain(response.matches[0][0])
      end

      def generate_random_words(response)
        response.reply return_word_chain(Random::rand(20))
      end

      def generate_words_by_number(response)
        response.reply return_word_chain(response.matches[0][0])
      end

      def get_markov
        puts File.join(File.dirname(File.expand_path(__FILE__)), '../../dict/snowcrash')
        # MarkyMarkov::Dictionary.new(File.join(File.dirname(File.expand_path(__FILE__)), 'dict/snowcrash'))
        MarkyMarkov::Dictionary.new('dict/snowcrash')
      end

      def return_word_chain(number)
        Lita.logger.info "Generating #{number} words."
        markov = get_markov # Saves/opens dictionary.mmd
        words = markov.generate_n_words(number.to_i)
        Lita.logger.info words
        words
      end

      def return_sentence_chain(number)
        Lita.logger.info "Generating #{number} sentences."
        markov = get_markov # Saves/opens dictionary.mmd
        sentences = markov.generate_n_sentences(number.to_i)
        Lita.logger.info sentences
        sentences
      end

      Lita.register_handler(self)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
lita-onewheel-snowcrash-1.0.3 lib/lita/handlers/onewheel_snowcrash.rb