Module: MailMerge
- Defined in:
- lib/mail_merge.rb,
lib/mail_merge/version.rb
Constant Summary collapse
- VERSION =
"0.0.5"
Class Method Summary collapse
-
.merge(content, options = {}, merge_fields = [], delimeter = "::", allow_dynamic = false) ⇒ Object
- Performs a mail merge based on the options hash that is passed in Example: MailMerge.merge(content, => @site, :user => @user, [‘::site.name::’, ‘::user.full_name::’]) will search text_block.content and find all instances of ::user.
- and ::site.
- and send the [method] to the associated object Chaining works as well (ex. ::site.organization.name
- yields ‘TST Media’) Supports finding of objects with this syntax: ::[user-1].full_name
-
(calls User.find(1).full_name) - requires allow_dynamic flag to be true.
Class Method Details
.merge(content, options = {}, merge_fields = [], delimeter = "::", allow_dynamic = false) ⇒ Object
Performs a mail merge based on the options hash that is passed in Example: MailMerge.merge(content, => @site, :user => @user, [‘::site.name::’, ‘::user.full_name::’])
- will search text_block.content and find all instances of ::user.
- and ::site.
-
and send the [method] to the associated object
- Chaining works as well (ex. ::site.organization.name
-
yields ‘TST Media’)
- Supports finding of objects with this syntax: ::[user-1].full_name
-
(calls User.find(1).full_name)
-
requires allow_dynamic flag to be true
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/mail_merge.rb', line 9 def self.merge(content, = {}, merge_fields = [], delimeter = "::", allow_dynamic = false) merged = content .keys.each do |key| obj = [key] merged = merged.gsub(/#{delimeter}#{key.to_s}\.[\w|\.]*#{delimeter}/) do |s| if merge_fields.empty? or merge_fields.include?(s) begin call_methods(s, obj) rescue s end else s end end end if allow_dynamic objects = {} merged = merged.gsub(/#{delimeter}\[?\w*(-\d*)?\]?\.[\w|\.]*#{delimeter}/) do |s| x = s[/\[?\w*-\d*\]/].delete('[]') begin unless objects[x] class_name, id = x.split('-') objects[x] = class_name.camelize.constantize.find(id) end call_methods(s, objects[x]) rescue s end end end merged end |