rss-client 2.0.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,84 @@
1
+ class SourceAnnotationExtractor
2
+ class Annotation < Struct.new(:line, :tag, :text)
3
+ def to_s(options={})
4
+ s = "[%3d] " % line
5
+ s << "[#{tag}] " if options[:tag]
6
+ s << text
7
+ end
8
+ end
9
+
10
+ def self.enumerate(tag, options={})
11
+ extractor = new(tag)
12
+ extractor.display(extractor.find, options)
13
+ end
14
+
15
+ attr_reader :tag
16
+
17
+ def initialize(tag)
18
+ @tag = tag
19
+ end
20
+
21
+ def find(dirs=%w(app lib test))
22
+ dirs.inject({}) { |h, dir| h.update(find_in(dir)) }
23
+ end
24
+
25
+ def find_in(dir)
26
+ results = {}
27
+
28
+ Dir.glob("#{dir}/*") do |item|
29
+ next if File.basename(item)[0] == ?.
30
+
31
+ if File.directory?(item)
32
+ results.update(find_in(item))
33
+ elsif item =~ /\.(builder|(r(?:b|xml|js)))$/
34
+ results.update(extract_annotations_from(item, /#\s*(#{tag}):?\s*(.*)$/))
35
+ elsif item =~ /\.(rhtml|erb)$/
36
+ results.update(extract_annotations_from(item, /<%\s*#\s*(#{tag}):?\s*(.*?)\s*%>/))
37
+ end
38
+ end
39
+
40
+ results
41
+ end
42
+
43
+ def extract_annotations_from(file, pattern)
44
+ lineno = 0
45
+ result = File.readlines(file).inject([]) do |list, line|
46
+ lineno += 1
47
+ next list unless line =~ pattern
48
+ list << Annotation.new(lineno, $1, $2)
49
+ end
50
+ result.empty? ? {} : { file => result }
51
+ end
52
+
53
+ def display(results, options={})
54
+ results.keys.sort.each do |file|
55
+ puts "#{file}:"
56
+ results[file].each do |note|
57
+ puts " * #{note.to_s(options)}"
58
+ end
59
+ puts
60
+ end
61
+ end
62
+ end
63
+
64
+ desc "Enumerate all annotations"
65
+ task :notes do
66
+ SourceAnnotationExtractor.enumerate "OPTIMIZE|FIXME|TODO", :tag => true
67
+ end
68
+
69
+ namespace :notes do
70
+ desc "Enumerate all OPTIMIZE annotations"
71
+ task :optimize do
72
+ SourceAnnotationExtractor.enumerate "OPTIMIZE"
73
+ end
74
+
75
+ desc "Enumerate all FIXME annotations"
76
+ task :fixme do
77
+ SourceAnnotationExtractor.enumerate "FIXME"
78
+ end
79
+
80
+ desc "Enumerate all TODO annotations"
81
+ task :todo do
82
+ SourceAnnotationExtractor.enumerate "TODO"
83
+ end
84
+ end
@@ -0,0 +1,10 @@
1
+ begin
2
+ require 'bacon'
3
+ rescue LoadError
4
+ require 'rubygems'
5
+ require 'bacon'
6
+ end
7
+
8
+ rssclient_dir = File.expand_path(File.join(File.dirname(__FILE__), "../lib"))
9
+ $LOAD_PATH.unshift(rssclient_dir)
10
+ require 'rss-client'
@@ -0,0 +1,13 @@
1
+ require 'spec/helper'
2
+
3
+ describe 'http-access2' do
4
+
5
+ before do
6
+ @client = HTTPAccess2::Client.new
7
+ end
8
+
9
+ it 'should have an object identity' do
10
+ @client.should.not.be.same_as HTTPAccess2::Client.new
11
+ end
12
+
13
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec/helper'
2
+
3
+ class RSSFeed
4
+ include RSSClient
5
+ end
6
+
7
+ describe 'rss-client' do
8
+
9
+ before do
10
+ @feed = RSSFeed.new
11
+ end
12
+
13
+ it 'should have an object identity' do
14
+ @feed.should.not.be.same_as RSSFeed.new
15
+ end
16
+
17
+ it 'should have useful defaults' do
18
+ @feed.rssc_error.should == nil
19
+ @feed.rssc_raw.should == nil
20
+ end
21
+
22
+ end
metadata ADDED
@@ -0,0 +1,88 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rss-client
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.9
5
+ platform: ruby
6
+ authors:
7
+ - Stoyan Zhekov
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-01-18 00:00:00 +09:00
13
+ default_executable: rssclient
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: feed-normalizer
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.4.0
23
+ version:
24
+ description:
25
+ email: stoyan@gmail.com
26
+ executables:
27
+ - rssclient
28
+ extensions: []
29
+
30
+ extra_rdoc_files:
31
+ - lib
32
+ - README
33
+ - MIT-LICENSE
34
+ files:
35
+ - lib
36
+ - README
37
+ - MIT-LICENSE
38
+ - install.rb
39
+ - Rakefile
40
+ - bin/rssclient
41
+ - lib/rss-client.rb
42
+ - lib/rss-client
43
+ - lib/rss-client/http-access2.rb
44
+ - lib/rss-client/http-access2
45
+ - lib/rss-client/http-access2/cookie.rb
46
+ - lib/rss-client/http-access2/http.rb
47
+ - rake_tasks/annotations.rake
48
+ - spec/helper.rb
49
+ - spec/spec_http_access2.rb
50
+ - spec/spec_rss_client.rb
51
+ has_rdoc: true
52
+ homepage: http://www.assembla.com/wiki/show/rss-client
53
+ post_install_message:
54
+ rdoc_options:
55
+ - --line-numbers
56
+ - --inline-source
57
+ - --all
58
+ - --quiet
59
+ - --title
60
+ - "RSSClient: Fetching and parsing RSS feeds with easy"
61
+ - --main
62
+ - README
63
+ - --exclude
64
+ - "\"^(_darcs|.hg|.svn|spec|bin|pkg)/\""
65
+ require_paths:
66
+ - lib
67
+ required_ruby_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: "0"
72
+ version:
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: "0"
78
+ version:
79
+ requirements: []
80
+
81
+ rubyforge_project: rss-client
82
+ rubygems_version: 1.0.1
83
+ signing_key:
84
+ specification_version: 2
85
+ summary: Fetching and parsing RSS feeds with easy
86
+ test_files:
87
+ - spec/spec_http_access2.rb
88
+ - spec/spec_rss_client.rb