class YurisVocabuil::Command

Public Class Methods

new(*argv) click to toggle source
Calls superclass method
# File lib/yuris_vocabuil.rb, line 14
def initialize(*argv)
  super
  puts "Hello, Ruby!"


  your_name_location = File.join(ENV['HOME'],'.yuris_vocabuil_'+ENV['USER'])
  card_dir_location = File.join(your_name_location, "lib/card_dir")
  vocabulary_list = File.join(your_name_location,"lib/vocabulary_list.csv")
  vocabulary_list_backup = File.join(your_name_location,"lib/backup/vocabulary_list_backup.csv")
  puts  vocabulary_list.green
  puts vocabulary_list_backup.green
  puts card_dir_location.green
  FileUtils.mkdir_p(card_dir_location)
  FileUtils.mkdir_p(File.join(your_name_location,"lib/backup"))
  
  if File::exists?(vocabulary_list) == false
    File.open(vocabulary_list, "w")do |f|
      f.puts "word, history and status"
    end
  end
  
  if File::exists?(vocabulary_list_backup) == false
    File.open(vocabulary_list_backup, "w")do |f|
      f.puts "word, history and status"
    end
  end      
  
  @local_help_dir = File.join(ENV['HOME'],'.yuris_vocabuil_'+ENV['USER'])
  set_help_dir_if_not_exists
  @vocabulary_list = File.join(@local_help_dir,"lib/vocabulary_list.csv")
  @vocabulary_list_backup = File.join(@local_help_dir,"lib/backup/vocabulary_list_backup.csv")
end

Public Instance Methods

achieve() click to toggle source
# File lib/yuris_vocabuil.rb, line 152
def achieve
  puts "achievement "
  lines = CSV.readlines(@vocabulary_list)
  total = lines.size
  history ={}

  for i in 1..total-1 do
    if lines[i].size > 1
      for j in 1..lines[i].size-1
        if day = lines[i][j].match(/(\d{4}\/\d{2}\/\d{2}) \d{2}:\d{2}/)
          if day[1] != nil
            if  history[day[1]] == false
              history[day[1]] = 1
            elsif history[day[1]] != false
              history[day[1]] = history[day[1]].to_i + 1
            end
          end
          day = nil
        end
      end
    end
  end

  history.sort.map do |key,value|
    print "#{key}:"
    for i in 1..value/3 do
      print "*"
    end
    print "\n"
  end
end
add_date_stamp(card,status) click to toggle source
# File lib/yuris_vocabuil.rb, line 228
def add_date_stamp(card,status)
  now = Time.new
  p now = now.strftime("%Y/%m/%d %H:%M")
  # mk backup at a moment
  File.open(@vocabulary_list_backup,"w") do |file|
    File.open(@vocabulary_list,"r") do |read|
      read.each_line do |l|
        file << l
      end
    end
  end

  # add date stamp
  File.open(@vocabulary_list,"w") do |file|
    File.open(@vocabulary_list_backup,"r") do |read|
      read.each_line do |l|
        if l.include?(card)
          str=l.match(/#{card}\w+/)
          str2=l.match(/\w+#{card}/)
          if str == nil && str2 == nil
            content = l.chomp + "," + now.to_s + " status:#{status}" + "\n"
          else
            content = l
          end
          str=nil
          str2=nil
        else
          content = l
        end
        file << content
      end
    end
  end
end
backup() click to toggle source
# File lib/yuris_vocabuil.rb, line 217
def backup
  puts "make backup copy"
  system("cp #{@vocabulary_list} #{@vocabulary_list_backup}")
end
check() click to toggle source
# File lib/yuris_vocabuil.rb, line 186
def check
  puts "check random word"
  lines = CSV.readlines(@vocabulary_list)
  p max_n = lines.size
  loop do
    p sel = rand(max_n)
    line = lines[sel][0].chomp
    puts line.blue

    history_size = lines[sel].size
    puts "#{history_size}回目"

    print 'd(one), e(dit), or q(uit)を入力[d,e,q]: '.red
    input = STDIN.gets.chomp
    p input

    case input
    when 'e'
      edit(line)
    when 'd'
      puts 'good job!'
      status='d'
      add_date_stamp(line,status)
    when 'q'
      exit
    end
  end
end
delete(*argv) click to toggle source
# File lib/yuris_vocabuil.rb, line 103
def delete(*argv)
  card = argv[0]

  puts 'Are you sure?(y/n)'
  input = STDIN.gets.chomp
  p input
  card_rm=card.gsub(/\'/){'\\\''}

  # mk backup at a moment
  File.open(@vocabulary_list_backup,"w") do |file|
    File.open(@vocabulary_list,"r") do |read|
      read.each_line do |l|
        file << l
      end
    end
  end

  case input
  when 'y'
    system("rm #{CARD_DIR}/#{card_rm}.txt")
    puts ("delete #{card}")
    File.open(@vocabulary_list,"w") do |file|
      File.open(@vocabulary_list_backup,"r") do |read|
        read.each_line do |l|
          if l.include?(card)
            str=l.match(/#{card}\w+/)
            str2=l.match(/\w+#{card}/)
            if str == nil && str2 == nil
              content = ""
            else
              content = l
            end
            str=nil
            str2=nil
          else
            content = l
          end

          file << content
        end
      end
    end
  when 'n'
    puts 'canceled'
  end
end
edit(*argv) click to toggle source
# File lib/yuris_vocabuil.rb, line 55
def edit(*argv)
  puts "open specific word card of"
  card = argv[0]
  now = Time.new
  puts ("#{card}")

  card_web = card.gsub('_','+')
  card_emacs = card.gsub(/\'/){'\\\''}
  card_web = card_web.gsub('\'', '%27')
  card_pro = card.gsub('_',' ')
  card_pro = card_pro.gsub("\'",'')

  system "say -v \'Alex\' #{card_pro}"

  @mk_card_dir_location = File.join(@local_help_dir,"lib/card_dir/#{card_emacs}.txt")
  
  system("open https://ejje.weblio.jp/content/#{card_web}")
  if File.exist?(@mk_card_dir_location)
    system("emacs #{@mk_card_dir_location}")
  else
    File.open(@mk_card_dir_location, "w")do |f|
      system("emacs #{@mk_card_dir_location}")
    end
  end
  
  # add card to vocabulary_list.csv
  lines = CSV.readlines(@vocabulary_list)
  p max_n = lines.size
  sel = 1
  File.open(@vocabulary_list,"a") do |file|
    for sel in 1..max_n-1 do
      if card == lines[sel][0]
        sel = sel-1
        break
      end
    end

    if sel == max_n-1 || max_n == 1
      file.puts "#{card}"
      puts "new history added."
    end
  end
  status='e'
  add_date_stamp(card,status)
end
set_help_dir_if_not_exists() click to toggle source
# File lib/yuris_vocabuil.rb, line 223
def set_help_dir_if_not_exists
  return if File::exists?(@local_help_dir)
  FileUtils.mkdir_p(@local_help_dir, :verbose=>true)
end
version() click to toggle source
# File lib/yuris_vocabuil.rb, line 49
def version
  puts YurisVocabuil::VERSION
end