README.md
[![Code Climate](https://codeclimate.com/github/iGEL/smiley.png)](https://codeclimate.com/github/iGEL/smiley)
[![Build Status](https://travis-ci.org/iGEL/smiley.png?branch=master)](https://travis-ci.org/iGEL/smiley)
(Tested: Ruby 2.1.1, 2.0.0, 1.9.3, Rubinius, Jruby)
Smiley
======
This is a small library to pass text emoticons like into cute smiley images your users will like. To be more accurate,
this lib will parse them into `<em class="smiley smiley-grin></em>`, which you can style with css to show the smiley
image. This way, you can use [CSS sprites](http://css-tricks.com/css-sprites/) to make them load faster.
Usage
=====
First, configure the smileys you want to have converted in a yml file. If you use this lib with Ruby on Rails, the
default position for this file is in `config/smileys.yml`.
```yml
cool:
tokens: ':cool: 8-) 8)'
cry:
tokens: ":'( ;( :'-(" # HTML escaped, since we work in the escaped form
grin:
tokens: ':-D :D'
```
You can configure multiple forms for the same smiley. In this example, `:cool:`, `8-)` and `8)` will all produce
the same smiley.
Next, pass your string through `smiley`. If you're inside of Rails, `smiley` will escape html unsafe Strings and
mark the result as html safe. Remember to do it yourself if you use the lib outside of Rails.
Helper:
```ruby
def smileys(str)
Smiley.new.parse(str)
end
```
Haml:
```haml
.post
= smileys("Wow, they're alive :cool: :D")
```
The last step is to setup the CSS, so the images will be displayed.
SCSS:
```scss
.smiley { // All smileys have this class
display: inline-block;
width: 15px;
height: 15px;
background: image-url('smileys/sprite.png');
}
.smiley-cool {
background: image-url('smileys/cool.gif'); // animated
}
.smiley-cry {
background-position: 0 0;
}
.smiley-grin {
width: 20px;
background-position: 0 -15px;
}
```
Configuration
=============
So far, `smiley` has these configuration options:
```ruby
# The prefix for the CSS class, e.g. smiley in smiley-grin, defaults to smiley
Smiley.each_class_prefix = 'icons'
# The CSS class that is added to all smileys, defaults to smiley
Smiley.all_class = 'emoji'
# defaults to :dashed, meaning class names like smiley-big-grin
# :camel-case will generate class names like smileyBigGrin, :snake_case like smiley_big_grin
Smiley.css_class_style = :camel_case
# YAML file with the smiley definition. Default in Rails is config/smileys.yml
# No default if not used with Rails
Smiley.smiley_file = 'data/smileys.yml'
```
License
=======
MIT (see `MIT-LICENSE`)