laravel-js-str

1.0.6 • Public • Published

Version Travis PRs Welcome Code Pen Maintenance dependencies npm license

Project Goals


  • Fluent
  • Stringable
  • Simplified

Tinkerable Demo


Code Pen Example


Laravel JS Str


"Laravel's Illuminate\Str & Illuminate\Stringify Including Str.of() In Javascript"


Installation


NPM

npm install --save-dev laravel-js-str

Yarn

yarn add laravel-js-str --save

CDN

<script src='https://unpkg.com/laravel-js-str@latest/build/index.min.js'></script>

Str


Documentation For Each String Method Points To Laravel. Javascript examples are below, Laravel docs will specify what each method specifically does. Replace Str::method() with Str.() when using this package

const { Str } = require('laravel-js-str');
 
let slice = Str.after('This is my name', 'This is');
// ' my name'
const { Str } = require('laravel-js-str');
 
let slice = Str.afterLast('App\Http\Controllers\Controller', '\\');
// 'Controller'
const { Str } = require('laravel-js-str');
 
let slice = Str.ascii('û');
// 'u'    
const { Str } = require('laravel-js-str');
 
let slice = Str.before('This is my name', 'my name');
// 'This is '
const { Str } = require('laravel-js-str');
 
let slice = Str.beforeLast('This is my name', 'is');
// 'This '
const { Str } = require('laravel-js-str');
 
let slice = Str.between('This is my name', 'This', 'name');
// ' is my '
const { Str } = require('laravel-js-str');
 
let converted = Str.camel('foo_bar');
// fooBar
const { Str } = require('laravel-js-str');
 
let contains = Str.contains('This is my name', 'my');
// true
const { Str } = require('laravel-js-str');
 
let contains = Str.contains('This is my name', ['my', 'foo']);
// true
const { Str } = require('laravel-js-str');
 
let containsAll = Str.containsAll('This is my name', ['my', 'name']);
// true
const { Str } = require('laravel-js-str');
 
let result = Str.endsWith('This is my name', 'name');
// true
const { Str } = require('laravel-js-str');
 
let result = Str.endsWith('This is my name', ['name', 'foo']);
// true 
 
result = Str.endsWith('This is my name', ['this', 'foo']);
// false
const { Str } = require('laravel-js-str');
 
let adjusted = Str.finish('this/string', '/');
// this/string/ 
 
adjusted = Str.finish('this/string/', '/');
// this/string/
const { Str } = require('laravel-js-str');
 
let matches = Str.is('foo*', 'foobar');
// true 
 
matches = Str.is('baz*', 'foobar');
 
// false

isAscii is experimental, not confident it works in all scenarios

const { Str } = require('laravel-js-str');
 
let isAscii = Str.isAscii('Taylor');
// true 
 
isAscii = Str.isAscii('ü');
 
// false
const { Str } = require('laravel-js-str');
 
let isUuid = Str.isUuid('a0a2a2d2-0b87-4a18-83f2-2529882be2de');
// true 
 
isUuid = Str.isUuid('laravel');
 
// false
const { Str } = require('laravel-js-str');
 
let converted = Str.kebab('fooBar');
// foo-bar
const { Str } = require('laravel-js-str');
 
let length = Str.length('Laravel');
// 7
const { Str } = require('laravel-js-str');
 
let truncated = Str.limit('The quick brown fox jumps over the lazy dog', 0);
// The quick brown fox...
const { Str } = require('laravel-js-str');
 
let truncated = Str.limit('The quick brown fox jumps over the lazy dog', 0,  '(...)');
// The quick brown fox (...)
const { Str } = require('laravel-js-str');
 
let converted = Str.lower('LARAVEL');
// laravel

Plural Package Used

const { Str } = require('laravel-js-str');
 
let plural = Str.plural('car');
// cars 
 
plural = Str.plural('child');
// children

Plural Package Used

const { Str } = require('laravel-js-str');
 
let plural = Str.plural('child');
// children 
 
plural = Str.plural('child');
// child
const { Str } = require('laravel-js-str');
 
let random = Str.random(40);
const { Str } = require('laravel-js-str');
 
let string = 'The event will take place between ? and ?';
let replaced = Str.replaceArray(['?', '8:30', '9:00'], string);
// The event will take place between 8:30 and 9:00
const { Str } = require('laravel-js-str');
 
