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