From 477e73f300d3f506f59fac98b21cb4025b6f76ad Mon Sep 17 00:00:00 2001 From: Leo Horie Date: Sat, 21 May 2016 01:48:11 -0400 Subject: [PATCH] prop and withAttr work in progress --- index.js | 10 ++++++---- mithril.js | 17 +++++++++++++---- util/prop.js | 8 ++++++++ util/withAttr.js | 5 +++++ 4 files changed, 32 insertions(+), 8 deletions(-) create mode 100644 util/prop.js create mode 100644 util/withAttr.js diff --git a/index.js b/index.js index 72abea9e..8a048fea 100644 --- a/index.js +++ b/index.js @@ -1,14 +1,16 @@ "use strict" var m = require("./render/hyperscript") -var rendererService = require("./render/render")(window) +var renderService = require("./render/render")(window) var redrawService = require("./api/pubsub")() m.request = require("./request/request")(window, Promise).ajax -m.route = require("./api/router")(window, rendererService, redrawService) -m.mount = require("./api/mount")(rendererService, redrawService) +m.route = require("./api/router")(window, renderService, redrawService) +m.mount = require("./api/mount")(renderService, redrawService) m.trust = require("./render/trust") -m.render = rendererService.render +m.prop = require("./util/prop") +m.withAttr = require("./util/withAttr") +m.render = renderService.render m.redraw = redrawService.publish module.exports = m diff --git a/mithril.js b/mithril.js index a6b05895..8bb84dc3 100644 --- a/mithril.js +++ b/mithril.js @@ -84,7 +84,7 @@ function changeNS(ns, vnode) { } } var m = hyperscript -var rendererService = function($window) { +var renderService = function($window) { var $doc = $window.document var onevent function setEventCallback(callback) {return onevent = callback} @@ -889,7 +889,7 @@ m.route = function($window, renderer, pubsub) { route.prefix = router.setPrefix return route -}(window, rendererService, redrawService) +}(window, renderService, redrawService) m.mount = function(renderer, pubsub) { return function(root, component) { var run = autoredraw(root, renderer, pubsub, function() { @@ -898,10 +898,19 @@ m.mount = function(renderer, pubsub) { run() } -}(rendererService, redrawService) +}(renderService, redrawService) m.trust = function(html) { return Node("<", undefined, undefined, html, undefined, undefined) } -m.render = rendererService.render +m.prop = function(store) { + return function() { + if (arguments.length > 0) store = arguments[0] + return store + } +} +m.withAttr = function(attrName, callback, context) { + return callback.call(context || this, attrName in e.currentTarget ? e.currentTarget[attrName] : e.currentTarget.getAttribute(attrName)) +} +m.render = renderService.render m.redraw = redrawService.publish module.exports = m diff --git a/util/prop.js b/util/prop.js new file mode 100644 index 00000000..d5174796 --- /dev/null +++ b/util/prop.js @@ -0,0 +1,8 @@ +"use strict" + +module.exports = function(store) { + return function() { + if (arguments.length > 0) store = arguments[0] + return store + } +} \ No newline at end of file diff --git a/util/withAttr.js b/util/withAttr.js new file mode 100644 index 00000000..7b50b1f7 --- /dev/null +++ b/util/withAttr.js @@ -0,0 +1,5 @@ +"use strict" + +module.exports = function(attrName, callback, context) { + return callback.call(context || this, attrName in e.currentTarget ? e.currentTarget[attrName] : e.currentTarget.getAttribute(attrName)) +} \ No newline at end of file