extends__

0.0.8 • Public • Published

extends__

Requireable CoffeeScript __extends Build Status

NPM

Install

npm install --save extends__

Mixin syntax

It is possible to inherit from multiple classes - one Base and the rest Mixins. Mixin methods must not call super, and must not extend anything. They should be a simple Interfaces. The Mixin constructor is ignored. It will not be called. Mixins can be fully capable classes with constructors and super calls. The constructors will be called in the order they appear in inheritance list. The superclass constructor will be called first. The super inside mixin methods will got up the mixin's inheritance chain.

CoffeeScript

class Parent then constructor: ->
  (@log ||= []).push 'Parent'
 
class Mixin1 then constructor: ->
  @log.push 'Mixin1'
 
class Mixin2 then constructor: ->
  @log.push 'Mixin2'
 
class MixinParent then constructor: ->
  @log.push 'MixinParent'
 
class MixinChild extends MixinParent then constructor: ->
  super
  @log.push "MixinChild"
 
class Child extends [ParentMixin1MixinChildMixin2]
  constructor: ->
    super
    @log.push "Child"
 
console.log JSON.stringify (new Child).lognull'  '

will yield

[
  "Parent",
  "Mixin1",
  "MixinParent",
  "MixinChild",
  "Mixin2",
  "Child"
]

Use with GULP

CoffeeScript

gulp = require 'gulp'
replace = require 'gulp-replace'
re = /((__)?extends?)\s*=\s*function\(child,\s*parent\)\s*\{.+?return\s*child;\s*\}/
 
gulp.task 'coffee'->
  gulp
    .src [ './source/**/*.+(coffee|litcoffee)' ]
    .pipe replace re'$1 = require("extends__")'
    .pipe gulp.dest './build'

JavaScript

var gulp, replace, re;
gulp = require('gulp');
replace = require('gulp-replace');
re = /((__)?extends?)\s*=\s*function\(child,\s*parent\)\s*\{.+?return\s*child;\s*\}/;
 
gulp.task('coffee', function() {
  gulp
    .src([ './source/**/*.+(coffee|litcoffee)' ])
    .pipe(replace(re, '$1 = require("extends__")'))
    .pipe(gulp.dest('./build'));
});

Build

git clone https://github.com/nhz-io/extends__.git
cd extends__
npm install
gulp

LICENSE

MIT

VERSION

0.0.8

  • Updated the CoffeeScript extend example in README.md

0.0.7

  • Mixins now can have constructors and call super

0.0.6

  • Added Mixin Functionality

0.0.5

  • Better README.md
  • Now wrapping default CoffeScript extends

Package Sidebar

Install

npm i extends__

Weekly Downloads

4

Version

0.0.8

License

MIT

Last publish

Collaborators

  • ishi.ruy