Parse placeholders in strings
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
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 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.

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

  • make placeholder marks: [] brackets configurable

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