class AsanaSnapshot::SnapshotGenerator
Attributes
file[R]
project[R]
project_id[R]
snapshot_directory[R]
Public Class Methods
new(tasks, group:, project_id:)
click to toggle source
# File lib/asana_snapshot/snapshot_generator.rb, line 7 def initialize(tasks, group:, project_id:) @project_id = project_id @project = compile tasks directory_name = group.downcase.gsub(' ', '_') @snapshot_directory = "#{AsanaSnapshot.configuration.base_dir}/snapshots/#{directory_name}" file_name = project[:name].gsub(' ', '_').gsub('&', 'and') @file = "#{snapshot_directory}/#{file_name}.md" end
Public Instance Methods
write()
click to toggle source
# File lib/asana_snapshot/snapshot_generator.rb, line 18 def write setup_directory File.open(file, "w") do |f| f.puts '## Stats' f.puts "Complete: #{project[:stats][:complete]}" f.puts "Incomplete: #{project[:stats][:incomplete]} (#{project[:stats][:unassigned]} unassigned)" f.puts '' f.puts '## Tasks' project[:tasks].each do |task| f.puts "[#{task.completed? ? 'X' : ' '}] #{task}" end end AsanaSnapshot.persistence_store.mark_for_save file end
Private Instance Methods
compile(tasks)
click to toggle source
# File lib/asana_snapshot/snapshot_generator.rb, line 44 def compile(tasks) tasks.sort_by(&:id).reduce({ name: nil, tasks: [], stats: { complete: 0, incomplete: 0, unassigned: 0 } }) do |memo, task| task.project_columns.reject do |project_column| project_column.project_id.to_i != project_id.to_i end.each do |project_column| memo[:name] ||= project_column.project_name memo[:tasks].push task memo[:stats][:complete]+=1 if task.completed? memo[:stats][:incomplete]+=1 unless task.completed? memo[:stats][:unassigned]+=1 if task.assignee_name.nil? end memo end end
setup_directory()
click to toggle source
# File lib/asana_snapshot/snapshot_generator.rb, line 38 def setup_directory return if ::File.directory? snapshot_directory ::FileUtils.mkdir_p(snapshot_directory) ::FileUtils.chmod 0755, snapshot_directory end