diff options
author | Bernhard Posselt <nukeawhale@gmail.com> | 2013-03-18 11:49:26 +0100 |
---|---|---|
committer | Bernhard Posselt <nukeawhale@gmail.com> | 2013-03-18 11:49:26 +0100 |
commit | 8c5bf6f3173ce84c11cd1e0a77c30b71c3463d52 (patch) | |
tree | 77043acda22b45e6f0c1cd10a5246a30dbc6659c /js/app/services/opmlparser.coffee | |
parent | 2eec5da48cb0ac1833a92ab73eb5bff68e7c84f7 (diff) |
added rewritten js from appframwork-js branch
Diffstat (limited to 'js/app/services/opmlparser.coffee')
-rw-r--r-- | js/app/services/opmlparser.coffee | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/js/app/services/opmlparser.coffee b/js/app/services/opmlparser.coffee new file mode 100644 index 000000000..5154e423c --- /dev/null +++ b/js/app/services/opmlparser.coffee @@ -0,0 +1,78 @@ +### + +ownCloud - News + +@author Bernhard Posselt +@copyright 2012 Bernhard Posselt nukeawhale@gmail.com + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +License as published by the Free Software Foundation; either +version 3 of the License, or any later version. + +This library 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 library. If not, see <http://www.gnu.org/licenses/>. + +### + +angular.module('News').factory '_OPMLParser', -> + + class Feed + + constructor: (@_name, @_url) -> + + getName: -> + return @_name + + getUrl: -> + return @_url + + isFolder: -> + return false + + + class Folder + + constructor: (@_name) -> + @_items = [] + + add: (feed) -> + @_items.push(feed) + + getItems: -> + return @_items + + getName: -> + return @_name + + isFolder: -> + return true + + + class OPMLParser + + parseXML: (xml) -> + $xml = $($.parseXML(xml)) + $root = $xml.find('body') + structure = new Folder('root') + @_recursivelyParse($root, structure) + return structure + + _recursivelyParse: ($xml, structure) -> + for outline in $xml.children('outline') + $outline = $(outline) + if angular.isDefined($outline.attr('type')) + feed = new Feed($outline.attr('text'), $outline.attr('xmlUrl')) + structure.add(feed) + else + folder = new Folder($outline.attr('text')) + structure.add(folder) + @_recursivelyParse($outline, folder) + + + return OPMLParser |