From 628aa44a402c8b34c0c26861f898dee738711485 Mon Sep 17 00:00:00 2001 From: lucasdevelop Date: Tue, 27 Jul 2021 22:27:50 +0200 Subject: [PATCH] some changes --- .npmignore | 4 ++ package-lock.json | 2 +- package.json | 8 ++- src/index.js | 123 ++++++++++++++++++++++++---------------------- test/test.js | 41 +++++++--------- 5 files changed, 93 insertions(+), 85 deletions(-) create mode 100644 .npmignore diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..64a0dd6 --- /dev/null +++ b/.npmignore @@ -0,0 +1,4 @@ +node_modules +src +test +gulpfile.js \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index c6f64e3..f98b75e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "varkeeper", - "version": "1.0.0", + "version": "1.0.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 5eda226..2f3b202 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,14 @@ { "name": "varkeeper", "version": "1.0.1", - "description": "", + "description": "varkeeper is A tool for handle vars global in every module", "main": "dist/index.js", + "files": [ + "dist", + "package.json", + "README.md", + "LICENSE" + ], "devDependencies": { "chai": "^4.3.4", "chai-arrays": "^2.2.0", diff --git a/src/index.js b/src/index.js index 2d2b155..84a62ec 100644 --- a/src/index.js +++ b/src/index.js @@ -1,40 +1,38 @@ let props = []; let events = []; -// Prop = function(name, value = undefined) { -// this._init(name, value); -// // props.push({ name: name, value: value }); -// } -// Prop.prototype = { +Prop = function (name, value = undefined) { + this._init(name, value); +} +Prop.prototype = { -// constructor: Prop, -// name: null, -// value: null, -// _init: function(name, value = undefined) { + constructor: Prop, + name: null, + value: null, + _init: function (name, value = undefined) { -// if(value === undefined && props.find(x => x.name === name) !== undefined) -// { -// myprop = props.find(x => x.name === name); -// console.log(myprop) -// setprop(name, myprop.value); -// } -// else -// { -// setprop(name, value); -// } -// // -// // this.value = value; - -// }, -// set: function (value) {setprop(this.name, value);}, -// get: function () {return getprop(this.name);}, -// delete: function () {deleteprop(this.name);}, -// on: function(eventname, callback) { -// events.push({ type: eventname, callback: callback, name: this.name }); -// } -// } + if ((value === undefined || value === null) && props.find(x => x.name === name) !== undefined) { + myprop = props.find(x => x.name === name); + setprop(name, myprop.value); + this.value = myprop.value; + } + else { + setprop(name, value); + this.value = value; + } + this.name = name; + + }, + set: function (value) { setprop(this.name, value); }, + get: function () { return getprop(this.name); }, + delete: function () { deleteprop(this.name); }, + on: function (eventname, callback) { on(this.name, eventname, callback); } +} + + +// OLD function setprop(name, value) { if (value instanceof Function) { @@ -42,63 +40,68 @@ function setprop(name, value) { } - var myprop = props.find(x => x.name === name) + var myprop = props.find(x => x.name === name) - if(myprop != undefined) - { - myprop.value = value; - } - else - { - // props.push(new Prop(name, value)); - props.push({ name: name, value: value }); - } + if (myprop != undefined) { + on_function('set', name, value); + if (value !== myprop.value) { + myprop.value = value; + on_function('change', name, value); + } + } + else { + props.push({ name: name, value: value }); + on_function('create', name, value); + } + - onchange_func(name, value); - } -function getEventsFromTypeAndName(name,type) { +function getEventsFromTypeAndName(name, type) { let event = []; if (events.length > 0) { - event = events.filter(x => x.name === name && x.type === type) + event = events.filter(x => x.name === name && x.type === type) } return event; } function getprop(name) { - console.log(props) let result = props.find(x => x.name === name) - if(result != undefined) - { + if (result != undefined) { + on_function('get', name, result.value); return result.value; } - else - { + else { return undefined; } } function deleteprop(name) { - let index = props.indexOf(props.find(x => x.name === name)); - props.splice(index,1); + props = props.filter(x => x.name !== name); } -function onchange(name, callback) { - events.push({ name: name, callback: callback, type: 'onchange' }); +function on(eventname, name, callback) { + events.push({ type: eventname, callback: callback, name: name }); } -function onchange_func(name,value){ +function on_function(eventname, name, value) { + let events = getEventsFromTypeAndName(name, eventname); if (events.length > 0) { - let onchangeevents = getEventsFromTypeAndName(name, 'onchange'); + switch (eventname) { + case 'change': + case 'create': + case 'get': + case 'set': + events.forEach(x => x.callback(value)); + break; - onchangeevents.forEach(element => { - element.callback(value); - }); + default: + events.forEach(x => x.callback({ err: 404, msg: 'Event not found' })); + break; + } } } - -module.exports = { setprop, getprop, onchange, deleteprop } \ No newline at end of file +module.exports = { setprop, getprop, deleteprop, on, Prop } \ No newline at end of file diff --git a/test/test.js b/test/test.js index 96b45a6..88fd5dd 100644 --- a/test/test.js +++ b/test/test.js @@ -6,12 +6,10 @@ const assertArrays = require('chai-arrays'); chai.use(assertArrays); let varkeeper = require("../src/index.js"); - - describe('varkeeper', () => { describe('setprop', () => { it('will set a prop', () => { - varkeeper.setprop('test', 'value'); + varkeeper.setprop('test', 'value'); //let a = new varkeeper.Prop('test') assert.equal(varkeeper.getprop("test"), 'value'); }); @@ -27,10 +25,10 @@ describe('varkeeper', () => { expect(varkeeper.getprop('array')).to.be.an('array'); }); it('will slice a array-prop', () => { - varkeeper.setprop('array', [1,2,3,4]); + varkeeper.setprop('array', [1, 2, 3, 4]); let x = varkeeper.getprop('array'); - let y = x.slice(0,2); - expect(y).to.be.eql([1,2]); + let y = x.slice(0, 2); + expect(y).to.be.eql([1, 2]); }); }); @@ -53,29 +51,26 @@ describe('varkeeper', () => { describe('onchange', () => { it('will call funtion by change prop value', () => { let a = false; - varkeeper.onchange('test', () => {a = true}); + varkeeper.on('change', 'test', () => { a = true }); varkeeper.setprop('test', 'value'); + varkeeper.setprop('test', 'value2'); assert.equal(a, true); }); }); - describe.skip('varkeeper porp class', () => { - it("", () => { - console.log("varkeeper") - varkeeper.setprop("array","blub") - varkeeper.getprop("array"); - console.log("prop class") - var a = new varkeeper.Prop("array",undefined) - a.get(); - a.on("onchange",()=>{ - console.log("onchange") - }) - console.log("first",a.get()); - a.set("B") - console.log(a.get()); - varkeeper.setprop("array","C") - console.log(a.get()); + describe('varkeeper porp class', () => { + it(" will setprop an prop of same value must be the same #1", () => { + varkeeper.setprop('test','value') + let x = new varkeeper.Prop('test'); + assert.equal(x.get(), varkeeper.getprop('test')); }) + + it(" will setprop an prop of same value must be the same #2", () => { + let x = new varkeeper.Prop('test', 'value'); + assert.equal(x.get(), varkeeper.getprop('test')); + }) + + }) }); \ No newline at end of file