lib/language_cards/controllers/game.rb in language_cards-0.3.0 vs lib/language_cards/controllers/game.rb in language_cards-0.3.1

- old
+ new

@@ -1,73 +1,69 @@ +require 'language_cards/controllers/application_controller' + module LanguageCards module Controllers - module Game - class << self - include Helpers::ViewHelper - include Helpers::GameHelper + class Game < ApplicationController + include Helpers::GameHelper - def render(correct:, incorrect:, title:, timer:, last:) - _score = t('Game.ScoreMenu.Score') + ": %0.2d%%" % calc_score(correct, incorrect) - _timer = [((t('Timer.Timer') + ": " + timer.ha) if timer.time?), nil, timer.h] - _mexit = t 'Menu.Exit' + def render(correct:, incorrect:, title:, timer:, last:) + _score = t('Game.ScoreMenu.Score') + ": %0.2d%%" % calc_score(correct, incorrect) + _timer = [((t('Timer.Timer') + ": " + timer.ha) if timer.time?), nil, timer.h] + _mexit = t 'Menu.Exit' - view = File.expand_path('../view/game.erb', __dir__). - ᐅ( IO.method :read ). - ᐅ ERB.method :new - view.result(binding) - end + super(binding) + end - def process(cards, mode) - ic = struct_data.new(cards, mode) - ic.get_input - { - correct: ic.valid?, - last: ic.valid? ? ic.correct_msg : ic.incorrect_msg - } - end + def process(cards, mode) + ic = struct_data.new(cards, mode) + ic.get_input + { + correct: ic.valid?, + last: ic.valid? ? ic.correct_msg : ic.incorrect_msg + } + end - def struct_data - Struct.new(:card_set, :mode) do - def input - @input - end + def struct_data + Struct.new(:card_set, :mode) do + def input + @input + end - def get_input - @input ||= CLI.ask("#{I18n.t('Game.TypeThis')}: #{display}") - end + def get_input + @input ||= CLI.ask("#{I18n.t('Game.TypeThis')}: #{display}") + end - def card - @card ||= card_set.sample.current - end + def card + @card ||= card_set.sample.current + end - def display - "#{card}" - end + def display + "#{card}" + end - def expected - case mode - when :translate - card.translation - when :typing_practice - "#{card}" - else - raise "Invalid mode in Game Controller!" - end + def expected + case mode + when :translate + card.translation + when :typing_practice + "#{card}" + else + raise "Invalid mode in Game Controller!" end + end - def correct_msg - "#{I18n.t('Game.Correct')} #{input} = #{display}" - end + def correct_msg + "#{I18n.t('Game.Correct')} #{input} = #{display}" + end - def incorrect_msg - output = "#{I18n.t('Game.Incorrect')} #{input} != #{display}" - output << " #{I18n.t('Game.Its')} #{expected.join(', ')}" if mode == :translate - output - end + def incorrect_msg + output = "#{I18n.t('Game.Incorrect')} #{input} != #{display}" + output << " #{I18n.t('Game.Its')} #{expected.join(', ')}" if mode == :translate + output + end - def valid? - card_set.match? input - end + def valid? + card_set.match? input end end end end end