Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lawitschka/galao
ActiveSupport-like core class extensions for Javascript/Coffeescript
https://github.com/lawitschka/galao
Last synced: 7 days ago
JSON representation
ActiveSupport-like core class extensions for Javascript/Coffeescript
- Host: GitHub
- URL: https://github.com/lawitschka/galao
- Owner: lawitschka
- License: mit
- Created: 2015-01-16T10:30:33.000Z (about 10 years ago)
- Default Branch: develop
- Last Pushed: 2015-05-28T14:55:16.000Z (over 9 years ago)
- Last Synced: 2025-01-11T06:00:37.391Z (13 days ago)
- Language: CoffeeScript
- Size: 436 KB
- Stars: 0
- Watchers: 2
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
[![Version][version-img]][version-url]
![Node version](https://img.shields.io/node/v/galao.svg)
[![Build Status][travis-img]][travis-url]
![Downloads](https://img.shields.io/npm/dm/galao.svg)
![License](https://img.shields.io/npm/l/galao.svg)[version-img]: https://img.shields.io/npm/v/galao.svg
[version-url]: https://www.npmjs.com/package/galao
[travis-img]: https://img.shields.io/travis/lawitschka/galao.svg
[travis-url]: https://travis-ci.org/lawitschka/galao# Galao
This Node.js package provides a ActiveSupport-flavoured Javascript core object
extensions. A detailed list of features can be found below.This project is work in progress and will grow in size continually when I feel
the need to add certain functions. See "Contributing" if you miss any
functionality, I'm always happy to merge your enhancements in!## Usage
### Node.JS
Simple require _galao_ in your application and it will be accessible from
anywhere in your app:```
require 'galao'
```### Browser
There is a browser version in the _lib_ directory. Download the file from Github
or require locally from your _node_modules_ directory.**Caveats:** The browser treats numbers differently than Node.JS. A number
directly followed by a dot is interpreted as a decimal number without a decimal
value and thus results in an exception. To avoid this exception and still use
the number functions, bracket the number:```coffeescript
5.minutes()
=> Exception(5).minutes()
=> All good!
```## Methods
### Array::compact()
Returns a new array without any _null_ or _undefined_ elements.
```coffeescript
coffee> [1, 2, 3, null].compact()
[ 1, 2, 3 ]
coffee> [1, 2, 3, undefined].compact()
[ 1, 2, 3 ]
```### Array::find()
Returns the first element of the array matching the callback condition.
```coffeescript
coffee> [{foo:1}, {foo:2}, {foo:3}].find (elem, index, array) -> elem.foo==2
{ foo: 2 }
coffee> [{foo:1}, {foo:2}, {foo:3}].find (elem, index, array) -> elem.foo==20
null
```### Number::seconds()
Interpret given number as seconds and return value in milliseconds.
```coffeescript
coffee> 10.seconds()
10000
```This function (and its related functions _minutes()_, _hours()_, etc.) becomes
very useful for specifying timeouts and intervals:```coffeescript
setTimeout ->
console.log 'Timeout ended'
, 5.seconds()
```There is also a singular version of this method simply for syntactical sugar.
Instead of writing `1.minutes()`, which is syntactically incorrect, one can also
write `1.minute()`.### Number::minutes()
Interpret given number as minutes and return value in milliseconds.
```coffeescript
coffee> 2.minutes()
120000
```### Number::hours()
Interpret given number as hours and return value in milliseconds.
```coffeescript
coffee> 2.hours()
7200000
```### Number::days()
Interpret given number as days and return value in milliseconds.
```coffeescript
coffee> 2.days()
172800000
```### Number::even()
Checks whether the number is even or not.
```coffeescript
coffee> 5.even()
false
coffee> 6.even()
true
```### Number::odd()
Checks whether the number is odd or not.
```coffeescript
coffee> 5.odd()
true
coffee> 6.odd()
false
```### String::capitalize()
Capitalize first letter in string, remaining letters will stay untouched.
```coffeescript
coffee> "test".capitalize()
'Test'
coffee> "tesT".capitalize()
'TesT'
```### String::startsWith(prefix)
Returns `true` if the string starts with the given prefix.
```coffeescript
coffee> "foo".startsWith 'f'
true
coffee> "foo".startsWith 'b'
false
```### String::endsWith(prefix)
Returns `true` if the string ends with the given prefix.
```coffeescript
coffee> "foo".endsWith 'o'
true
coffee> "foo".endsWith 'f'
false
```### String::repeat(n)
Repeats the string `n` times.
```coffeescript
coffee> "foo".repeat 2
'foofoo'
```## Contributing
Feel free to send me pull requests on Github, contributions are always welcome!