lib/journal-cli/checkin.rb in journal-cli-1.0.31 vs lib/journal-cli/checkin.rb in journal-cli-1.0.32

- old
+ new

@@ -7,21 +7,21 @@ @key = journal @output = [] @date = Journal.date @date.localtime - raise StandardError, "No journal with key #{@key} found" unless Journal.config['journals'].key? @key + raise StandardError, "No journal with key #{@key} found" unless Journal.config["journals"].key? @key - @journal = Journal.config['journals'][@key] - @sections = Sections.new(@journal['sections']) + @journal = Journal.config["journals"][@key] + @sections = Sections.new(@journal["sections"]) @data = {} - meridian = @date.hour < 13 ? 'AM' : 'PM' - @title = @journal['title'].sub(/%M/, meridian) + meridian = (@date.hour < 13) ? "AM" : "PM" + @title = @journal["title"].sub(/%M/, meridian) end - def title(string) + def add_title(string) @output << "\n## #{string}\n" unless string.nil? end def header(string) @output << "\n##### #{string}\n" unless string.nil? @@ -41,117 +41,117 @@ def go @sections.each { |key, section| @data[key] = section } save_data - save_day_one_entry if @journal['dayone'] + save_day_one_entry if @journal["dayone"] - return unless @journal['markdown'] + return unless @journal["markdown"] - case @journal['markdown'] + case @journal["markdown"] when /^da(y|ily)/ save_daily_markdown when /^(ind|sep)/ save_individual_markdown else save_single_markdown end end def save_day_one_entry - unless TTY::Which.exist?('dayone2') - Journal.notify('{br}Day One CLI not installed, no Day One entry created') + unless TTY::Which.exist?("dayone2") + Journal.notify("{br}Day One CLI not installed, no Day One entry created") return end @date.localtime - cmd = ['dayone2'] - cmd << %(-j "#{@journal['journal']}") if @journal.key?('journal') - cmd << %(-t #{@journal['tags'].join(' ')}) if @journal.key?('tags') - cmd << %(-date "#{@date.strftime('%Y-%m-%d %I:%M %p')}") - `echo #{Shellwords.escape(to_markdown(yaml: false, title: true))} | #{cmd.join(' ')} -- new` - Journal.notify('{bg}Entered one entry into Day One') + cmd = ["dayone2"] + cmd << %(-j "#{@journal["journal"]}") if @journal.key?("journal") + cmd << %(-t #{@journal["tags"].join(" ")}) if @journal.key?("tags") + cmd << %(-date "#{@date.strftime("%Y-%m-%d %I:%M %p")}") + `echo #{Shellwords.escape(to_markdown(yaml: false, title: true))} | #{cmd.join(" ")} -- new` + Journal.notify("{bg}Entered one entry into Day One") end def save_single_markdown - dir = if @journal.key?('entries_folder') - File.join(File.expand_path(@journal['entries_folder']), 'entries') - elsif Journal.config.key?('entries_folder') - File.join(File.expand_path(Journal.config['entries_folder']), @key) - else - File.expand_path("~/.local/share/journal/#{@key}/entries") - end + dir = if @journal.key?("entries_folder") + File.join(File.expand_path(@journal["entries_folder"]), "entries") + elsif Journal.config.key?("entries_folder") + File.join(File.expand_path(Journal.config["entries_folder"]), @key) + else + File.expand_path("~/.local/share/journal/#{@key}/entries") + end FileUtils.mkdir_p(dir) unless File.directory?(dir) filename = "#{@key}.md" @date.localtime target = File.join(dir, filename) - File.open(target, 'a') do |f| + File.open(target, "a") do |f| f.puts - f.puts "## #{@title} #{@date.strftime('%x %X')}" + f.puts "## #{@title} #{@date.strftime("%x %X")}" f.puts f.puts to_markdown(yaml: false, title: false) end Journal.notify "{bg}Added new entry to {bw}#{target}" end def save_daily_markdown - dir = if @journal.key?('entries_folder') - File.join(File.expand_path(@journal['entries_folder']), 'entries') - elsif Journal.config.key?('entries_folder') - File.join(File.expand_path(Journal.config['entries_folder']), @key) - else - File.join(File.expand_path("~/.local/share/journal/#{@key}/entries")) - end + dir = if @journal.key?("entries_folder") + File.join(File.expand_path(@journal["entries_folder"]), "entries") + elsif Journal.config.key?("entries_folder") + File.join(File.expand_path(Journal.config["entries_folder"]), @key) + else + File.join(File.expand_path("~/.local/share/journal/#{@key}/entries")) + end FileUtils.mkdir_p(dir) unless File.directory?(dir) @date.localtime - filename = "#{@key}_#{@date.strftime('%Y-%m-%d')}.md" + filename = "#{@key}_#{@date.strftime("%Y-%m-%d")}.md" target = File.join(dir, filename) if File.exist? target - File.open(target, 'a') { |f| f.puts to_markdown(yaml: false, title: true, date: false, time: true) } + File.open(target, "a") { |f| f.puts to_markdown(yaml: false, title: true, date: false, time: true) } else - File.open(target, 'w') { |f| f.puts to_markdown(yaml: true, title: true, date: false, time: true) } + File.open(target, "w") { |f| f.puts to_markdown(yaml: true, title: true, date: false, time: true) } end Journal.notify "{bg}Saved daily Markdown to {bw}#{target}" end def save_individual_markdown - dir = if @journal.key?('entries_folder') - File.join(File.expand_path(@journal['entries_folder']), 'entries') - elsif Journal.config.key?('entries_folder') - File.join(File.expand_path(Journal.config['entries_folder']), @key, - 'entries') - else - File.join(File.expand_path('~/.local/share/journal'), @key, 'entries') - end + dir = if @journal.key?("entries_folder") + File.join(File.expand_path(@journal["entries_folder"]), "entries") + elsif Journal.config.key?("entries_folder") + File.join(File.expand_path(Journal.config["entries_folder"]), @key, + "entries") + else + File.join(File.expand_path("~/.local/share/journal"), @key, "entries") + end FileUtils.mkdir_p(dir) unless File.directory?(dir) @date.localtime - filename = @date.strftime('%Y-%m-%d_%H%M.md') + filename = @date.strftime("%Y-%m-%d_%H%M.md") target = File.join(dir, filename) - File.open(target, 'w') { |f| f.puts to_markdown(yaml: true, title: true) } + File.open(target, "w") { |f| f.puts to_markdown(yaml: true, title: true) } puts "Saved new entry to #{target}" end def print_answer(prompt, type, key, data) return if data.nil? || !data.key?(key) || data[key].nil? case type when /^(weather|forecast|moon)/ header prompt @output << case type - when /current$/ - data[key].current - when /moon$/ - "Moon phase: #{data[key].moon}" - else - data[key].to_markdown - end + when /current$/ + data[key].current + when /moon$/ + "Moon phase: #{data[key].moon}" + else + data[key].to_markdown + end when /^(int|num)/ @output << "#{prompt}: #{data[key]} " unless data[key].nil? when /^date/ - @output << "#{prompt}: #{data[key].strftime('%Y-%m-%d %H:%M')}" unless data[key].nil? + @output << "#{prompt}: #{data[key].strftime("%Y-%m-%d %H:%M")}" unless data[key].nil? else unless data[key].strip.empty? header prompt @output << data[key] end @@ -167,22 +167,22 @@ next when /Hash/ data[k] = weather_to_yaml(v) when /Date/ v.localtime - data[k] = v.strftime('%Y-%m-%d %H:%M') + data[k] = v.strftime("%Y-%m-%d %H:%M") when /Weather/ data[k] = case k - when /current$/ - v.current - when /forecast$/ - data[k] = v.forecast - when /moon(_?phase)?$/ - data[k] = v.moon - else - data[k] = v.to_s - end + when /current$/ + v.current + when /forecast$/ + data[k] = v.forecast + when /moon(_?phase)?$/ + data[k] = v.moon + else + data[k] = v.to_s + end else data[k] = v end end data @@ -191,38 +191,37 @@ def to_markdown(yaml: false, title: false, date: false, time: false) @output = [] if yaml @date.localtime - yaml_data = { 'title' => @title, 'date' => @date.strftime('%x %X')} + yaml_data = {"title" => @title, "date" => @date.strftime("%x %X")} @data.each do |key, data| yaml_data = yaml_data.merge(weather_to_yaml(data.answers)) end @output << YAML.dump(yaml_data).strip - @output << '---' + @output << "---" end if title if date || time - fmt = '' - fmt += '%x' if date - fmt += '%X' if time - title "#{@title} #{@date.strftime(fmt)}" + fmt = "" + fmt += "%x" if date + fmt += "%X" if time + add_title "#{@title} #{@date.strftime(fmt)}" else - title @title + add_title @title end end @sections.each do |key, section| - answers = section.answers section section.title section.questions.each do |question| - if question.key =~ /\./ + if /\./.match?(question.key) res = section.answers.dup - keys = question.key.split(/\./) + keys = question.key.split(".") keys.each_with_index do |key, i| next if i == keys.count - 1 res = res[key] end @@ -236,55 +235,55 @@ @output.join("\n") end def save_data @date.localtime - dir = if @journal.key?('entries_folder') - File.expand_path(@journal['entries_folder']) - elsif Journal.config.key?('entries_folder') - File.expand_path(Journal.config['entries_folder']) - else - File.expand_path('~/.local/share/journal') - end + dir = if @journal.key?("entries_folder") + File.expand_path(@journal["entries_folder"]) + elsif Journal.config.key?("entries_folder") + File.expand_path(Journal.config["entries_folder"]) + else + File.expand_path("~/.local/share/journal") + end FileUtils.mkdir_p(dir) unless File.directory?(dir) db = File.join(dir, "#{@key}.json") data = if File.exist?(db) - JSON.parse(IO.read(db)) - else - [] - end + JSON.parse(IO.read(db)) + else + [] + end date = @date.utc output = {} @data.each do |jk, journal| output[jk] = {} journal.answers.each do |k, v| if v.is_a? Hash v.each do |key, value| result = case value.class.to_s - when /Weather/ - case key - when /current$/ - { - 'temp' => value.data[:temp], - 'condition' => value.data[:current_condition] - } - when /moon(_?phase)?$/ - { - 'phase' => value.data[:moon_phase] - } - else - { - 'high' => value.data[:high], - 'low' => value.data[:low], - 'condition' => value.data[:condition], - 'moon_phase' => value.data[:moon_phase] - } - end - else - value - end + when /Weather/ + case key + when /current$/ + { + "temp" => value.data[:temp], + "condition" => value.data[:current_condition] + } + when /moon(_?phase)?$/ + { + "phase" => value.data[:moon_phase] + } + else + { + "high" => value.data[:high], + "low" => value.data[:low], + "condition" => value.data[:condition], + "moon_phase" => value.data[:moon_phase] + } + end + else + value + end if jk == k output[jk][key] = result else output[jk][k] ||= {} output[jk][k][key] = result @@ -295,20 +294,20 @@ else output[jk][k] = v end end end - data << { 'date' => date, 'data' => output } + data << {"date" => date, "data" => output} data.map! do |d| { - 'date' => d['date'].is_a?(String) ? Time.parse(d['date']) : d['date'], - 'data' => d['data'] + "date" => d["date"].is_a?(String) ? Time.parse(d["date"]) : d["date"], + "data" => d["data"] } end - data.sort_by! { |e| e['date'] } + data.sort_by! { |e| e["date"] } - File.open(db, 'w') { |f| f.puts JSON.pretty_generate(data) } + File.open(db, "w") { |f| f.puts JSON.pretty_generate(data) } Journal.notify "{bg}Saved {bw}#{db}" end end end