+++ /dev/null
-'use strict'
-
-var xtend = require('xtend')
-var inherits = require('inherits')
-
-module.exports = unherit
-
-// Create a custom constructor which can be modified without affecting the
-// original class.
-function unherit(Super) {
- var result
- var key
- var value
-
- inherits(Of, Super)
- inherits(From, Of)
-
- // Clone values.
- result = Of.prototype
-
- for (key in result) {
- value = result[key]
-
- if (value && typeof value === 'object') {
- result[key] = 'concat' in value ? value.concat() : xtend(value)
- }
- }
-
- return Of
-
- // Constructor accepting a single argument, which itself is an `arguments`
- // object.
- function From(parameters) {
- return Super.apply(this, parameters)
- }
-
- // Constructor accepting variadic arguments.
- function Of() {
- if (!(this instanceof Of)) {
- return new From(arguments)
- }
-
- return Super.apply(this, arguments)
- }
-}