Neanderthals Programming Machines
    Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    ipublic

    inflect

    customizable inflections for nodejs

    NOTE: 0.3.2 was accidentally unpublished from the server and npm doesn't allow me to publish it back. Please upgrade to 0.3.3

    Installation

    npm install i

    Usage

    Require the module before using

    var inflect = require('i')();

    All the below api functions can be called directly on a string

    inflect.titleize('messages to store') // === 'Messages To Store'
    'messages to store'.titleize // === 'Messages To Store'

    only if true is passed while initiating

    var inflect = require('i')(true);

    Pluralize

    inflect.pluralize('person'); // === 'people'
    inflect.pluralize('octopus'); // === 'octopi'
    inflect.pluralize('Hat'); // === 'Hats'

    Singularize

    inflect.singularize('people'); // === 'person'
    inflect.singularize('octopi'); // === 'octopus'
    inflect.singularize('Hats'); // === 'Hat'

    Camelize

    inflect.camelize('message_properties'); // === 'MessageProperties'
    inflect.camelize('message_properties', false); // === 'messageProperties'

    Underscore

    inflect.underscore('MessageProperties'); // === 'message_properties'
    inflect.underscore('messageProperties'); // === 'message_properties'

    Humanize

    inflect.humanize('message_id'); // === 'Message'

    Dasherize

    inflect.dasherize('message_properties'); // === 'message-properties'
    inflect.dasherize('Message Properties'); // === 'Message Properties'

    Titleize

    inflect.titleize('message_properties'); // === 'Message Properties'
    inflect.titleize('message properties to keep'); // === 'Message Properties to Keep'

    Demodulize

    inflect.demodulize('Message.Bus.Properties'); // === 'Properties'

    Tableize

    inflect.tableize('MessageBusProperty'); // === 'message_bus_properties'

    Classify

    inflect.classify('message_bus_properties'); // === 'MessageBusProperty'

    Foreign key

    inflect.foreign_key('MessageBusProperty'); // === 'message_bus_property_id'
    inflect.foreign_key('MessageBusProperty', false); // === 'message_bus_propertyid'

    Ordinalize

    inflect.ordinalize( '1' ); // === '1st'

    Custom rules for inflection

    Custom plural

    We can use regexp in any of these custom rules

    inflect.inflections.plural('person', 'guys');
    inflect.pluralize('person'); // === 'guys'
    inflect.singularize('guys'); // === 'guy'

    Custom singular

    inflect.inflections.singular('guys', 'person')
    inflect.singularize('guys'); // === 'person'
    inflect.pluralize('person'); // === 'people'

    Custom irregular

    inflect.inflections.irregular('person', 'guys')
    inflect.pluralize('person'); // === 'guys'
    inflect.singularize('guys'); // === 'person'

    Custom human

    inflect.inflections.human(/^(.*)_cnt$/i, '$1_count');
    inflect.inflections.humanize('jargon_cnt'); // === 'Jargon count'

    Custom uncountable

    inflect.inflections.uncountable('oil')
    inflect.pluralize('oil'); // === 'oil'
    inflect.singularize('oil'); // === 'oil'

    Contributors

    Here is a list of Contributors

    TODO

    • More obscure test cases

    I accept pull requests and guarantee a reply back within a day

    License

    MIT/X11

    Bug Reports

    Report here. Guaranteed reply within a day.

    Contact

    Pavan Kumar Sunkara (pavan.sss1991@gmail.com)

    Follow me on github, twitter

    install

    npm i i

    Downloadsweekly downloads

    534,962

    version

    0.3.6

    license

    none

    repository

    githubgithub

    last publish

    collaborators

    • avatar