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