Skip to content

Latest commit

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

pattern-js

Fluent pattern matching for CoffeeScript and JavaScript.

Implementation of pattern-js is inspired by Functional C#.

Usage

Start with pattern() and end with matching().

Examples

Constant and Variable Pattern

CoffeeScript

pattern=require'pattern-js'todo=pattern()
.value("Mon", ->go work)
.value("Tue", ->go relax)
.value("Thu", ->go icefishing)
.when(
(val) -> val is"Fri"or val is"Sat"
(day) ->if day is bingoDay
go bingo
go dancing)
.value("Sun", ->go church)
.any(->go work)
.matching()
todo"Tue"# go relax

JavaScript

varpattern=require('pattern-js');varwork=1,relax=2,iceFishing=3,bingo=4,dancing=5;varbingoDay="Fri";vargo=function(day){console.log(day);};vartodo=pattern().value("Mon",function(){go(work);}).value("Tue",function(){go(relax);}).value("Thu",function(){go(iceFishing);}).when(function(val){returnval==="Fri"||val==="Sat";},function(day){if(day===bingoDay){go(bingo);go(dancing);}}).value("Sun",function(){go(church);}).any(function(){go(work);}).matching();todo("Fri")// usage

Matching Multiple Elements

CoffeeScript

detectZeroTuple=pattern()
.value([0, 0], ->console.log"Both zero")
.some(
[0, undefined]
(var1, var2) ->console.log"First value is 0 in (0, #{ var2 })")
.some(
[undefined, 0]
(var1, var2) ->console.log"Second value is 0 in (#{ var1 }, 0)")
.any(->console.log"Both nonzero.")
.matching()
detectZeroTuple0, 0detectZeroTuple1, 0detectZeroTuple0, 10detectZeroTuple10, 15

JavaScript

vardetectZeroTuple=pattern().value([0,0],function(){console.log("Both zero");}).some([0,undefined],function(var1,var2){console.log("First value is 0 in (0, "+var2+")");}).some([,0],function(var1,var2){console.log("Second value is 0 in ("+var1+", 0)");}).any(function(){console.log("Both nonzero.");}).matching();detectZeroTuple(0,0);detectZeroTuple(1,0);detectZeroTuple(0,10);detectZeroTuple(10,15);

About

Fluent pattern matching for CoffeeScript and JavaScript.

Resources

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages