Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Parse placeholders in strings
Ruby
tag: v1.0.2

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
spec
.gitignore
.travis.yml
Gemfile
LICENSE
README.rdoc
Rakefile
king_placeholder.gemspec
placeholder_state.dia

README.rdoc

KingPlaceholder

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: 'a@b.com')
@user.expand_placeholders("Hey [name] your address is [email]")
=> "Hey Schorsch your address is a@b.com"

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

Something went wrong with that request. Please try again.