diff --git a/src/scripts/lib/proto/parse-dom.js b/src/scripts/lib/proto/parse-dom.js new file mode 100644 index 0000000..a49a064 --- /dev/null +++ b/src/scripts/lib/proto/parse-dom.js @@ -0,0 +1,7 @@ +var forEachEls = require("../foreach-els") + +var parseElement = require("../parse-element") + +module.exports = function(el) { + forEachEls(this.getElements(el), parseElement }, this) +} diff --git a/src/scripts/lib/proto/parse-element.js b/src/scripts/lib/proto/parse-element.js new file mode 100644 index 0000000..a6311d2 --- /dev/null +++ b/src/scripts/lib/proto/parse-element.js @@ -0,0 +1,14 @@ +module.exports = function(el) { + switch (el.tagName.toLowerCase()) { + case "a": + this.attachLink(el) + break + + case "form": + throw "Pjax doesnt support
yet." + break + + default: + throw "Pjax can only be applied on or submit" + } +} diff --git a/tests/scripts/lib/proto/parse-element.js b/tests/scripts/lib/proto/parse-element.js new file mode 100644 index 0000000..79d0d8a --- /dev/null +++ b/tests/scripts/lib/proto/parse-element.js @@ -0,0 +1,18 @@ +var tape = require("tape") + +var parseElement = require("../../../../src/scripts/lib/proto/parse-element") +var protoMock = {attachLink: function() { return true}} +tape("test parse element prototype method", function(t) { + + t.doesNotThrow(function() { + var a = document.createElement("a") + parseElement.call(protoMock, a) + }, " element can be parsed") + + t.throws(function() { + var form = document.createElement("form") + parseElement.call(protoMock, form) + }, " cannot be used (for now)") + + t.end() +})