summaryrefslogtreecommitdiffstats
path: root/js/app/services/opmlparser.coffee
diff options
context:
space:
mode:
authorBernhard Posselt <nukeawhale@gmail.com>2013-03-18 11:49:26 +0100
committerBernhard Posselt <nukeawhale@gmail.com>2013-03-18 11:49:26 +0100
commit8c5bf6f3173ce84c11cd1e0a77c30b71c3463d52 (patch)
tree77043acda22b45e6f0c1cd10a5246a30dbc6659c /js/app/services/opmlparser.coffee
parent2eec5da48cb0ac1833a92ab73eb5bff68e7c84f7 (diff)
added rewritten js from appframwork-js branch
Diffstat (limited to 'js/app/services/opmlparser.coffee')
-rw-r--r--js/app/services/opmlparser.coffee78
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