opml-reader 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ pkg/*
2
+ *.gem
3
+ .bundle
@@ -0,0 +1,3 @@
1
+ <component name="ProjectDictionaryState">
2
+ <dictionary name="amar" />
3
+ </component>
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in opml-reader.gemspec
4
+ gemspec
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
data/Readme ADDED
@@ -0,0 +1,23 @@
1
+ reads Opml file format using nokogiri
2
+
3
+ class OpmlFeed
4
+ include OpmlReader
5
+ end
6
+
7
+ opml_feed = OpmlFeed.new()
8
+ opml_feed.parse(file_name or xml_content)
9
+
10
+ Display header of opml
11
+ opml_feed.head["title"]
12
+ opml_feed.head["created_date"]
13
+ opml_feed.head["modified_date"]
14
+ opml_feed.head["owner_name"]
15
+ opml_feed.head["owner_email"]
16
+
17
+ Display body of opml
18
+ It return collection of outlines
19
+ opml_feed.outlines
20
+ Each outline has following field
21
+
22
+ opml_feed.outlines.first.outline
23
+ It contains hash key contains attributes and value contains attribute values
@@ -0,0 +1,64 @@
1
+ module Opml
2
+
3
+ def parse(xml_text)
4
+ parser = Nokogiri::XML(xml_text)
5
+ self.head =set_header_data(parser)
6
+ self.outlines =parse_body(parser)
7
+ self
8
+ end
9
+
10
+ def parse_body(parser)
11
+ outlines = []
12
+ opml_outlines = parser.xpath("//body//outline")
13
+ opml_outlines.each do |opml_outline|
14
+ opml_body = OpmlBody.new
15
+ opml_outline.attributes.each do |key,value|
16
+ opml_body.outline.merge!(key=>value.value)
17
+ end
18
+ outlines << opml_body
19
+ end
20
+ outlines
21
+ end
22
+
23
+ def set_elements(options={})
24
+ {"title"=>"title","dateCreated"=>"created_date","dateModified"=>"modified_date","ownerName"=>"owner_name","ownerEmail"=>"owner_email"}
25
+ end
26
+ def set_header_data(parser)
27
+ header_elements = {}
28
+ opml_header = parser.xpath("//head")
29
+ set_elements.each do |key,field|
30
+ text_data = opml_header.xpath("//#{key}").text
31
+ header_elements.merge!(field=>text_data)
32
+ end
33
+ header_elements
34
+ end
35
+
36
+ class OpmlBody
37
+ attr_accessor :outline
38
+ def initialize
39
+ @outline = {}
40
+ end
41
+ end
42
+
43
+ module Reader
44
+ include Opml
45
+ def self.included(base)
46
+ base.extend ClassMethods
47
+ end
48
+
49
+ def parse_opml(xml_text)
50
+ self.class.elements
51
+ if File.exist?(xml_text)
52
+ self.parse(File.read(xml_text))
53
+ else
54
+ self.parse(xml_text)
55
+ end
56
+ end
57
+ module ClassMethods
58
+ def elements
59
+ attr_accessor :head,:outlines
60
+ end
61
+ end
62
+ end
63
+ end
64
+
@@ -0,0 +1,5 @@
1
+ module Opml
2
+ module Reader
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "opml-reader/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "opml-reader"
7
+ s.version = Opml::Reader::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Amar Daxini"]
10
+ s.email = ["amardaxini@gmail.com"]
11
+ s.homepage = "http://rubygems.org/gems/opml-reader"
12
+ s.summary = %q{parse opml file using nokogiri}
13
+ s.description = %q{parse opml file using nokogiri,it generates head nad body of opml}
14
+
15
+ s.rubyforge_project = "opml-reader"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+ s.add_development_dependency 'nokogiri'
22
+ end
metadata ADDED
@@ -0,0 +1,88 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: opml-reader
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Amar Daxini
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-02-11 00:00:00 +05:30
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: nokogiri
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :development
34
+ version_requirements: *id001
35
+ description: parse opml file using nokogiri,it generates head nad body of opml
36
+ email:
37
+ - amardaxini@gmail.com
38
+ executables: []
39
+
40
+ extensions: []
41
+
42
+ extra_rdoc_files: []
43
+
44
+ files:
45
+ - .gitignore
46
+ - .idea/dictionaries/amar.xml
47
+ - Gemfile
48
+ - Rakefile
49
+ - Readme
50
+ - lib/opml-reader.rb
51
+ - lib/opml-reader/version.rb
52
+ - opml-reader.gemspec
53
+ has_rdoc: true
54
+ homepage: http://rubygems.org/gems/opml-reader
55
+ licenses: []
56
+
57
+ post_install_message:
58
+ rdoc_options: []
59
+
60
+ require_paths:
61
+ - lib
62
+ required_ruby_version: !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ hash: 3
68
+ segments:
69
+ - 0
70
+ version: "0"
71
+ required_rubygems_version: !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ hash: 3
77
+ segments:
78
+ - 0
79
+ version: "0"
80
+ requirements: []
81
+
82
+ rubyforge_project: opml-reader
83
+ rubygems_version: 1.3.7
84
+ signing_key:
85
+ specification_version: 3
86
+ summary: parse opml file using nokogiri
87
+ test_files: []
88
+