GithubHelp home page GithubHelp logo

maccha's Introduction

maccha

Pattern matching for js

About name

maccha - fine powder tea. As in case of tea, you could make the pattern fine powder for matching. Also "maccha" (matcha) sounds similarly with "matching"

Short description

Matchable value could be:

  • primitive or wrapper object of primitive
  • array ([1,2,3] or new Array(1,2,3))
  • struct ({a:1, b:2, c:"3"})
  • instance of user class
  • composition entity of last three cases

match takes matchable value and returns a function which takes a sequence of ca$e's.

Each of ca$e takes the pattern as first argument and rest sequence of arguments are guards (additional predicates of matchable value). ca$e returns a function which takes a callback function - it be execute if matching would be successful. ca$e matching execute one by one up to down.

el$e - just default action if none of ca$e's will be successful. If el$e is absent and there is no any successful matching it throws Error.

ANY is just a constant a-la wildcart.

TAIL is another constant. It uses for tail of array for pattern.

Example

match({x:1,y: {z: 2}})(
    ca$e({x:1, y:2, z: ANY}, (obj => obj.z > 10))(obj => "struct with x, y, z and z is more than 10"),
    ca$e([1, 2, TAIL])(arr => "1,2,.... and something else"),
    ca$e({x:1, y: {z: 2}})(obj => "It's very complex object"),
    el$e(any => `It something different`)
)

// "It's very complex object"

maccha's People

Contributors

vial0ft avatar

Watchers

 avatar

maccha's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.