lib/galaxy_converter/note.rb in galaxy_converter-2.1.2 vs lib/galaxy_converter/note.rb in galaxy_converter-3.0.1

- old
+ new

@@ -1,28 +1,48 @@ module GalaxyConverter class Note PREFIXES = ["how much is", "how many credits is"] - QUESTION_MARK = "?" + QUESTION = "?" + NO_IDEA = "I have no idea what you are talking about" - def self.bulk(notes) + def self.from(notes) Array(notes).map { |body| new(body) } end - attr_reader :body + attr_reader :body, :units, :good def initialize(body) @body = body.to_s.strip.downcase + @units, @good = detect end def question? - @body.end_with?(QUESTION_MARK) + @body.end_with?(QUESTION) end def commercial? !!@body.index("credits") end - def stripped - @body.sub(/#{PREFIXES.join("|")}/, "").sub(QUESTION_MARK, "").strip + 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 + s << "Credits" if commercial? + end.reject(&:empty?).join(" ") + end + + private def detect + tokens = stripped.split + return [tokens.join(" "), nil] unless commercial? + good = tokens.pop + [tokens.join(" "), good] + end + + private def stripped + @body.sub(/#{PREFIXES.join("|")}/, "").sub(QUESTION, "").strip end end end