Project

slugity

0.0
No commit activity in last 3 years
No release in over 3 years
Yet another slugging gem, convert a string to a slug with the option for custom mappings.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

Description

Yet another slugging gem, convert a string to a slug with the option for custom mappings.

Build Status Code Climate


Installation

gem install slugity

or with bundler

gem 'slugity'

Ruby Support

Slugity is tested against and supports:

  • 2.1.x
  • 2.0.0
  • 1.9.3
  • rubinius 2.2

Use

To use Slugity, require it and then include the module where needed. So:

require 'slugity'
include Slugity

slugity("one + two = three")
# => "one-plus-two-equals-three"

To include the to_slug method on the String class

require 'slugity/extend_string'

"one + two = three".to_slug
# => "one-plus-two-equals-three"

There is also a Slugity::Convert module that has class methods for each if you don't want to polute any modules with extra methods, so:

require 'slugity'
Slugity::Convert.slug 'one + two'
# => 'one-plus-two'

Custom Matchers

The default matcher set is currently small, but with custom matchers you can extend it or write a new set from the ground up.

View the full set here or view a sample of the matched symbols.

default: {
  /\s|\// => '-',
  /\~|\~/ => '-',
  /\_/ => '_',
  /\&/ => 'and',
  /\+/ => 'plus',
  /\=/ => 'equals',
  /℡/ => 'tel',
  /™/ => 'tm',
  /℠/ => 'sm',
  /²/ => '2',
  /³/ => '3'
}

Lets say we want to use the default matchers, but we want exclamation marks to become 'omg'

Slugity::Matchers.add :omg, true, {
  /\!/ => "omg"
}

We created a new matcher named :omg, told it to extend from the default matcher, and then added a matcher for the exclamation mark. To use it, we then tell the slugity or to_slug method to use our new matcher.

slugity( "woot!", :omg )
# => "wootomg"

"woot!".to_slug(:omg)
# => "wootomg"

Non-Slug Matching

Slugity is also good for manipulating strings that aren't destined to be slugs, such as strings in json. To do this though we'll need to use a different method included with Slugity, stringity. It operates just as slugity except that it doesn't escape unrecognized characters.

string = %q{ a "quote" \ or so }
stringity(string, :json_string)
# => "a \"quote\" \\ or so"

Examples

require 'slugity'
include Slugity

slugity "hello world"
# => hello-world

slugity "one & one"
# => one-and-one
require 'slugity/extend_string'

"hello world".to_slug
# => hello-world

"one & one".to_slug
# => one-and-one

Testing

$ bundle install
# => installs the testing gems

$ rake
# => runs the specs

Contributing

If there is any thing you'd like to contribute or fix, please:

  • Fork the repo
  • Add tests for any new functionality
  • Make your changes
  • Verify all existing tests work properly
  • Make a pull request

License

The slugity gem is Copyright 2013 Steven Sloan, distributed under the MIT License.