Skip to content

Topiarist provides tree and shape-based type verification for JavaScript.

License

Notifications You must be signed in to change notification settings

BladeRunnerJS/topiarist

Folders and files

NameName
Last commit message
Last commit date

Latest commit

b216369 · Oct 12, 2015
Sep 14, 2015
Jul 31, 2015
Jul 31, 2015
Aug 10, 2015
Aug 10, 2015
Oct 12, 2013
Aug 10, 2015
Aug 6, 2015
Jul 31, 2015
Aug 10, 2015
Oct 12, 2015
Sep 14, 2015
Jul 31, 2015
Jul 30, 2015

Repository files navigation

Topiarist

Topiarist provides tree and shape-based type verification for JavaScript.

Build Status

You can read the introductory blog post for more information.

A Note on implementation

This library makes liberal use of nonenumerable attributes and Object.getPrototypeOf. It is therefore suitable only for Ecmascript 5 engines. It will work in Ecmascript 6 engines but there would be a much nicer implementation in that case, using Map and private symbols.

Getting It

In Node.js:

npm install --save topiarist

then:

var topiarist = require('topiarist');

For the browser, download the latest release, and refer to it from your script tag:

<script type="text/javascript" src="dist/topiarist.js"></script>

Usage

This library provides the following action methods:

  • topiarist.extend(subclass, superclass) which implements classical single inheritance by setting up the prototype chain.
  • topiarist.implement(class, interface) which declares a classes intention to implement an interface, where verification is delayed until after the class has been finalized.
  • topiarist.hasImplemented(class, interface) which declares that a class implements an interface and throws an exception if it does not.
  • topiarist.inherit(class, parent) which provides multiple inheritance by copying functionality from the parent to the class.
  • topiarist.mixin(class, mixin) which provides mixin inheritance, sandboxing mixin methods that are copied onto the class.

and the following query methods:

  • topiarist.isA(instance, parent) which returns true if the instance is of a type which has been declared to be descended from the parent, e.g. because it's extended or implemented or mixed-in.
  • topiarist.classIsA(class, parent) which returns true if the class has been declared to be descended from the parent, e.g. through extension, implementation, etc.
  • topiarist.fulfills(instance, interface) which returns true if the instance supports everything on the interface.
  • topiarist.classFulfills(class, interface) which returns true if instances of the class will be created supporting everything on the interface.

The following convenience methods are also provided:

  • topiarist.install() which copies the appropriate methods onto the Function and Object prototype, renaming them where appropriate. This lets you do things like Subclass.extends(Superclass)
  • topiarist.exportTo() which copies the appropriate methods onto the global object so they can be accessed directly.

About

Topiarist provides tree and shape-based type verification for JavaScript.

Resources

License

Stars

Watchers

Forks

Packages

No packages published