Skip to content

Tiny internal DSL which allows invocation of different functionality depending on SemVer match.

License

Notifications You must be signed in to change notification settings

mgechev/semver-dsl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

SemVer DSL

A simple internal DSL which allows you to invoke different functionality depending on version match. Used in codelyzer for keeping the code compatible across different versions of the Angular compiler.

Demo

$ npm i semver-dsl --save
import {SemVerDSL} from 'semver-dsl';

const base = () => {};
const elseIf1 = () => {};
const elseIf2 = () => {};
const else = () => console.log('I will be invoked!');

SemVerDSL('3.0.0')
  .gt('3.2.1', base)
  .elseIf.gt('3.0.1', elseIf1)
  .elseIf.between('3.0.1', '3.1.8', elseIf2)
  .else(else);

In the example above will be invoked else.

API

  • SemDSL(version: string) - factory which accepts a version and returns an object.
  • gte(version: string, callback?: Function): ISemContextualDSL - returns an object with elseIf and else properties.
  • lte(version: string, callback?: Function): ISemContextualDSL - returns an object with elseIf and else properties.
  • gt(version: string, callback?: Function): ISemContextualDSL - returns an object with elseIf and else properties.
  • lt(version: string, callback?: Function): ISemContextualDSL - returns an object with elseIf and else properties.
  • eq(version: string, callback?: Function): ISemContextualDSL - returns an object with elseIf and else properties.
  • neq(version: string, callback?: Function): ISemContextualDSL - returns an object with elseIf and else properties.
  • between(v1: string, v2: string, callback?: Function): ISemContextualDSL - returns an object with elseIf properties.
  • elseIf - returns an object of type ISemVerDSL bound to the previous predicate.
  • else - invokes given callback if all of the previous conditions have failed.
export interface ISemVerDSL {
  gte(version: string, callback: Function): ISemContextualDSL;
  lte(version: string, callback: Function): ISemContextualDSL;
  gt(version: string, callback: Function): ISemContextualDSL;
  lt(version: string, callback: Function): ISemContextualDSL;
  eq(version: string, callback: Function): ISemContextualDSL;
  neq(version: string, callback: Function): ISemContextualDSL;
  between(v1: string, v2: string, callback: Function): ISemContextualDSL;
}
export interface ISemVerContextBoundDSL {
  elseIf: ISemVerDSL;
  else(callback: Function): void;
}

License

MIT

About

Tiny internal DSL which allows invocation of different functionality depending on SemVer match.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published