Adds #88 - Added Moses Lua module
parent
61c6f1b397
commit
8d676eaec4
|
@ -0,0 +1,133 @@
|
|||
#Version history#
|
||||
|
||||
##1.4.0 (07/14/14)
|
||||
|
||||
###Breaking
|
||||
#### Changes
|
||||
* Aliases are available by default
|
||||
* `_.find` is no longer an alias to `_.detect`
|
||||
* Provided a new implementation of `_.unique`, removed argument `_.isSorted`
|
||||
* `_.isNil` now returns true if arg is nil, an empty string or empty table and false otherwise.
|
||||
* `_.size` now returns 0 for empty args instead of `nil`
|
||||
* `_.unique` no longer accepts `iter` argument to transform original array values.
|
||||
* `_.cycle` argument `n` now defaults to 1.
|
||||
* `_.groupBy` no longer handles `iter` as a string
|
||||
|
||||
#### Renamed
|
||||
* Renamed alias `_.uId` to `_.uid`
|
||||
* Renamed `_.add` to `_.addTop`
|
||||
* Renamed `_.uniq` as alias to `_.unique`
|
||||
* Renamed `_.symmetric_difference` to `_.symmetricDifference`
|
||||
|
||||
#### Removed
|
||||
* Removed `_.paired`
|
||||
|
||||
###Improvements & bugfixes
|
||||
* `_.reduce` now supports an array of booleans
|
||||
* `_.pick` now picks false values
|
||||
* `_.concat` args `i` and `j` defaults explicitely to 1 and array length (for compatibility with LuaJIT)
|
||||
* `_.pop` now takes an optional extra-arg n, to be the number of values to be popped
|
||||
* `_.unshift` now takes an optional extra-arg n, to be the number of values to be retrieved
|
||||
* Moved explicitely `_.toArray` to array functions
|
||||
* `_.functions` accepts an extra-arg to prevent from looking-up for methods in metatables.
|
||||
|
||||
### New functions (and aliases)
|
||||
* Added `_.find`
|
||||
* Added `_.pipe`
|
||||
* Added `_.complement`
|
||||
* Added `_.juxtapose` and alias `_.juxt`
|
||||
* Added `_.isunique` and alias `_.isuniq`
|
||||
* Added `_.rep`
|
||||
* Added `_.interleave`
|
||||
* Added `_.interpose`
|
||||
* Added `_.partition` and alias `_.part`
|
||||
* Added `_.permutation` and alias `_.perm`
|
||||
* Added `_.compare` as alias to `_.isEqual`
|
||||
* Added `_.isIterable`
|
||||
* Added `_.toBoolean`
|
||||
* Added `_.pull` and alias `_.remove`
|
||||
* Added `_.at`
|
||||
|
||||
### New aliases
|
||||
* Added `_.xor` as alias to `_.symmetricDifference`
|
||||
|
||||
##1.3.2.1 (04/22/13)
|
||||
Renamed global `MOSES_NO_ALIASES` to global `MOSES_ALIASES`. Aliases are not available by default.
|
||||
|
||||
##1.3.2 (04/19/13)
|
||||
Added `_.import`, export library to context or _G
|
||||
Added `noConflict` option to `_.import`
|
||||
Added `MOSES_NO_ALIASES` option when requiring the library
|
||||
Added `_.symmetric_difference`
|
||||
Added `_.eachi`
|
||||
Added `_.isInteger`
|
||||
Added `_.cycle`
|
||||
Added `_.count`
|
||||
Added `_.countf`
|
||||
Added `_.chunk` (inspired from Ruby's Enumerable [#chunk](http://ruby-doc.org/core-2.0/Enumerable.html#method-i-chunk))
|
||||
Added `_.chop` as alias to `_.removeRange`
|
||||
Added `_.skip` as alias to `_.last`
|
||||
Added `_.diff` as alias to `_.difference`
|
||||
Added `_.symdiff` as alias to `_.symmetric_difference`
|
||||
Added `_.forEachi` as alias to `_.eachi`
|
||||
Added `_.loop` as alias to `_.cycle`
|
||||
Renamed `_.pairs` to `_.paired`
|
||||
Removed `_.count` as alias to `_.range`
|
||||
Changed `_.difference behaviour`, now takes up to two arrays as args
|
||||
Fixed internal inconsistencies with aliases, should not be used internally with regards to `MOSES_NO_ALIASES` option.
|
||||
Fixed `_.each` implementation, should not return anything
|
||||
|
||||
##1.3.1 (04/12/13)
|
||||
* Added chaining interface
|
||||
* Renamed `_.isObject` to `_.isTable`
|
||||
* Added `_.tap`, `_.chain`, `_()` and `_.value`
|
||||
* Added `_.findWhere`
|
||||
* Added `_.contains`
|
||||
* _.functions no longer takes an output table
|
||||
* Changed _.isArray behaviour, returns true only for real Lua arrays
|
||||
* Updated specs
|
||||
* Updated docs and samples
|
||||
|
||||
##1.3.0 (11/12/12)
|
||||
* Removed _.iterate (slower than pairs, ipairs)
|
||||
* Added _.identity
|
||||
* Removed _.curry (was more like a closure, will provide a proper implementation later)
|
||||
* Removed _.iter_to_array
|
||||
* Most of all functions rewritten
|
||||
* _.import/_.mixin now imports library functions to the global env.
|
||||
* Added type checking functions as object functions
|
||||
* Added new functions and aliases : Moses has 85 unique functions, 117 counting aliases.
|
||||
* Added HTML docs
|
||||
* Added Specs
|
||||
* Added samples
|
||||
|
||||
##1.2.1 (08/20/12)
|
||||
* Added `_.takeWhile` (as alias to `_.selectWhile`)
|
||||
* Added `_.dropWhile` and `_.rejectWhile` (as alias)
|
||||
* Updated Moses_Lib_Test.lua
|
||||
* Updated documentation
|
||||
|
||||
##1.2 (08/19/12)
|
||||
* Added `_.selectWhile`
|
||||
* Added `_.mapReduce` and `_.mapr` (as alias)
|
||||
* Added `_.mapReduceRight` and `_.maprr` (as alias)
|
||||
* Added `_.bindn`
|
||||
* Added `_.appendLists`
|
||||
* Updated Moses_Lib_Test.lua
|
||||
* Updated documentation
|
||||
|
||||
##1.1 (08/04/12)
|
||||
* Removed `_.contains` as alias to `_.include`
|
||||
* Added `_.removeRange` (as Array function)
|
||||
* Added `_.sameKeys` and `_.contains` (as Collection functions)
|
||||
* Added `_.bind` (as Utility function)
|
||||
* Updated Moses_Lib_Test.lua
|
||||
* Updated documentation
|
||||
|
||||
##1.0 (08/02/12)
|
||||
* Added `_.append`, `_.invert`, `_.import`, `_.template`, `_.curry`
|
||||
* Updated Moses_Lib_Test.lua
|
||||
* Updated documentation
|
||||
|
||||
##0.1 (07/24/12)
|
||||
* Initial Release
|
|
@ -0,0 +1,20 @@
|
|||
Copyright (c) 2012-2014 Roland Yonaba
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included
|
||||
in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@ -0,0 +1,69 @@
|
|||
[![Build Status](https://travis-ci.org/Yonaba/Moses.png)](https://travis-ci.org/Yonaba/Moses)
|
||||
[![Coverage Status](https://coveralls.io/repos/Yonaba/Moses/badge.png?branch=master)](https://coveralls.io/r/Yonaba/Moses?branch=master)
|
||||
[![License](http://img.shields.io/badge/Licence-MIT-brightgreen.svg)](LICENSE)
|
||||
|
||||
A Lua utility-belt library for [functional programming](http://en.wikipedia.org/wiki/Functional_programming). It complements the built-in __Lua table library__, making easier
|
||||
operations on arrays, lists, collections.<br/>
|
||||
|
||||
__Moses__ was deeply inspired by [Underscore.js](http://documentcloud.github.com/underscore/).
|
||||
|
||||
##Download & Installation
|
||||
###Bash
|
||||
|
||||
```bash
|
||||
git clone git://github.com/Yonaba/Moses.git
|
||||
````
|
||||
|
||||
###Archive
|
||||
* __zip__: [latest stable 1.4.0](http://github.com/Yonaba/Moses/archive/Moses-1.4.0-1.zip) | [current](http://github.com/Yonaba/Moses/archive/master.zip) | [all](http://github.com/Yonaba/Moses/tags)
|
||||
* __tarball__: [latest stable 1.4.0](http://github.com/Yonaba/Moses/archive/Moses-1.4.0-1.tar.gz) | [current](http://github.com/Yonaba/Moses/archive/master.tar.gz) | [all](http://github.com/Yonaba/Moses/tags)
|
||||
|
||||
###LuaRocks
|
||||
```
|
||||
luarocks install moses
|
||||
````
|
||||
|
||||
###MoonRocks
|
||||
|
||||
```bash
|
||||
moonrocks install moses
|
||||
````
|
||||
|
||||
or :
|
||||
|
||||
```bash
|
||||
luarocks install --server=http://rocks.moonscript.org/manifests/Yonaba moses
|
||||
````
|
||||
|
||||
##Usage##
|
||||
Put the file [moses.lua](https://github.com/Yonaba/Moses/blob/master/moses.lua) inside your project folder and call it using *require* command.
|
||||
|
||||
*Note:* the full source [moses.lua](https://github.com/Yonaba/Moses/blob/master/moses.lua) is quite heavy (~59 kiB). You can alternatively use the [minified version](https://github.com/Yonaba/Moses/blob/master/moses_min.lua) (~17.5 kiB).
|
||||
|
||||
##Tutorial##
|
||||
Find a complete set of code examples in [tutorial.md](https://github.com/Yonaba/Moses/blob/master/doc/tutorial.md)
|
||||
|
||||
##Documentation##
|
||||
* Available in HTML-format for download : see [doc](https://github.com/Yonaba/Moses/blob/master/doc).
|
||||
* Read it in your browser : see [online doc](http://yonaba.github.io/Moses/doc)
|
||||
|
||||
##Credits and Acknowledgement##
|
||||
* [Jeremy Ashkenas](https://github.com/jashkenas), for the amazing [Underscore.js](http://documentcloud.github.com/underscore/)
|
||||
* [Marcus Irven](http://mirven.github.com/underscore.lua/)'s and [JTArchie](https://github.com/jtarchie/underscore-lua)'s 1-to-1 ports that also inspired this.
|
||||
* [LDoc](https://github.com/stevedonovan/ldoc/) (from *Steve Donovan*) used to generate the current HTML documentation.
|
||||
|
||||
##Specification
|
||||
Spec tests have been included.<br/>
|
||||
Run them using [Telescope](https://github.com/norman/telescope) with the following command from the root folder:
|
||||
|
||||
```bash
|
||||
tsc -f spec/*
|
||||
```
|
||||
|
||||
##License##
|
||||
This work is under [MIT-LICENSE](http://www.opensource.org/licenses/mit-license.php)<br/>
|
||||
Copyright (c) 2012-2014 Roland Yonaba. <br/>
|
||||
See [LICENSE](LICENSE).
|
||||
|
||||
[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/Yonaba/moses/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,306 @@
|
|||
/* BEGIN RESET
|
||||
|
||||
Copyright (c) 2010, Yahoo! Inc. All rights reserved.
|
||||
Code licensed under the BSD License:
|
||||
http://developer.yahoo.com/yui/license.html
|
||||
version: 2.8.2r1
|
||||
*/
|
||||
html {
|
||||
color: #000;
|
||||
background: #FFF;
|
||||
}
|
||||
|
||||
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
fieldset,img {
|
||||
border: 0;
|
||||
}
|
||||
address,caption,cite,code,dfn,em,strong,th,var,optgroup {
|
||||
font-style: inherit;
|
||||
font-weight: inherit;
|
||||
}
|
||||
del,ins {
|
||||
text-decoration: none;
|
||||
}
|
||||
li {
|
||||
list-style: disc;
|
||||
margin-left: 20px;
|
||||
}
|
||||
caption,th {
|
||||
text-align: left;
|
||||
}
|
||||
h1,h2,h3,h4,h5,h6 {
|
||||
font-size: 100%;
|
||||
font-weight: bold;
|
||||
}
|
||||
q:before,q:after {
|
||||
content: '';
|
||||
}
|
||||
abbr,acronym {
|
||||
border: 0;
|
||||
font-variant: normal;
|
||||
}
|
||||
sup {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
sub {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
legend {
|
||||
color: #000;
|
||||
}
|
||||
input,button,textarea,select,optgroup,option {
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
font-style: inherit;
|
||||
font-weight: inherit;
|
||||
}
|
||||
input,button,textarea,select {*font-size:100%;
|
||||
}
|
||||
/* END RESET */
|
||||
|
||||
body {
|
||||
margin-left: 1em;
|
||||
margin-right: 1em;
|
||||
font-family: arial, helvetica, geneva, sans-serif;
|
||||
background-color: #ffffff; margin: 0px;
|
||||
}
|
||||
|
||||
code, tt { font-family: monospace; font-size: 1.1em; }
|
||||
span.parameter { font-family:monospace; }
|
||||
span.parameter:after { content:":"; }
|
||||
span.types:before { content:"("; }
|
||||
span.types:after { content:")"; }
|
||||
.type { font-weight: bold; font-style:italic }
|
||||
|
||||
body, p, td, th { font-size: .95em; line-height: 1.2em;}
|
||||
|
||||
p, ul { margin: 10px 0 0 0px;}
|
||||
|
||||
strong { font-weight: bold;}
|
||||
|
||||
em { font-style: italic;}
|
||||
|
||||
h1 {
|
||||
font-size: 1.5em;
|
||||
margin: 0 0 20px 0;
|
||||
}
|
||||
h2, h3, h4 { margin: 15px 0 10px 0; }
|
||||
h2 { font-size: 1.25em; }
|
||||
h3 { font-size: 1.15em; }
|
||||
h4 { font-size: 1.06em; }
|
||||
|
||||
a:link { font-weight: normal; color: #C147C1; text-decoration: none; }
|
||||
a:visited { font-weight: normal; color: #C147C1; text-decoration: none; }
|
||||
a:link:hover { text-decoration: underline; }
|
||||
|
||||
hr {
|
||||
color:#cccccc;
|
||||
background: #00007f;
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
blockquote { margin-left: 3em; }
|
||||
|
||||
ul { list-style-type: disc; }
|
||||
|
||||
p.name {
|
||||
font-family: "Andale Mono", monospace;
|
||||
padding-top: 1em;
|
||||
}
|
||||
|
||||
pre.example {
|
||||
background-color: rgb(245, 245, 245);
|
||||
border: 1px solid silver;
|
||||
padding: 10px;
|
||||
margin: 10px 0 10px 0;
|
||||
font-family: "Andale Mono", monospace;
|
||||
font-size: .85em;
|
||||
}
|
||||
|
||||
pre {
|
||||
background-color: rgb(245, 245, 245);
|
||||
border: 1px solid silver;
|
||||
padding: 10px;
|
||||
margin: 10px 0 10px 0;
|
||||
overflow: auto;
|
||||
font-family: "Andale Mono", monospace;
|
||||
}
|
||||
|
||||
|
||||
table.index { border: 1px #00007f; }
|
||||
table.index td { text-align: left; vertical-align: top; }
|
||||
|
||||
#container {
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
|
||||
#product {
|
||||
text-align: center;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
#product big {
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
#main {
|
||||
background: #5C3671 url(http://non2d.github.io/img/bg.png);
|
||||
background-position-x: center;
|
||||
}
|
||||
|
||||
#navigation {
|
||||
float: left;
|
||||
width: 14em;
|
||||
vertical-align: top;
|
||||
overflow: visible;
|
||||
color: white;
|
||||
}
|
||||
|
||||
#navigation h2, #content h2 {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#navigation h1 {
|
||||
padding-left:0.4em;
|
||||
}
|
||||
|
||||
#navigation h2 {
|
||||
font-size:1.1em;
|
||||
padding:0.2em;
|
||||
}
|
||||
|
||||
#navigation ul
|
||||
{
|
||||
font-size:1em;
|
||||
list-style-type: none;
|
||||
margin: 1px 1px 10px 1px;
|
||||
}
|
||||
|
||||
#navigation li {
|
||||
text-indent: -1em;
|
||||
display: block;
|
||||
margin: 3px 0px 0px 22px;
|
||||
}
|
||||
|
||||
#navigation li li a {
|
||||
margin: 0px 3px 0px -1em;
|
||||
}
|
||||
|
||||
#content {
|
||||
margin-left: 14em;
|
||||
padding: 1em;
|
||||
width: 700px;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
#about {
|
||||
clear: both;
|
||||
padding: 5px;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
@media print {
|
||||
body {
|
||||
font: 12pt "Times New Roman", "TimeNR", Times, serif;
|
||||
}
|
||||
a { font-weight: bold; color: #004080; text-decoration: underline; }
|
||||
|
||||
#main {
|
||||
background-color: #ffffff;
|
||||
border-left: 0px;
|
||||
}
|
||||
|
||||
#container {
|
||||
margin-left: 2%;
|
||||
margin-right: 2%;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
#content {
|
||||
padding: 1em;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
#navigation {
|
||||
display: none;
|
||||
}
|
||||
pre.example {
|
||||
font-family: "Andale Mono", monospace;
|
||||
font-size: 10pt;
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
}
|
||||
|
||||
table.module_list {
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: #cccccc;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
table.module_list td {
|
||||
border-width: 1px;
|
||||
padding: 3px;
|
||||
border-style: solid;
|
||||
border-color: #cccccc;
|
||||
}
|
||||
table.module_list td.name { background-color: #f0f0f0; min-width: 200px; }
|
||||
table.module_list td.summary { width: 100%; }
|
||||
|
||||
|
||||
table.function_list {
|
||||
margin-top: 30px;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: #cccccc;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
table.function_list td {
|
||||
border-width: 1px;
|
||||
padding: 3px;
|
||||
border-style: solid;
|
||||
border-color: #cccccc;
|
||||
}
|
||||
table.function_list td.name { background-color: #f0f0f0; min-width: 200px; }
|
||||
table.function_list td.summary { width: 100%; }
|
||||
|
||||
ul.nowrap {
|
||||
overflow:auto;
|
||||
white-space:nowrap;
|
||||
}
|
||||
|
||||
dl.table dt, dl.function dt {border-top: 1px solid #ccc; padding-top: 1em;}
|
||||
dl.table dd, dl.function dd {padding-bottom: 1em; margin: 10px 0 0 20px;}
|
||||
dl.table h3, dl.function h3 {font-size: .95em;}
|
||||
|
||||
/* stop sublists from having initial vertical space */
|
||||
ul ul { margin-top: 0px; }
|
||||
ol ul { margin-top: 0px; }
|
||||
ol ol { margin-top: 0px; }
|
||||
ul ol { margin-top: 0px; }
|
||||
|
||||
/* make the target distinct; helps when we're navigating to a function */
|
||||
a:target + * {
|
||||
background-color: #FF9;
|
||||
}
|
||||
|
||||
/* styles for prettification of source */
|
||||
pre .comment { color: #558817; }
|
||||
pre .constant { color: #a8660d; }
|
||||
pre .escape { color: #844631; }
|
||||
pre .keyword { color: #aa5050; font-weight: bold; }
|
||||
pre .library { color: #0e7c6b; }
|
||||
pre .marker { color: #512b1e; background: #fedc56; font-weight: bold; }
|
||||
pre .string { color: #8080ff; }
|
||||
pre .number { color: #f8660d; }
|
||||
pre .operator { color: #2239a8; font-weight: bold; }
|
||||
pre .preprocessor, pre .prepro { color: #a33243; }
|
||||
pre .global { color: #800080; }
|
||||
pre .prompt { color: #558817; }
|
||||
pre .url { color: #272fc2; text-decoration: underline; }
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue