Sha256: e0c51f0cd7a54891f34326664b1a87e0b2875631124c795de8bb22f7f3c46fe0

Contents?: true

Size: 1.6 KB

Versions: 3

Compression:

Stored size: 1.6 KB

Contents

# -*- coding: utf-8 -*-
# frozen_string_literal: true

require_relative "teihitsu_training_cli/version"

require "csv"
require "thor"

# The class of quiz app
class Trng < Thor
  package_name "Teihitsu Training CLI"

  default_command :onyomi

  method_option :start,
                aliases: "-s",
                desc: "Specify the index of the item you want to start"

  # define the quiz item
  class Item
    def initialize(item)
      (@index, @question, @_level, @answer, @alt_answer, @note) = item
      @answers = [@answer, @alt_answer].compact
    end

    def quiz
      puts "\n[#{@index}] #{@question}"
      user_answer = $stdin.gets.chomp.strip
      test user_answer
      puts @note
    end

    def test(user_answer)
      if @answers.include?(user_answer)
        alt_answers = (@answers - [user_answer]).compact
        puts "✅\n別答:#{alt_answers&.join}" unless alt_answers&.empty?
      else
        puts "❌\n正答:"
        @answers.map { |e| puts e.to_s }
        write_result
      end
    end

    private

    def write_result
      result = <<~"RESULT"
        [#{@index}] #{@question}
        ❌
        正答:
        #{@answers.map(&:to_s)}

        #{@note}

      RESULT

      File.open("result.txt", "a") do |io|
        io.write(result)
      end
    end
  end

  desc "onyomi", "The questions will be taken from the onyomi section"
  def onyomi
    puts "©︎ 2022 Teihitsu Training"

    start = options[:start] ? (options[:start].to_i - 1) : 0

    items = CSV.read("problems/onyomi.csv")[start..]

    items.each do |i|
      item = Item.new(i)
      item.quiz
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
teihitsu_training_cli-0.1.2 lib/teihitsu_training_cli.rb
teihitsu_training_cli-0.1.1 lib/teihitsu_training_cli.rb
teihitsu_training_cli-0.1.0 lib/teihitsu_training_cli.rb