Skip to content

A lightweight module that helps you curry any methods and use them in a pipe and function composition.

License

Notifications You must be signed in to change notification settings

winston0410/curryMethod.js

Repository files navigation

curryMethod.js

Maintainability Test Coverage Known Vulnerabilities Codacy Badge

A lightweight module that helps you curry any methods and use them in a pipe and function composition.

//Curry element.classList.add()
const addClass = curryMethod(1, 'classList.add')
const removeClass = curryMethod(1)('classList.remove')

const element = document.getElementById('test-id')

//Both would work, just like those curried functions provided by Ramda
addClass('first-class')(element)
removeClass('second-class', element)
//These functions is identical with element.classList.add('first-class')

Why do you want to curry methods?

By currying methods, you can easily create partial functions, make it work in a pipe and reuse your code to a greater extent.

Installation

With npm:

npm i curry-method

Or via CDN:

<script defer src="https://unpkg.com/browse/curry-method/dist/index.esm.js"></script>

<script defer src="https://unpkg.com/browse/curry-method/dist/index.cjs.js"></script>

Or directly include the script in you site:

<script defer src="/path/to/your/dir/index.esm.js"></script>

Then in the script where you want to use this library:

import {
  curryMethod
} from 'curry-method'

API Reference

curryMethod(arity, methodPath)(...args)

This function will curry a method and turn it into a function.

arity : Number

Indicate the number of argument to be received by the methods.

Note that you should not count the obj , which is the final argument in with this number

methodPath : String

Indicate the path to access methods. For example classList.add and setAttribute.

...args : Any

Arguments you want to pass to the curried methods. The number of argument should match with arity. The last element should be the object which has the method for you to access.

getArg(indice, fn)(...args)(obj)

This function will make a function return a specific argument, based on the indice.

indice : Number

Indicate the position of argument you want the function to return from the array args

methodPath : String

Indicate the path to access methods. For example classList.add and setAttribute.

...args : Any

Arguments you want to pass to fn

About

A lightweight module that helps you curry any methods and use them in a pipe and function composition.

Resources

License

Stars

Watchers

Forks

Packages

No packages published