Sha256: bf2887357d56d5f16340a90d11ab9360ed459676b132e872fd670e4ef8355912
Contents?: true
Size: 1.11 KB
Versions: 1
Compression:
Stored size: 1.11 KB
Contents
module GalaxyConverter class Note PREFIXES = ["how much is", "how many credits is"] QUESTION = "?" NO_IDEA = "I have no idea what you are talking about" def self.from(notes) Array(notes).map do |body| klass = body.index(/credits/i) ? Credit : Note klass.new(body) end end attr_reader :body, :units, :good def initialize(body) @body = body.to_s.strip.downcase @units, @good = detect end def question? @body.end_with?(QUESTION) end def answer(total = 0) return NO_IDEA if total.zero? [].tap do |s| s << units s << good.to_s.capitalize s << "is" s << "%g" % total end.reject(&:empty?).join(" ") end private def detect return stripped, nil end private def stripped @body.sub(/#{PREFIXES.join("|")}/, "").sub(QUESTION, "").strip end end class Credit < Note def answer(total = 0) s = super s << " Credits" end private def detect tokens = stripped.split good = tokens.pop [tokens.join(" "), good] end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
galaxy_converter-3.1.1 | lib/galaxy_converter/note.rb |