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