diff --git a/lib/agenda_pdf.rb b/lib/agenda_pdf.rb index 0f961b0..d5794df 100644 --- a/lib/agenda_pdf.rb +++ b/lib/agenda_pdf.rb @@ -10,9 +10,6 @@ module AgendaPdf def self.execute(argv) options = OptionsParser.new - PdfGenerator.new(options.path) do - text 'hello world' - text argv.to_s - end + PdfGenerator.generate_month(options.month, path: options.path) end end diff --git a/lib/agenda_pdf/options_parser.rb b/lib/agenda_pdf/options_parser.rb index 917089c..8e5e7e1 100644 --- a/lib/agenda_pdf/options_parser.rb +++ b/lib/agenda_pdf/options_parser.rb @@ -17,7 +17,7 @@ class OptionsParser end def month - @options[:month] || DateTime.now.month + @options[:month] || DateTime.now end def verbose @@ -30,8 +30,8 @@ class OptionsParser OptionParser.new do |opts| opts.banner = "Usage: agenda_pdf [options]" - opts.on("-m", "--month", "Generates a pdf for current month") do |v| - @options[:month] = DateTime.parse(v) rescue DateTime.now.month + opts.on("-mMONTH", "--month=MONTH", "Generates a pdf for given month (ex: 2021-02-01)") do |v| + @options[:month] = DateTime.parse(v) rescue DateTime.now end opts.on("-o", "--path", "The output file path") do |v| diff --git a/lib/agenda_pdf/pdf_generator.rb b/lib/agenda_pdf/pdf_generator.rb index 04d5edb..cb5b3b9 100644 --- a/lib/agenda_pdf/pdf_generator.rb +++ b/lib/agenda_pdf/pdf_generator.rb @@ -5,11 +5,30 @@ class PdfGenerator < Prawn::Document super() initialize_document - instance_eval &block + instance_eval(&block) finalize_document(path) end + class << self + def generate_month(datetime, path:) + month = datetime.month + year = datetime.year + + start_date = DateTime.new(year, month) + end_date = start_date.next_month + + new(path) do + (start_date..end_date).each do |day| + text day.year.to_s + text day.strftime('%b') + text day.strftime('%a %d') + start_new_page unless day == end_date + end + end + end + end + protected def initialize_document; end