Skip to content

jinhucheung/rpictogrify

Repository files navigation

Gem Version Build Status

Rpictogrify

Ruby version of the pictogrify to generate unique pictograms

Avatar

Installation

Add rpictogrify to application's Gemfile:

gem 'rpictogrify'

And then execute:

$ bundle install

Or install it yourself as:

$ gem install rpictogrify

Configuration

Rpictogrify.configure do
  # default theme, one of these themes: avataars_female, avataars_male, male_flat, monsters. default is :monsters
  self.theme      = :monsters
  # pictogram directory. default is 'public/system'
  self.base_path  = 'public/system'
  # register a custome theme with assets. assets see assets/themes
  self.register_theme :custom, assets_path: 'vendor/assets/rpictogrify/themes/custom'
end

Usage

Rpictogrify.generate 'jim.cheung'                          #=> 'public/system/rpictogrify/1/monsters/1313467160.svg'
Rpictogrify.generate 'jim.cheung', theme: :avataars_male   #=> 'public/system/rpictogrify/1/avataars_male/1313467160.svg'
Rpictogrify.generate 'jim.cheung', theme: :custom          #=> 'public/system/rpictogrify/1/custom/1313467160.svg', use custom theme

Controller / View

There is a helper for this, you need to include Rpictogrify::Helper in your controller or helper. e.g. ApplicationHelper

include Rpictogrify::Helper

Then you can use the following methods in views.

rpictogrify_for('jim', theme: :monsters)          #=> 'public/system/rpictogrify/1/monsters/1313467160.svg'
rpictogrify_url('jim')                            #=> '/system/rpictogrify/1/monsters/1313467160.svg'
rpictogrify_tag('jim', html: {class: :avatar})    #=> '<img class="avatar" src="/system/rpictogrify/1/monsters/1313467160.svg" alt="jim" />'
rpictogrify_url_for('public/system/rpictogrify/1/monsters/1313467160.svg') #=> '/system/rpictogrify/1/monsters/1313467160.svg'

Model

You can include Rpictogrify::Extension in your model class. e.g. User model

class User
  include Rpictogrify::Extension

  rpictogrify_on :username, theme: -> { gender == :male ? :avataars_male : :avataars_female }
  # rpictogrify_on :username, theme: :avataars_male
end

Then you have the following methods in user

@user.rpictogrify_path      #=> 'public/system/rpictogrify/1/monsters/1313467160.svg'
@user.rpictogrify_url       #=> '/system/rpictogrify/1/monsters/1313467160.svg'

Contributing

Bug report or pull request are welcome.

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)

Please write unit test with your code if necessary.

License

The gem is available as open source under the terms of the MIT License.