let replaced = Str.replaceFirst('the', 'a', 'the quick brown fox jumps over the lazy dog');
// a quick brown fox jumps over the lazy dog
const { Str } = require('laravel-js-str');
 
let replaced = Str.replaceLast('the', 'a', 'the quick brown fox jumps over the lazy dog');
// the quick brown fox jumps over a lazy dog
const { Str } = require('laravel-js-str');
 
let singular = Str.singular('cars');
// car 
 
singular = Str.singular('children');
// child
const { Str } = require('laravel-js-str');
 
let slug = Str.slug('Laravel 5 Framework', '-');
// laravel-5-framework
const { Str } = require('laravel-js-str');
 
let converted = Str.snake('fooBar');
// foo_bar
const { Str } = require('laravel-js-str');
 
let adjusted = Str.start('this/string', '/');
// /this/string 
 
adjusted = Str.start('/this/string', '/');
// /this/string
const { Str } = require('laravel-js-str');
 
let result = Str.startsWith('This is my name', This');
// true
const { Str } = require('laravel-js-str');
 
let converted = Str.studly('foo_bar');
// FooBar
const { Str } = require('laravel-js-str');
 
let converted = Str.substr('The Laravel Framework', , );
// Laravel
const { Str } = require('laravel-js-str');
 
let converted = Str.title('a nice title uses the correct case');
// A Nice Title Uses The Correct Case
const { Str } = require('laravel-js-str');
 
let string = Str.ucfirst('foo bar');
// Foo bar
const { Str } = require('laravel-js-str');
 
let string = Str.upper('laravel');
// LARAVEL
const { Str } = require('laravel-js-str');
 
return Str.uuid();
const { Str } = require('laravel-js-str');
 
Str.words('Perfectly balanced, as all things should be.', 3, '>>>');
 
// Perfectly balanced, as >>>
const { Str } = require('laravel-js-str');
 
let slice = Str.of('This is my name').after('This is');
// ' my name'
const { Str } = require('laravel-js-str');
 
let slice = Str.of('App\Http\Controllers\Controller').afterLast('\\');
// 'Controller'
const { Str } = require('laravel-js-str');
 
let string = Str.of('Taylor').append(' Otwell');
// 'Taylor Otwell'

Experimental Method, not sure this works in all cases

const { Str } = require('laravel-js-str');
 
let string = Str.of('ü').ascii();
// 'u'
const { Str } = require('laravel-js-str');
 
let string = Str.of('/foo/bar/baz').basename();
// 'baz'
const { Str } = require('laravel-js-str');
 
let string = Str.of('/foo/bar/baz.jpg').basename('.jpg');
// 'baz'
const { Str } = require('laravel-js-str');
 
let slice = Str.of('This is my name').before('my name');
// 'This is '
const { Str } = require('laravel-js-str');
 
let slice = Str.of('This is my name').beforeLast('is');
// 'This '
const { Str } = require('laravel-js-str');
 
let converted = Str.of('foo_bar').camel();
// fooBar
const { Str } = require('laravel-js-str');
 
let contains = Str.of('This is my name').contains('my');
// true
const { Str } = require('laravel-js-str');
 
let contains = Str.of('This is my name').contains(['my', foo']);
// true
const { Str } = require('laravel-js-str');
 
let containsAll = Str.of('This is my name').containsAll(['my', 'name']);
// true
const { Str } = require('laravel-js-str');
 
let string = Str.of('/foo/bar/baz').dirname();
// '/foo/bar'
const { Str } = require('laravel-js-str');
 
let string = Str.of('/foo/bar/baz').dirname(2);
// '/foo'
const { Str } = require('laravel-js-str');
 
let result = Str.of('This is my name').endsWith('name');
// true
const { Str } = require('laravel-js-str');
 
let result = Str.of('This is my name').endsWith(['name', 'foo']);
// true 
 
result = Str.of('This is my name').endsWith(['this', 'foo']);
// false
const { Str } = require('laravel-js-str');
 
let result = Str.of('Laravel').exactly('Laravel');
// true

Collect.js

const { Str } = require('laravel-js-str');
 
let collection = Str.of('foo bar baz').explode(' ');
// collect(['foo', 'bar', 'baz'])
const { Str } = require('laravel-js-str');
 
let adjusted = Str.of('this/string').finish('/');
// this/string/ 
 
adjusted = Str.of('this/string/').finish('/');
 
// this/string/
const { Str } = require('laravel-js-str');
 
let matches = Str.of('foobar').is('foo*');
// true 
 
matches = Str.of('foobar').is('baz*');
 
// false

isAscii is Experimental, not positive its correct in all cases

const { Str } = require('laravel-js-str');
 
let result = Str.of('Taylor').isAscii();
// true 
 
result = Str.of('ü').isAcii();
 
// false
const { Str } = require('laravel-js-str');
 
let result = Str.of('  ').trim().isEmpty();
// true 
 
result = Str.of('Laravel').trim().isEmpty();
 
// false
const { Str } = require('laravel-js-str');
 
let result = Str.of('  ').trim().isNotEmpty();
// false 
 
result = Str.of('Laravel').trim().isNotEmpty();
 
// true
const { Str } = require('laravel-js-str');
 
let converted = Str.of('fooBar').kebab();
// foo-bar
const { Str } = require('laravel-js-str');
 
let length = Str.of('Laravel').length();
// 7
const { Str } = require('laravel-js-str');
 
let truncated = Str.of('The quick brown fox jumps over the lazy dog').limit(20);
// The quick brown fox...
const { Str } = require('laravel-js-str');
 
let truncated = Str.of('The quick brown fox jumps over the lazy dog').limit(20, ' (...)');
// The quick brown fox (...)
const { Str } = require('laravel-js-str');
 
let result = Str.of('LARAVEL').lower();
// 'laravel'
const { Str } = require('laravel-js-str');
 
let string = Str.of('  Laravel  ').ltrim();
// 'Laravel  ' 
 
string = Str.of('/Laravel/').ltrim('/');
 
// 'Laravel/'
const { Str } = require('laravel-js-str');
 
let result = Str.of('foo bar').match('/bar/');
// 'bar' 
 
result = Str.of('foo bar').match('/foo (.*)/');
 
// 'bar'

Match All Coming Soon

const { Str } = require('laravel-js-str');

let result = Str.of('bar foo bar').matchAll('/bar/');
// collect(['bar', 'bar'])
const { Str } = require('laravel-js-str');

let result = Str.of('bar fun bar fly').matchAll('/f(\w*)/');
// collect(['un', 'ly']);


const { Str } = require('laravel-js-str');
 
let plural = Str.of('car').plural();
// cars 
 
plural = Str.of('child').plural();
 
// children
const { Str } = require('laravel-js-str');
 
let plural = Str.of('child').plural(2);
// children 
 
plural = Str.of('child').plural(1);
 
// child
const { Str } = require('laravel-js-str');
 
let string = Str.of('Framework').prepend('Laravel ');
// Laravel Framework
const { Str } = require('laravel-js-str');
 
let replaced = Str.of('Laravel 6.x').replace('6.x', '7.x');
// Laravel 7.x
const { Str } = require('laravel-js-str');
 
let string = 'The event will take place between ? and ?';
let replaced = Str.of(string).replaceArray('?', ['8:30', '9:00']);
// The event will take place between 8:30 and 9:00
const { Str } = require('laravel-js-str');
 
let replaced = Str.of('the quick brown fox jumps over the lazy dog').replaceFirst('the', 'a');
// a quick brown fox jumps over the lazy dog
const { Str } = require('laravel-js-str');
 
let replaced = Str.of('the quick brown fox jumps over the lazy dog').replaceLast('the', 'a');
// the quick brown fox jumps over a lazy dog
const { Str } = require('laravel-js-str');
 
let replaced = Str.of('(+1) 501-555-1000').replace('/[^A-Za-z0-9]++/', '');
 
//'15015551000'
 
const { Str } = require('laravel-js-str');
 
let string = Str.of('  Laravel  ').rtrim();
// '  Laravel' 
 
string = Str.of('/Laravel/').rtrim('/');
 
// '/Laravel'
const { Str } = require('laravel-js-str');
 
let singular = Str.of('cars').singular();
// car 
 
singular = Str.of('children').singular();
 
// child
const { Str } = require('laravel-js-str');
 
let slug = Str.of('Laravel Framework').slug('-');
// laravel-framework
const { Str } = require('laravel-js-str');
 
let converted = Str.of('fooBar').snake();
// foo_bar
const { Str } = require('laravel-js-str');
 
let segments = Str.of('one, two, three').split('/[\s, +/');
// collect(["one", "two", "three"])
const { Str } = require('laravel-js-str');
 
let adjusted = Str.of('this/string').start('/');
// /this/string 
 
adjusted = Str.of('/this/string').start('/');
 
// /this/string
const { Str } = require('laravel-js-str');
 
let result = Str.of('This is my name').startsWith('This');
// true
const { Str } = require('laravel-js-str');
 
let converted = Str.of('foo_bar').studly();
// FooBar
const { Str } = require('laravel-js-str');
 
let string = Str.of('Laravel Framework').substr(8);
// Framework 
 
string = Str.of('Laravel Framework').substr(8, );
 
// Frame
const { Str } = require('laravel-js-str');
 
let converted = Str.of('a nice title uses the correct case').title();
// A Nice Title Uses The Correct Case
const { Str } = require('laravel-js-str');
 
let string = Str.of('  Laravel  ').trim();
// 'Laravel' 
 
string = Str.of('/Laravel/').trim('/');
 
// 'Laravel'
const { Str } = require('laravel-js-str');
 
let string = Str.of('foo bar').ucfirst();
// Foo bar
const { Str } = require('laravel-js-str');
 
let adjusted = Str.of('laravel').upper();
// LARAVEL
const { Str } = require('laravel-js-str');
 
let string = Str.of('  ').whenEmpty(function(string) {  
    return string.trim().prepend('Laravel');
});
 
// 'Laravel'
const { Str } = require('laravel-js-str');
 
let string = Str.of('Perfectly balanced, as all things should be.').words(3,  '>>>');
// Perfectly balanced, as >>>

Playground Examples


Curious, but not 100% on whether this is what you're looking for?

The most powerful method is Str.of('example'), allowing us to fluently chain Str methods together

Example

let { Str } = require('laravel-js-str');
 
let home = 'https://planets.com';
let title = 'hello mars, a cool world for you to visit, maybe?';
 
let article = Str.of(title).replaceFirst(',', '')
    .after('hello')
    .before('for you')
    .trim()
    .start('/')
    .finish('/')
    .kebab();
 
let resource = home + article
 
// resource value: 
// 'https://planets.com/mars-a-cool-world/'
//
// article value:
// Stringable: { value: 'https://planets.com/mars-a-cool-world-to-visit', replace, before, after, etc... }
//

Utilization


The most powerful method is Str.of('example'), allowing us to fluently chain Str methods together

Example

let { Str } = require('laravel-js-str');
 
let home = 'https://planets.com';
let title = 'hello mars, a cool world for you to visit, maybe?';
 
let article = Str.of(title).replaceFirst(',', '')
    .after('hello')
    .before('for you')
    .trim()
    .start('/')
    .finish('/')
    .kebab();
 
let resource = home + article
 
// resource value: 
// 'https://planets.com/mars-a-cool-world/'
//
// article value:
// Stringable: { value: 'https://planets.com/mars-a-cool-world-to-visit', replace, before, after, etc... }
//

Contribute


PRs are welcomed to this project. If you want to improve this package, add functionality or improve the docs please feel free to submit a PR.


Security Vulnerabilities


If you discover a security vulnerability within Clean Code Studio Packages Or Specifically within laravel-js-str, please send an e-mail to Zachary Horton via zak@cleancode.studio. All security vulnerabilities will be promptly addressed.


Change Log



Release 1.0.0


  • Initial Release

Versioning


Semantic Versioning

Code Status Stage Rule Example Version
First release New Product Start with 1.0.0 1.0.0
Backward compatible bug fixes Patch Release Increment the third digit 1.0.1
Backward compatible new features Minor Release Increment the middle digit and reset last digit to zero 1.1.0
Changes that break backward compatibility Major Release Increment the first digit and reset middle and last digits to zero 2.0.0

License


MIT © Zachary Horton (Clean Code Studio)

Package Sidebar

Install

npm i laravel-js-str

Weekly Downloads

80

Version

1.0.6

License

MIT

Unpacked Size

314 kB

Total Files

35

Last publish

Collaborators

  • zhorton999