Fluent JavaScript Stringable (Laravel Inspired)

Fluent JavaScript Stringable Package

Project Goals

[x] Fluent

[x] Stringable

[x] Simplified

Tinkerable Demo

Laravel JS Str

“Laravel’s Illumina…


This content originally appeared on DEV Community and was authored by Clean Code Studio

Fluent JavaScript Stringable Package

Version Travis PRs Welcome Code Pen Maintenance dependencies

Project Goals

  • [x] Fluent
  • [x] Stringable
  • [x] Simplified

Tinkerable Demo

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) - Clean Code Studio Packages


This content originally appeared on DEV Community and was authored by Clean Code Studio


Print Share Comment Cite Upload Translate Updates
APA

Clean Code Studio | Sciencx (2021-08-07T23:49:16+00:00) Fluent JavaScript Stringable (Laravel Inspired). Retrieved from https://www.scien.cx/2021/08/07/fluent-javascript-stringable-laravel-inspired/

MLA
" » Fluent JavaScript Stringable (Laravel Inspired)." Clean Code Studio | Sciencx - Saturday August 7, 2021, https://www.scien.cx/2021/08/07/fluent-javascript-stringable-laravel-inspired/
HARVARD
Clean Code Studio | Sciencx Saturday August 7, 2021 » Fluent JavaScript Stringable (Laravel Inspired)., viewed ,<https://www.scien.cx/2021/08/07/fluent-javascript-stringable-laravel-inspired/>
VANCOUVER
Clean Code Studio | Sciencx - » Fluent JavaScript Stringable (Laravel Inspired). [Internet]. [Accessed ]. Available from: https://www.scien.cx/2021/08/07/fluent-javascript-stringable-laravel-inspired/
CHICAGO
" » Fluent JavaScript Stringable (Laravel Inspired)." Clean Code Studio | Sciencx - Accessed . https://www.scien.cx/2021/08/07/fluent-javascript-stringable-laravel-inspired/
IEEE
" » Fluent JavaScript Stringable (Laravel Inspired)." Clean Code Studio | Sciencx [Online]. Available: https://www.scien.cx/2021/08/07/fluent-javascript-stringable-laravel-inspired/. [Accessed: ]
rf:citation
» Fluent JavaScript Stringable (Laravel Inspired) | Clean Code Studio | Sciencx | https://www.scien.cx/2021/08/07/fluent-javascript-stringable-laravel-inspired/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.