summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorHarald Eilertsen <haraldei@anduin.net>2015-10-04 14:42:15 +0200
committerHarald Eilertsen <haraldei@anduin.net>2015-10-04 14:42:50 +0200
commitd1c061f1aee62c83e21fb5bf7b26901ab8c12af4 (patch)
treeaa223229555efd4225e097dd901f61762af39c98 /lib
parent448380ae81e3dfe182b9092880d4a314b39d034a (diff)
downloadnorsk-urskog-registrations-d1c061f1aee62c83e21fb5bf7b26901ab8c12af4.tar.gz
norsk-urskog-registrations-d1c061f1aee62c83e21fb5bf7b26901ab8c12af4.tar.bz2
norsk-urskog-registrations-d1c061f1aee62c83e21fb5bf7b26901ab8c12af4.zip
Flesh out PDF generation.
Diffstat (limited to 'lib')
-rw-r--r--lib/member.rb4
-rw-r--r--lib/pdf_form.rb68
-rw-r--r--lib/registration.rb7
-rw-r--r--lib/song.rb4
4 files changed, 80 insertions, 3 deletions
diff --git a/lib/member.rb b/lib/member.rb
index c67915a..0fb69b5 100644
--- a/lib/member.rb
+++ b/lib/member.rb
@@ -6,4 +6,8 @@ class Member
@instrument = params['instrument']
@age = params['age'].to_i
end
+
+ def to_s
+ [name, instrument, age].join(', ')
+ end
end
diff --git a/lib/pdf_form.rb b/lib/pdf_form.rb
new file mode 100644
index 0000000..7d0aa93
--- /dev/null
+++ b/lib/pdf_form.rb
@@ -0,0 +1,68 @@
+require 'prawn'
+require 'prawn/measurement_extensions'
+
+class PDFForm
+ def initialize(band)
+ @band = band
+ @document = Prawn::Document.new(:page_size => "A4")
+ end
+
+ def render
+ heading
+
+ field("Bandnavn:", @band.name)
+ field("Hjemsted:", @band.city)
+ field("Webside:", @band.website)
+ field("Plateselskap:", @band.label)
+ field("Kort bio:", @band.short_bio)
+
+ next_line
+ field("Kontaktperson:", @band.contact.name)
+ field("Postadresse:", @band.contact.addr)
+ next_line
+ field("Telefon:", @band.contact.phone)
+ field("Epost:", @band.contact.email)
+
+ next_line
+ field("Medlemmer:", @band.members)
+
+ field("Låter:", @band.songs)
+
+ @document.render_file "#{@band.name}.pdf"
+ end
+
+ private
+
+ def one_line
+ @one_line ||= @document.font_size.inspect.to_f * 1.4
+ end
+
+ def label_width
+ 3.2.cm
+ end
+
+ def heading
+ @document.text "Påmelding til Norsk Urskog 2016", :size => 20
+ end
+
+ def next_line
+ @document.move_down one_line
+ end
+
+ def field(title, value)
+ next_line
+ y_pos = @document.cursor
+ @document.text_box title, :at => [@document.bounds.left, y_pos], :width => label_width, :style => :bold
+
+ if value.class == String
+ @document.text_box value, :at => [label_width, y_pos], :width => @document.bounds.right - label_width
+ elsif value.class == Array
+ value.each do |v|
+ @document.text_box v.to_s, :at => [label_width, y_pos], :width => @document.bounds.right - label_width
+ y_pos -= one_line
+ next_line
+ end
+ end
+
+ end
+end
diff --git a/lib/registration.rb b/lib/registration.rb
index 51c7663..9826f91 100644
--- a/lib/registration.rb
+++ b/lib/registration.rb
@@ -1,4 +1,5 @@
-require 'band'
+require_relative 'band'
+require_relative 'pdf_form'
require 'mail'
def send_registration_emails_for(band)
@@ -13,6 +14,6 @@ def send_registration_emails_for(band)
end
def generate_pdf_for(band)
- Prawn::Document.generate("#{band.name}.pdf") do
- end
+ pdf = PDFForm.new(band)
+ pdf.render
end
diff --git a/lib/song.rb b/lib/song.rb
index c045ed2..e20b5b8 100644
--- a/lib/song.rb
+++ b/lib/song.rb
@@ -8,4 +8,8 @@ class Song
@performers = params['performers']
@notes = params['notes']
end
+
+ def to_s
+ "#{title} (#{time})"
+ end
end