functional-style string inflections
Latest commit abad48e Jan 24, 2015 @trek Code fenced 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 binds:

// underscore.js
_.each(['dog','cat','mouse'], fleck.pluralize) == ["dogs", "cats", "mice"]

// jQuery.js
  success: fleck.uncountable


Inflections can be chained using fleck.inflect

fleck.inflect('     posts', 'strip', 'singularize', 'capitalize') == 'Post'