Fluent JavaScript Stringable Package
- [x] Fluent
- [x] Stringable
- [x] Simplified
"Laravel's Illuminate\Str & Illuminate\Stringify Including Str.of() In Javascript"
npm install --save-dev laravel-js-str
yarn add laravel-js-str --save
<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
- Str.after
- Str.afterLast
- Str.ascii
- Str.before
- Str.beforeLast
- Str.between
- Str.contains
- Str.containsAll
- Str.finish
- Str.is
- Str.isAscii
- Str.isUuid
- Str.length
- Str.limit
- Str.lower
- Str.orderedUuid
- Str.plural
- Str.random
- Str.replaceArray
- Str.replaceFirst
- Str.replaceLast
- Str.singular
- Str.slug
- Str.start
- Str.substr
- Str.ucfirst
- Str.upper
- Str.uuid
- Str.words
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
const { Str } = require('laravel-js-str');
let plural = Str.plural('car');
// cars
plural = Str.plural('child');
// children
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
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) - Clean Code Studio Packages
Top comments (1)