Class: IAA::BaseForm
- Inherits:
-
Object
- Object
- IAA::BaseForm
- Defined in:
- lib/base_form.rb
Class Method Summary collapse
Instance Method Summary collapse
- #filename ⇒ Object
- #fill_attributes ⇒ Object
- #get_attr(field) ⇒ Object
- #get_full_path(path) ⇒ Object
- #get_mapper_fields(path) ⇒ Object
- #init_pdftk(pdftk_path) ⇒ Object
-
#initialize(pdf_path: nil, pdftk_path: nil) ⇒ BaseForm
constructor
A new instance of BaseForm.
- #load_fields_from_pdf!(pdf_path, pdftk, form_object) ⇒ Object
- #read_field(field_name) ⇒ Object
- #read_fields ⇒ Object
- #save(save_path = 'tmp') ⇒ Object
- #set_attr(field, value) ⇒ Object
Constructor Details
#initialize(pdf_path: nil, pdftk_path: nil) ⇒ BaseForm
Returns a new instance of BaseForm.
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/base_form.rb', line 31 def initialize(pdf_path: nil, pdftk_path: nil) @fields = get_mapper_fields(self.class.mapper_path) @pdftk = init_pdftk(pdftk_path) @save_filename = nil @fill_values = {} load_fields_from_pdf!(pdf_path, @pdftk, self) @pdf_path = get_full_path(pdf_path || self.class.default_pdf_path) @fields.each do |field| self.class.send(:define_method, field['attribute_name']) do get_attr(field['name']) end end @fields.each do |field| self.class.send(:define_method, "#{field['attribute_name']}=") do |argument| set_attr(field['name'], argument) end end end |
Class Method Details
.default_pdf_path ⇒ Object
93 94 95 |
# File 'lib/base_form.rb', line 93 def self.default_pdf_path "lib/pdfs/#{self.form_name}.pdf" end |
.mapper_path ⇒ Object
89 90 91 |
# File 'lib/base_form.rb', line 89 def self.mapper_path "lib/mappings/#{self.form_name}.json" end |
Instance Method Details
#filename ⇒ Object
71 72 73 |
# File 'lib/base_form.rb', line 71 def filename @save_filename end |
#fill_attributes ⇒ Object
67 68 69 |
# File 'lib/base_form.rb', line 67 def fill_attributes @fill_values end |
#get_attr(field) ⇒ Object
79 80 81 |
# File 'lib/base_form.rb', line 79 def get_attr(field) @fill_values[field] end |
#get_full_path(path) ⇒ Object
12 13 14 |
# File 'lib/base_form.rb', line 12 def get_full_path(path) File.(File.join('..', '..', path), __FILE__) end |
#get_mapper_fields(path) ⇒ Object
16 17 18 19 20 |
# File 'lib/base_form.rb', line 16 def get_mapper_fields(path) #full_path = File.expand_path(File.join('..', '..', path), __FILE__) full_path = get_full_path(path) JSON.parse(File.read(full_path)) end |
#init_pdftk(pdftk_path) ⇒ Object
8 9 10 |
# File 'lib/base_form.rb', line 8 def init_pdftk(pdftk_path) PdfForms.new(pdftk_path || Cliver.detect('pdftk')) end |
#load_fields_from_pdf!(pdf_path, pdftk, form_object) ⇒ Object
22 23 24 25 26 27 28 29 |
# File 'lib/base_form.rb', line 22 def load_fields_from_pdf!(pdf_path, pdftk, form_object) return if pdf_path.nil? fields = pdftk.get_fields(pdf_path) fields.each do |field| value = field.value rescue nil form_object.set_attr(field.name, value) end end |
#read_field(field_name) ⇒ Object
63 64 65 |
# File 'lib/base_form.rb', line 63 def read_field(field_name) read_fields.find {|f| f["name"] == field_name}["value"] end |
#read_fields ⇒ Object
52 53 54 55 56 57 58 59 60 61 |
# File 'lib/base_form.rb', line 52 def read_fields @pdftk.get_fields(@pdf_path).map do |field| { "name" => field.name, "options" => field., "type" => field.type, "value" => field.value } end end |
#save(save_path = 'tmp') ⇒ Object
83 84 85 86 87 |
# File 'lib/base_form.rb', line 83 def save(save_path='tmp') filename = "#{save_path}/#{self.class.form_name}_#{Time.now.to_i}.pdf" @pdftk.fill_form @pdf_path, filename, @fill_values @filename = filename end |
#set_attr(field, value) ⇒ Object
75 76 77 |
# File 'lib/base_form.rb', line 75 def set_attr(field, value) @fill_values[field] = value end |