Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
functional-style string inflections
JavaScript
tree: 2892546faf

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
public/javascripts
spec/javascripts
Gemfile
README
Rakefile
package.json

README

`fleck` is a functional styled library for string inflection that doesn't pollute `String.prototype`.

Basic Use
======
All the inflections are stored inside `fleck`.  They are:
  
  // Capitals
  fleck.capitalize('acme') == 'Acme'
  
  // CamelCase and camelCase
  fleck.camelize('border-radius') == 'borderRadius'
  fleck.camelize('border-radius', true) == 'BorderRadius' // alias for upperCamelize
  fleck.upperCamelize('we-the-people') == 'WeThePeople'
  
  // Changes underscores and spaces into dashes
  fleck.dasherize('we_the_people') == 'we-the-people'
  
  // Underscore
  // Converts camelCase, CamelCase, dash-es, and Name::Spaced to underscores
  fleck.underscore("camelCase") == 'camel_case'
  fleck.underscore("CamelCase") == 'camel_case'
  fleck.underscore("dash-es")   == 'dash_es'
  fleck.underscore("Name::Spaced") == 'name_spaced'
  
  // Plurals and Singular, even strange ones
  fleck.pluralize('dog') == 'dogs'
  fleck.pluralize('person') == 'people'
  fleck.pluralize('sheep') == 'sheep'
  fleck.singularize('dogs') == 'dog'
  fleck.singularize('people') == 'person'
  
  // Whitespace stripping
  fleck.strip('    hello!   ') == 'hello!'
  
  // Ordinals
  fleck.ordinalize(4) == "4th"
  fleck.ordinalize("13") == "13th"
  fleck.ordinalize("122") == "122nd"  

Functional Programing
======
`fleck` doesn't contain any unpredictable javascript object orientation. Feel free to combine 
with other functional libraries at will; no new anonymous functions, no silly `bind`s:

  // underscore.js
  _.each(['dog','cat','mouse'], fleck.pluralize) == ["dogs", "cats", "mice"]
  
  // jQuery.js
  $.ajax({
    url:'/data/sync_from_server/new/uncountablewords',
    success: fleck.uncountable
  })

Chaining
======
Inflections can be chained using `fleck.inflect`

    fleck.inflect('     posts', 'strip', 'singularize', 'capitalize') == 'Post'
Something went wrong with that request. Please try again.