Never-ending Pumpkin Mulch

    Proto
    TypeScript icon, indicating that this package has built-in type declarations

    1.1.4 • Public • Published

    Proto

    Proto is an extensible program-code-template for creating objects

    stability build status dependencies status devDependency status Codacy Badge License

    NPM

    What you need to build your own Proto

    In order to build Proto, you need to have the latest node/npm and git 1.7 or later. Earlier versions might work, but are not supported.

    For Windows, you have to download and install git and node.

    OS X users should install git.

    Linux/BSD users should use their appropriate package managers to install git and node, or build from source if you swing that way. Easy-peasy.

    How to build your own Proto

    Clone a copy of the main Proto git repo by running:

    git clone git://github.com/adriancmiranda/Proto.git

    Enter the Proto directory and run the install script and the build script:

    cd Proto && npm i && npm run build

    The built version of Proto will be put in the dist/ subdirectory, along with the minified copy and associated map file.

    Get Started

    Installation

    Links to CDN

    Use this URL for dev/testing

    <script src="https://rawgit.com/adriancmiranda/Proto/master/dist/Proto.js"></script>

    Use this URL in production

    <script src="https://cdn.rawgit.com/adriancmiranda/Proto/master/dist/Proto.min.js"></script>

    via JSPM

    jspm install adriancmiranda/Proto

    via Bower

    bower install adriancmiranda/Proto

    via NPM

    npm i -D Proto

    via Component

    component install adriancmiranda/Proto

    Node/Browserify/Webpack

    var Proto = require('Proto');

    Usage

     
    var Ninja = Proto.extends({
        // Objects doesn't affect implementations.
        defaults:{
            ninjateste:'**'
        },
        kill:function(flush){
            console.log('kill '+ flush);
            flush && this.flush();
        }
    });
     
    var Human = Proto.extends({
        constructor:function(){
            console.log('i r human', this.$protoID);
            this.super();
            this.option();
        }
    });
     
    var ChuckNorris = Human.extends({
        defaults:{
            skills:'ninja'
        },
        implements:[Ninja],
        constructor:function(){
            console.log('i r badass and.. ', this.$protoID);
            this.super();
            this.kill('with thumb');
        },
        rise:3
    });
     
    var Goku = ChuckNorris.extends({
        defaults:{
            superpowers:['unknown']
        },
        constructor:function(){
            console.log('Hello! I\'m goku and.. ', this.$protoID);
            this.super();
        },
        rise:function(){ // override rise property
            console.log('wait for', this.super(), 'days...'); // super returns rise property from superclass
            return this.super();
        }
    });
     
    var chuck = new ChuckNorris();
    chuck.kill('again!');
    console.log('chuck:', chuck instanceof Proto); // true
    console.log('chuck:', chuck instanceof Ninja); // false
    console.log('chuck:', chuck instanceof Human); // true
    console.log('chuck:', chuck instanceof ChuckNorris); // true
    console.log('chuck.options:', chuck.options);
    console.log('chuck:', chuck);
     
    var goku = new Goku();
    goku.rise();
    console.log('goku:', goku);
     

    Sample

    See this usage here. You'll need open the browser console to see him in action.

    A real world sample

    plnkr

    License

    MIT

    Install

    npm i Proto

    DownloadsWeekly Downloads

    2

    Version

    1.1.4

    License

    MIT

    Last publish

    Collaborators

    • adriancmiranda