From e7bf5952d0729b37e677168b6e8fbd1ce58ed1a2 Mon Sep 17 00:00:00 2001 From: Pacien TRAN-GIRARD Date: Sun, 10 Aug 2014 17:28:37 +0200 Subject: First version --- point/data/html.js | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 point/data/html.js (limited to 'point/data/html.js') diff --git a/point/data/html.js b/point/data/html.js new file mode 100644 index 0000000..66448cc --- /dev/null +++ b/point/data/html.js @@ -0,0 +1,86 @@ +/* + * This file is part of "What's The Point" + * Copyright (C) 2014 Pacien TRAN-GIRARD + * + * "What's The Point" is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * "What's The Point" is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +define(function () { + + var xml = { + + init: function () { + return; + }, + + getProp: function (object, dom, property, method) { + var elements = dom.getElementsByTagName(property); + if (elements.length > 0) { + object[property] = method(elements[0]); + } + return object; + }, + + getInnerText: function (object, dom, property) { + return this.getProp(object, dom, property, function (element) { + return element.textContent; + }); + }, + + getInnerHtml: function (object, dom, property) { + return this.getProp(object, dom, property, function (element) { + if (window.XMLSerializer !== undefined) { + return (new window.XMLSerializer()).serializeToString(element); + } else if (element.xml !== undefined) { + return element.xml; + } + return element.innerHTML; + }); + }, + + parseSlide: function (domSlide) { + var slide = {}; + + ["type", "title", "subtitle"].forEach(function (tag) { + xml.getInnerText(slide, domSlide, tag); + }); + + ["content", "notes"].forEach(function (tag) { + xml.getInnerHtml(slide, domSlide, tag); + }); + + return slide; + }, + + parseSlides: function (domSlides) { + var slides = []; + + for (var i = 0; i < domSlides.length; i++) { + slides.push(this.parseSlide(domSlides[i])); + } + + return slides; + }, + + parse: function (rawData, callback) { + var dom = new DOMParser().parseFromString(rawData, "text/xml"); + var domSlides = dom.getElementsByTagName("slide"); + + callback(this.parseSlides(domSlides)); + }, + }; + + return xml; + +}); -- cgit v1.2.3