class TacTalk

require 'net/http' require 'uri' require 'json' require 'sanitize'

Public Class Methods

new() click to toggle source
# File lib/tactalk.rb, line 16
def initialize
  @docs = []
  @questions = []

  @struct = Struct.new(:question, :answer, :method)
end

Public Instance Methods

add_question_document(doc) click to toggle source
# File lib/tactalk.rb, line 23
def add_question_document doc
  parsed = begin
    YAML.load(File.open(doc))
  rescue ArgumentError => e
    puts "Could not parse YAML: #{e.message}"
  end

  @docs = @docs | parsed
  @questions = @docs.map { |doc| @struct.new(doc["question"],doc["answer"], doc['method']) }
end
ask(question) click to toggle source
# File lib/tactalk.rb, line 34
def ask question
  doc = @questions.fuzzy_find(:question => question)

  return doc["answer"] if doc["method"].nil?

  # doc['method'].constantize.new doc
  klass = Object.const_get doc['method']
  klass = klass.new doc
  klass.run

end
get_wikipedia_page(page) click to toggle source
# File lib/tactalk.rb, line 46
def get_wikipedia_page page
  url = "http://en.wikipedia.org/w/api.php?format=json&action=parse&page=#{page}"
  content = Net::HTTP.get(URI.parse(url))

  result = JSON.load content
  Sanitize.fragment result['parse']['text']['*']
end