/Inflexible

Primary LanguagePHPOtherNOASSERTION

Inflexible Build Status

Table of contents

  1. Description
  2. Installation
  3. Usage
  4. Available inflectors
  5. Datetime 1. Relative
  6. Number 1. HumanByte 2. Ordinalize 3. Shorten 4. Textualize
  7. String 1. Camelize 2. Denamespace 3. Humanize 4. NamespaceOnly 5. Slugify
  8. Run the test
  9. Contributing
  10. Requirements
  11. Authors
  12. License

Description

Inflexible aims to gather a collection of commonly used Inflectors into a single lib.

Installation

Using Composer, just $ composer require borisguery/inflexible package or:

{
  "require": {
    "borisguery/inflexible": "dev-master"
  }
}

Usage

Available inflectors

Datetime

Relative

Convert a DateTime object or a number of seconds into the most fitted unit:

Inflexible::relativeDatetime(86400);

Returns

array(
    1,
    'day'
)

You may also want to get the relative datetime from a given date:

Inflexible::relativeDatetime(new DateTime('2012-01-10'), new DateTime('2012-01-17'));

Returns

array(
    1,
    'week'
)

The available units are:

  • second
  • minute
  • hour
  • day
  • week
  • month
  • year

Number

HumanByte

Convert bytes to an human readable representation to the most fitted unit:

Inflexible::humanByte(1024);
// 1.00 KB
Inflexible::humanByte(1048576);
// 1.00 MB
Inflexible::humanByte(1073741824);
// 1.00 GB

You may also provided an optional precision as a second argument (default to 2)

Ordinalize

Converts number to its ordinal English form:

Inflexible::ordinalize(1);
// 1st
Inflexible::ordinalize(13);
// 13th
Shorten

Formats a number using the SI units (k, M, G, etc.):

Inflexible::shorten(100);
// array(100, null)
// No units for number < 1000
Inflexible::shorten(1523);
// 1k
Textualize

Returns the textual representation of a number

Inflexible::textualize(1025433);
// One Million, Twenty Five Thousand, Four Hundred and Thirty Three

String

Camelize

Converts a word like "foo_bar" to "FooBar". It also removes non-alphanumeric characters:

Inflexible::camelize('foo_bar');
// FooBar
Denamespace

Returns only the class name

Inflexible::denamespace('\Foo\Bar\Baz');
// Baz
Humanize

Converts CamelCased word and underscore to space to return a readable string:

Inflexible::humanize('foo_bar');
// Foo Bar
Inflexible::humanize('FooBar');
// Foo Bar
NamespaceOnly

Returns the namespace of a fully qualified class name:

Inflexible::namespaceOnly('\Foo\Bar\Baz');
// Foo\Bar
Slugify

Slugify a string:

Inflexible::namespaceOnly('lo\rem ipsum do|or sid amet||| #\`[|\" 10 .');
// lo-rem-ipsum-do-or-sid-amet-10

You may optionally set the separator, a max length or decide to whether lower the case:

Inflexible::slugify(
    'LoRem ipsum do|or sid amet||| #\`[|\" 10 .',
    array(
        'maxlength' => 4,
        'lowercase' => true,
        'separator' => '_'
    )
);
// lore

Run the test

First make sure you have installed all the dependencies, run:

$ composer install --dev

then, run the test from within the root directory:

$ phpunit

Contributing

  1. Take a look at the list of issues.
  2. Fork
  3. Write a test (for either new feature or bug)
  4. Make a PR

Requirements

  • PHP 5.3+

Authors

Boris Guéry - guery.b@gmail.com - http://twitter.com/borisguery - http://borisguery.com

License

Inflexible is licensed under the WTFPL License - see the LICENSE file for details