1 | # GPF Library
|
2 | ![GPF Logo](http://arnaudbuchholz.github.io/gpf/gpf_320x200.svg)
|
3 |
|
4 | [![Built with Grunt](https://cdn.gruntjs.com/builtwith.png)](http://gruntjs.com/)
|
5 |
|
6 | A multi-purpose JavaScript library created and maintained by
|
7 | [Arnaud Buchholz](http://gpf-js.blogspot.com/).
|
8 |
|
9 | [![NPM](https://nodei.co/npm/gpf-js.png?downloads=true&&downloadRank=true&stars=true)](https://nodei.co/npm/gpf-js/)
|
10 | [![NPM](https://nodei.co/npm-dl/gpf-js.png?months=3&height=3)](https://nodei.co/npm/gpf-js/)
|
11 |
|
12 | ## Features
|
13 |
|
14 | * Provides a common scripting layer for several hosts
|
15 | ([cscript/wscript](http://technet.microsoft.com/en-us/library/bb490887.aspx),
|
16 | [NodeJS](http://nodejs.org/), [Rhino](https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino),
|
17 | [PhantomJS](http://phantomjs.org/), most *recent* browsers)
|
18 | * Namespace and class system
|
19 | * Interface based
|
20 | * Asynchronous streams
|
21 | * Modularization helper
|
22 | * Self-Tested
|
23 |
|
24 | This library is developed in conjunction with a
|
25 | [blog](http://gpf-js.blogspot.com/) where the concepts and algorithms are
|
26 | documented and explained.
|
27 |
|
28 | ## Metrics
|
29 |
|
30 | This part is automatically updated upon a successful build:
|
31 | * Code coverage is based on NodeJS execution, ignored parts are mostly relevant of other hosts
|
32 | * The [maintainability](https://arnaudbuchholz.github.io/gpf/0.1.5/plato/index.html) is based
|
33 | on [plato evaluation](http://blogs.msdn.com/b/codeanalysis/archive/2007/11/20/
|
34 | maintainability-index-range-and-meaning.aspx)
|
35 |
|
36 | **SME** stands for **s**ource **m**inimal **e**xpectation.
|
37 |
|
38 | Metric name | average | total | SME | comment
|
39 | ------ | ----- | ----- | ----- | -----
|
40 | Statements coverage|100%||90%|*0.64% ignored*
|
41 | Branches coverage|100%||90%|*1.61% ignored*
|
42 | Functions coverage|100%||90%|*1.17% ignored*
|
43 | Maintainability|82.07||70|
|
44 | Number of tests||669||*pending: 0, duration: 545ms*
|
45 | Number of sources||90||
|
46 | Lines of code|96|8652||
|
47 |
|
48 | ## Setup
|
49 |
|
50 | * Clone repository
|
51 | * install [grunt](http://gruntjs.com/)
|
52 | * at the root of the cloned repository: `npm install`, then `grunt`
|
53 |
|
54 | ## Testing
|
55 |
|
56 | See [TESTME.md](https://github.com/ArnaudBuchholz/gpf-js/blob/master/doc/tutorials/TESTME.md)
|
57 |
|
58 | ## Versions
|
59 |
|
60 | Version | Label | Release | Debug | Plato
|
61 | ------ | ----- | ----- | ----- | -----
|
62 | [0.1.5](https://github.com/ArnaudBuchholz/gpf-js/tree/v0.1.5) / [doc](https://arnaudbuchholz.github.io/gpf/0.1.5/doc/index.html) | The new core | [lib](https://arnaudbuchholz.github.io/gpf/0.1.5/gpf.js) / [test](https://arnaudbuchholz.github.io/gpf/test.html?release=0.1.5) | [lib](https://arnaudbuchholz.github.io/gpf/0.1.5/gpf-debug.js) / [test](https://arnaudbuchholz.github.io/gpf/test.html?debug=0.1.5) | [plato](https://arnaudbuchholz.github.io/gpf/0.1.5/plato/index.html)
|
63 | [0.1.6](https://github.com/ArnaudBuchholz/gpf-js/tree/v0.1.6) / [doc](https://arnaudbuchholz.github.io/gpf/0.1.6/doc/index.html) | gpf.define | [lib](https://arnaudbuchholz.github.io/gpf/0.1.6/gpf.js) / [test](https://arnaudbuchholz.github.io/gpf/test.html?release=0.1.6) | [lib](https://arnaudbuchholz.github.io/gpf/0.1.6/gpf-debug.js) / [test](https://arnaudbuchholz.github.io/gpf/test.html?debug=0.1.6) | [plato](https://arnaudbuchholz.github.io/gpf/0.1.6/plato/index.html)
|
64 | [0.1.7](https://github.com/ArnaudBuchholz/gpf-js/tree/v0.1.7) / [doc](https://arnaudbuchholz.github.io/gpf/0.1.7/doc/index.html) | Securing gpf.define | [lib](https://arnaudbuchholz.github.io/gpf/0.1.7/gpf.js) / [test](https://arnaudbuchholz.github.io/gpf/test.html?release=0.1.7) | [lib](https://arnaudbuchholz.github.io/gpf/0.1.7/gpf-debug.js) / [test](https://arnaudbuchholz.github.io/gpf/test.html?debug=0.1.7) | [plato](https://arnaudbuchholz.github.io/gpf/0.1.7/plato/index.html)
|
65 | [0.1.8](https://github.com/ArnaudBuchholz/gpf-js/tree/v0.1.8) / [doc](https://arnaudbuchholz.github.io/gpf/0.1.8/doc/index.html) | Interfaces | [lib](https://arnaudbuchholz.github.io/gpf/0.1.8/gpf.js) / [test](https://arnaudbuchholz.github.io/gpf/test.html?release=0.1.8) | [lib](https://arnaudbuchholz.github.io/gpf/0.1.8/gpf-debug.js) / [test](https://arnaudbuchholz.github.io/gpf/test.html?debug=0.1.8) | [plato](https://arnaudbuchholz.github.io/gpf/0.1.8/plato/index.html)
|
66 | [0.1.9](https://github.com/ArnaudBuchholz/gpf-js/tree/v0.1.9) / [doc](https://arnaudbuchholz.github.io/gpf/0.1.9/doc/index.html) | Records files | [lib](https://arnaudbuchholz.github.io/gpf/0.1.9/gpf.js) / [test](https://arnaudbuchholz.github.io/gpf/test.html?release=0.1.9) | [lib](https://arnaudbuchholz.github.io/gpf/0.1.9/gpf-debug.js) / [test](https://arnaudbuchholz.github.io/gpf/test.html?debug=0.1.9) | [plato](https://arnaudbuchholz.github.io/gpf/0.1.9/plato/index.html)
|
67 | [0.2.1](https://github.com/ArnaudBuchholz/gpf-js/tree/v0.2.1) / [doc](https://arnaudbuchholz.github.io/gpf/0.2.1/doc/index.html) | Side project support | [lib](https://arnaudbuchholz.github.io/gpf/0.2.1/gpf.js) / [test](https://arnaudbuchholz.github.io/gpf/test.html?release=0.2.1) | [lib](https://arnaudbuchholz.github.io/gpf/0.2.1/gpf-debug.js) / [test](https://arnaudbuchholz.github.io/gpf/test.html?debug=0.2.1) | [plato](https://arnaudbuchholz.github.io/gpf/0.2.1/plato/index.html)
|
68 | [0.2.2](https://github.com/ArnaudBuchholz/gpf-js/tree/v0.2.2) / [doc](https://arnaudbuchholz.github.io/gpf/0.2.2/doc/index.html) | gpf.require | [lib](https://arnaudbuchholz.github.io/gpf/0.2.2/gpf.js) / [test](https://arnaudbuchholz.github.io/gpf/test.html?release=0.2.2) | [lib](https://arnaudbuchholz.github.io/gpf/0.2.2/gpf-debug.js) / [test](https://arnaudbuchholz.github.io/gpf/test.html?debug=0.2.2) | [plato](https://arnaudbuchholz.github.io/gpf/0.2.2/plato/index.html)
|
69 |
|
70 | ## Credits
|
71 |
|
72 | * Code rewriting based on [esprima](http://esprima.org/) and [escodegen](https://github.com/Constellation/escodegen)
|
73 | * Markdown specification inspired from [wikipedia](http://en.wikipedia.org/wiki/Markdown)
|
74 | * UTF-8 encode/decode based on [webtoolkit](http://www.webtoolkit.info/)
|
75 | * Promise/A+ implementation based on [promise-polyfill](https://github.com/taylorhakes/promise-polyfill)
|
76 | * [mocha](http://mochajs.org/) test suite
|
77 | * [istanbul](https://github.com/gotwarlost/istanbul) code coverage tool
|
78 | * JavaScript task runner: [Grunt](http://gruntjs.com/)
|
79 | * Icons from [Hawcons](https://www.iconfinder.com/iconsets/hawcons)
|
80 | * Documentation generated from [jsdoc syntax](http://usejsdoc.org/)
|
81 | with [grunt-jsdoc](https://github.com/krampstudio/grunt-jsdoc)
|
82 | using template from [ink-docstrap](https://www.npmjs.com/package/ink-docstrap)
|