Skip to content

Ellipsis DSL for node, construct something like a1,a2, ..., an

License

Notifications You must be signed in to change notification settings

junyulah/cl-ellipsis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cl-ellipsis

Ellipsis DSL for node, construct something like a1,a2, ..., an

Build Status Coverage Status

install

npm i cl-ellipsis --save

usage

expand number list

Expand a list by writing ellipsis.

  • normaly

1, 2, ..., 5 => 1, 2, 3, 4, 5

2, ..., 5 => 2, 3, 4, 5

2, 4, ..., 7 => 2, 4, 6, 7

  • only consider at most two elements before ellipsis

-10, 1, 2, ..., 5 => -10, 1, 2, 3, 4, 5

-10, 2, 4, ..., 7 => -10, 2, 4, 6, 7

  • code example
let pattern = require('cl-ellipsis');
let expand = pattern.expand;

let t1 = expand([1, 2, 3, '...', 9]); 
console.log(t1);// [1, 2, 3, 4, 5, 6, 7, 8, 9]

let t2 = expand([1, 4, 2, '...', -3]);
console.log(t2);// [1, 4, 2, 0, -2, -3]
  • you can use more than one ellipsises

You can use more than one ellipsises in one array, the ellipsises will be reduced one by one.

4, 6, ..., 9, ..., 12 => 4, 6, 8, 9, ..., 12 => 4, 6, 8, 9, 10, 11, 12

code example

let pattern = require('cl-ellipsis');
let expand = pattern.expand;

let t1 = expand([4, 6, '...', 9, '...', 12]); 
console.log(t1);// [4, 6, 8, 9, 10, 11, 12]
  • you can just use string instead of array
let pattern = require('cl-ellipsis');

let ret = expand('1 2 ... 6');
console.log(ret); // [1, 2, 3, 4, 5, 6]
  • you can mix array
let pattern = require('cl-ellipsis');
let expand = pattern.expand;

let t1 = expand(['a', null, 6, '...', 9]); 
console.log(t1);// ['a', null, 7, 8, 9]

expand array

It's almost the same with number list, but point out which array. See the code:

let pattern = require('cl-ellipsis');
let expand = pattern.expand;

let A = [3, 5, 2, 9, 0, 20, 38, -1, -20];
let ret = expand([-1, tagList([2, 4, '...', 7], A), 9]);
console.log(ret); // [-1, 2, 0, 38, -1, 9]

reduce

  • example
let pattern = require('cl-ellipsis');

let E = pattern.E;

let add = (a, b) => a + b;

let ret = E(add, [1, 2, 4, '...', 9]);
console.log(ret); // 30

In the code, E(add, [1, 2, 4, '...', 9]) means 1 + 2 + 4 + ... + 9

E(add, [1, 2, 4, '...', 9]), first, expand [1, 2, 4, '...', 9], then use add operation on the list.

About

Ellipsis DSL for node, construct something like a1,a2, ..., an

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published