KingPlaceholder

<img src=“https://secure.travis-ci.org/salesking/king_placeholder.png?branch=master” alt=“Build Status” />

This gem was extracted from SalesKing, where it does 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.

Usage

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

TODO

This gems still relies on gem king_views with king_format, for money, date formatting. We will outsource king_format into its own gem and remove more Rails and SalesKing internal dependencies.

Installation

Add this line to your application’s Gemfile:

gem 'king_placeholder'

Or install it yourself as:

$ gem install king_placeholder

Contributing

  1. Fork it

  2. Create your feature branch (‘git checkout -b my-new-feature`)

  3. Commit your changes (‘git commit -am ’Added some feature’‘)

  4. Push to the branch (‘git push origin my-new-feature`)

  5. Create new Pull Request