From 08bcdfb00856289cd5d6bbeb49bb97675f7a821d Mon Sep 17 00:00:00 2001 From: Kevin Jahns Date: Fri, 7 Oct 2016 21:00:17 +0200 Subject: [PATCH] implemented es6 import utility function (Y.extend(module) === module(Y)) --- README.md | 13 +++++++++++++ src/y.js | 25 ++++++++++++++++++------- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 0598a300..88ad9f5a 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,19 @@ require('y-text')(Y) // do the same for all modules you want to use ``` +### ES6 Syntax +``` +import Y from 'yjs' +import yArray from 'y-array' +import yWebsocketsClient from 'y-webrtc' +import yMemory from 'y-memory' +import yArray from 'y-array' +import yMap from 'y-map' +import yText from 'y-text' +// .. +Y.extend(yArray, yWebsocketsClient, yMemory, yArray, yMap, yText /*, .. */) +``` + # Text editing example Install dependencies ``` diff --git a/src/y.js b/src/y.js index 798ad117..37de69e5 100644 --- a/src/y.js +++ b/src/y.js @@ -14,14 +14,25 @@ module.exports = Y Y.requiringModules = requiringModules Y.extend = function (name, value) { - if (value instanceof Y.utils.CustomTypeDefinition) { - Y[name] = value.parseArguments + if (arguments.length === 2 && typeof name === 'string') { + if (value instanceof Y.utils.CustomTypeDefinition) { + Y[name] = value.parseArguments + } else { + Y[name] = value + } + if (requiringModules[name] != null) { + requiringModules[name].resolve() + delete requiringModules[name] + } } else { - Y[name] = value - } - if (requiringModules[name] != null) { - requiringModules[name].resolve() - delete requiringModules[name] + for (var i = 0; i < arguments.length; i++) { + var f = arguments[i] + if (typeof f === 'function') { + f(Y) + } else { + throw new Error('Expected function!') + } + } } }