Socket
Book a DemoInstallSign in
Socket

ifless

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ifless

Get rid of if statements in your code by using convenient api

latest
Source
npmnpm
Version
1.2.0
Version published
Maintainers
1
Created
Source

ifless NPM version

Get rid of if statements in your code by using convenient api

Install

npm install ifless

or

yarn add ifless

Usage

Ifless

import Ifless from 'ifless';

const ifless = new Ifless();
const result = ifless.when(() => false, 'foo').when(() => true, 'bar').result;
console.log(result); // bar

IflessNumber

import {IflessNumber} from 'ifless';

const iflessNumber = new IflessNumber(12);
const result = iflessNumber.whenLt(7, 'bar').whenGt(10, 'baz').result;
console.log(result); // baz

IflessString

import {IflessString} from 'ifless';

const iflessString = new IflessString('O. Henry - The Remnants of the Code');
const result = iflessString
	.whenStartsWith('Mark Twain', 'Author is Mark Twain')
	.whenStartsWith('O. Henry', 'Author is O. Henry')
	.whenStartsWith('Ernest Hemingway', 'Author is Ernest Hemingway').result;
console.log(result); // Author is O. Henry

// Reset previously performed conditions
// and run another ones without creating a new instance
const result2 = iflessString
	.reset()
	.whenOneOf(['lar', 'dor', 'qin'], 'one of [lar, dor, qin]')
	.whenIncludes('Remnants', 'includes Remnants')
	.whenStartsWith('Mark Twain', 'Starts with "Mark Twain"').result;
console.log(result2); // includes Remnants

const result3 = iflessString
	.reset()
	.whenEndsWith('Parade', 'Ends with "Parade"')
	.whenEndsWith('Code', 'Ends with "Code"')
	.whenEndsWith('Unfulfilment', 'Ends with "Unfulfilment"').result;

const result3 = iflessString
	.reset()
    .registerFn('containsHenry', (subject) => subject.includes('Henry'))
    .registerFn('endsWithCode', (subject) => subject.endsWith('Code'))
    .execute()
    .whenPassed('contains Henry and ends with Code')
    .result()
console.log(result2); // contains Henry and ends with Code

IflessObject

import {IflessObject} from 'ifless';

const iflessObject = new IflessObject({foo: 'bar'});
const result = iflessObject
	.when(source => source.foo === 'qux', 'foo is qux')
	.when(source => source.foo === 'bar', 'foo is bar')
	.when(source => source.foo === 'corge', 'foo is corge').result;
console.log(result); // foo is bar

// the same with simplfied notation
const iflessObject2 = new IflessObject({foo: 'bar'});
const result2 = iflessObject2
	.whenPathEq('foo', 'qux', 'foo is qux')
	.whenPathEq('foo', 'bar', 'foo is bar')
	.whenPathEq('foo', 'corge', 'foo is corge').result;
console.log(result2); // foo is bar

const iflessObject3 = new IflessObject({
	message: 'feat: symbolics keys with added optional to definition, optional tuples',
	author: {
		name: 'ShawnMorreau'
	},
	date: new Date(2023, 6, 25),
});
const occurenceToEmojMapping : any = {
	0: '✨',
	1: '🌟',
	2: '🚀',
};
const result = iflessObject3
	.whenPathSatisfies(
		'message',
		(value: string) => value.startsWith('feat:'),
		'is feature',
	)
	.andWhenPathEq('author.name', 'ShawnMorreau', 'is feature and author is ShawnMorreau')
	.andWhenPathSatisfies('date', (value: Date) => value > new Date(2024, 1, 1), 'is feature and author is ShawnMorreau and after 2024')
	.otherwise('other commit')
	.whenOverResultFn(
		(result: string) => result.includes('is feature'),
		(result) => `${occurenceToEmojMapping[(result.match(/and/ig) || []).length]} ${result}`)
	.result;
console.log(result); // 🌟 is feature and author is ShawnMorreau

const iflessObject4 = new IflessObject({foo: 'bar', bar: {baz: 'qux'}});
const result3 = iflessObject4
	.whenPathSatisfies(
		'foo',
		value => value.startsWith('ro'),
		'subject.foo starts with "ro"',
	)
	.whenHasKey('notExistingKey', 'has notExistingKey')
	.whenPathSatisfies(
		'bar.baz',
		value => value.endsWith('ux'),
		'subject.bar.baz ends with "ux"',
	).result;
console.log(result3); // subject.bar.baz ends with "ux"

Screenshots

IflessString methods

License

MIT © Rushan Alyautdinov

Keywords

ifless

FAQs

Package last updated on 17 Feb 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts