This gem does simple [placeholders] substitution for user supplied strings in Email-, Text- and Export-Templates.
Placeholders are declared in each class and afterwards any strings containing [placeholders] can be parsed in the scope of the model.
Parsing is done by a simple statemachine using regex for placeholder detection.
Define the available methods in your class with ‘has_placeholders’
class User include KingPlaceholder has_many :comments has_one :company has_placeholders :name, :email end class Comment include KingPlaceholder has_placeholders :text end
Use placeholder names in square brackets:
@user = User.new( name: "Schorsch", email: '[email protected]') @user.expand_placeholders("Hey [name] your address is [email]") => "Hey Schorsch your address is [email protected]"
Handle collections
@user.expand_placeholders("[comments][text][/comments]") => All comment texts @user.expand_placeholders("[comments.1.text]") => First comment text
Handle relations
@user.expand_placeholders("[company.name]") => MyCompany
Set a custom formatting method(in format_placeholder) throught which all fields are run, if you have special money or date formatters.
class User include KingPlaceholder has_placeholders :created_at def format_placeholder(field) I18n.l( self.send(field) ) end end
Use callbacks to setup / teardown env variables
class User include KingPlaceholder has_placeholders :name, :email def before_expand_placeholders I18n.locale = self.language end def after_expand_placeholders I18n.locale = nil end end
Also see specs
-
make placeholder marks: [] brackets configurable
Add this line to your application’s Gemfile:
gem 'king_placeholder'
Or install it yourself as:
$ gem install king_placeholder
-
Fork it
-
Create your feature branch (‘git checkout -b my-new-feature`)
-
Commit your changes (‘git commit -am ’Added some feature’‘)
-
Push to the branch (‘git push origin my-new-feature`)
-
Create new Pull Request