Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/tommmyy/ramda-extension

🤘Utility library for functional JavaScript. With ❤️ to Ramda.
https://github.com/tommmyy/ramda-extension

extensions functional-programming pointfree ramda ramda-extension ramda-functions tools toolset utilities utils

Last synced: about 1 month ago
JSON representation

🤘Utility library for functional JavaScript. With ❤️ to Ramda.

Awesome Lists containing this project

README

        



Ramda!


Ramda extension


🤘🤘🤘

Utility library for functional JavaScript.


Library adds utilities functions that are built on the top of marvelous Ramda library.



Play wit Ramda and Ramda-extension in REPL.


See our documentation site.



Github


Apache-2.0



Travis


Downloads


Version

```js
import { cx } from 'ramda-extension';

cx({ box: true, 'box--outline': false }, 'width-100'); // ".box .width-100"
```

## Why to choose ramda-extension over other libraries?

We focus on functional point-free code. Our goal is to keep codebase composed only from ramda functions, not from own code. Basically, we are using only `const` and `ES6 modules` from the JavaScript itself.

We have a few functions with side-effects (like `log` and `trace`) to support better developer's experience in debugging process. It is only for development purpose and it should not be used in production code.

## Installation

```bash
$ yarn add ramda ramda-extension
```
or

```bash
$ npm install ramda ramda-extension
```

## Usage

We support CommonJS and ES modules syntax.

Import function as a named export (not recommended without [treeshaking](https://webpack.js.org/guides/tree-shaking/)):

```js
import { toKebabCase } from 'ramda-extension';
import { flatten } from 'ramda'; // standard ramda function (if needed)

toKebabCase('I wanna eat my kebab.') // "i-wanna-eat-my-kebab"
flatten([1, 2, [3, 4], 5]) // [1, 2, 3, 4, 5]
```
* NOTE: standard ramda functions are still accessed via 'ramda'

Alternatively you can import it separately if your environment doesn't support treeshaking (Sse [babel-plugin-transform-imports](https://www.npmjs.com/package/babel-plugin-transform-imports)):

```js
import toKebabCase from 'ramda-extension/lib/toKebabCase';

toKebabCase('I wanna eat my kebab.') // "i-wanna-eat-my-kebab"
```

If you prefer jQuery-style:

```js
import * as R_ from 'ramda-extension'

R_.toKebabCase('I wanna eat my kebab.') // "i-wanna-eat-my-kebab"
```

_NOTE_: Ramda itself is not part of bundle, you need to add it manually

## CDN
You can use Ramda-extension directly in the browser:

```html

```

## Articles & Resources

- [Why are we not afraid to think functionally with Ramda?](https://medium.com/@tyna.kamenicka/why-are-we-not-afraid-to-think-functionally-with-ramda-fb17f733fde8#c898-5ab767b22b17)

## Contributing

Most of the functions have its own tests and examples in the JS Doc.

Feel free to either contribute yourself or submit an issue if there is a bug or you have an idea for a new extension.

We are open to all ideas and suggestions, feel free to open an issue or a pull request!

See the [contribution guide](https://github.com/tommmyy/ramda-extension/blob/master/CONTRIBUTING.md) for guidelines.

## License

All packages are distributed under the Apache 2.0 license. See the license [here](https://github.com/tommmyy/ramda-extension/blob/master/LICENSE).