twtail 0.1.5 → 0.2.0

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.
Files changed (5) hide show
  1. data/VERSION +1 -1
  2. data/lib/twtail.rb +70 -48
  3. data/twtail.gemspec +16 -24
  4. metadata +52 -71
  5. data/Rakefile +0 -78
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.5
1
+ 0.2.0
@@ -8,52 +8,74 @@ require 'open-uri'
8
8
  require 'time'
9
9
  require 'cgi'
10
10
  require 'htmlentities'
11
-
11
+
12
12
  module Twtail
13
-
14
- def self.execute(params=nil)
15
- trap("INT") { exit }
16
- params ? self.search(params) : self.help
17
- end
18
-
19
- def self.help
20
- return("Usage: twtail [xbox+live | from:caffo | '#barcamp']")
21
- end
22
-
23
- def self.search(params)
24
- begin
25
- pointer = Time.now-86400
26
- parameter = CGI::escape(params)
27
- url = "http://search.twitter.com/search.atom?q=#{parameter}"
28
- feed = SimpleRSS.parse open(url)
29
- coder = HTMLEntities.new
30
-
31
- puts "\033[37m==\033[0m \033[1;32m#{feed.channel.title}\033[0m \033[37m==\033[0m\n\n" unless Module.constants.include?("DEBUG")
32
- if feed.items[0].published < pointer
33
- puts "No items found since yesterday"
34
- exit
35
- end
36
-
37
- while 1==1 do
38
- new_items = false
39
- begin
40
- feed = SimpleRSS.parse open(url) rescue nil
41
- feed.items.each do |item|
42
- next if item.published < pointer
43
- unless Module.constants.include?("DEBUG")
44
- puts "\033[32m#{item.author.sub(/(\w+).+\n.+/,'\1')}: \033[0m\033[37m#{coder.decode(item.title)}\033[0m"
45
- new_items = true
46
- end
47
- end
48
- rescue
49
- end
50
- puts "\n\n" if new_items == true
51
- pointer = feed.items[0].published + 1
52
- break if Module.constants.include?("DEBUG")
53
- sleep(60)
54
- end
55
- rescue
56
- "No data was found for this criteria. please try with other keywords."
57
- end
58
- end
59
- end
13
+ class << self
14
+
15
+ def execute(params=nil)
16
+ trap("INT") { exit }
17
+ params ? self.search(params) : self.help
18
+ end
19
+
20
+ def help
21
+ return("Usage: twtail [xbox+live | from:caffo | '#barcamp' | '-spammed_keyword']")
22
+ end
23
+
24
+ def search(params)
25
+ begin
26
+ pointer = Time.now-86400
27
+ parameter = CGI::escape(params)
28
+ url = "http://search.twitter.com/search.atom?q=#{parameter}"
29
+ feed = SimpleRSS.parse open(url)
30
+ coder = HTMLEntities.new
31
+
32
+ puts "\033[37m==\033[0m \033[1;32m#{feed.channel.title}\033[0m \033[37m==\033[0m\n\n" unless Module.constants.include?("DEBUG")
33
+ if feed.items[0].published < pointer
34
+ puts "No items found since yesterday"
35
+ exit
36
+ end
37
+
38
+ while 1==1 do
39
+ new_items = false
40
+ begin
41
+ feed = SimpleRSS.parse open(url) rescue nil
42
+ feed.items.each do |item|
43
+ next if item.published < pointer
44
+ unless Module.constants.include?("DEBUG")
45
+ msg = colorize(37, coder.decode(item.title))
46
+ msg = colorize(31, msg, /(#[[\d]]?(\S+))/i)
47
+ msg = colorize(33, msg, /(@[[\d]]?(\S+))/i)
48
+ msg = colorize(34, msg, /(https?:\/\/[\S]+)/i)
49
+ puts "#{coder.decode(from_parser(item.author))} #{msg}"
50
+ new_items = true
51
+ end
52
+ end
53
+ rescue
54
+ end
55
+ puts "\n\n" if new_items == true
56
+ pointer = feed.items[0].published + 1
57
+ break if Module.constants.include?("DEBUG")
58
+ sleep(60)
59
+ end
60
+ rescue
61
+ "No data was found for this criteria. please try with other keywords."
62
+ end
63
+ end
64
+
65
+ def from_parser(from)
66
+ from.sub!(/(\w+).+\n.+/,'\1')
67
+ from.gsub!(/.*(\(.*)/, "\\1")
68
+ from.gsub!(/\)http/, ") - http")
69
+ from = colorize(32, "#{from}: ")
70
+ colorize(4, from, /(https?:\/\/[\S]+)/i)
71
+ end
72
+
73
+ def colorize(color, text, regex = nil)
74
+ if regex.nil?
75
+ "\033[#{color}m#{text}\033[0m"
76
+ else
77
+ text.gsub(regex, "\033[#{color}m\\1\033[0m")
78
+ end
79
+ end
80
+ end
81
+ end
@@ -1,45 +1,37 @@
1
1
  # Generated by jeweler
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{twtail}
8
- s.version = "0.1.5"
7
+ s.name = "twtail"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["rodrigo franco (caffo)"]
12
- s.date = %q{2010-08-07}
13
- s.default_executable = %q{twtail}
14
- s.description = %q{twitter tail based on search.twitter.com - works perfectly with crappy internet connections usually available at tech conferences}
15
- s.email = %q{caffeine@gmail.com}
12
+ s.date = "2012-08-30"
13
+ s.description = "twitter tail based on search.twitter.com - works perfectly with crappy internet connections usually available at tech conferences"
14
+ s.email = "caffeine@gmail.com"
16
15
  s.executables = ["twtail"]
17
16
  s.extra_rdoc_files = [
18
17
  "README.rdoc"
19
18
  ]
20
19
  s.files = [
21
20
  "README.rdoc",
22
- "Rakefile",
23
- "VERSION",
24
- "bin/twtail",
25
- "lib/twtail.rb",
26
- "spec/spec.opts",
27
- "spec/spec_helper.rb",
28
- "spec/twtail_spec.rb",
29
- "twtail.gemspec"
30
- ]
31
- s.homepage = %q{http://github.com/caffo/twtail}
32
- s.rdoc_options = ["--charset=UTF-8"]
33
- s.require_paths = ["lib"]
34
- s.rubygems_version = %q{1.3.7}
35
- s.summary = %q{twitter tail based on search.twitter.com - works perfectly with crappy internet connections usually available at tech conferences}
36
- s.test_files = [
21
+ "VERSION",
22
+ "bin/twtail",
23
+ "lib/twtail.rb",
24
+ "spec/spec.opts",
37
25
  "spec/spec_helper.rb",
38
- "spec/twtail_spec.rb"
26
+ "spec/twtail_spec.rb",
27
+ "twtail.gemspec"
39
28
  ]
29
+ s.homepage = "http://github.com/caffo/twtail"
30
+ s.require_paths = ["lib"]
31
+ s.rubygems_version = "1.8.24"
32
+ s.summary = "twitter tail based on search.twitter.com - works perfectly with crappy internet connections usually available at tech conferences"
40
33
 
41
34
  if s.respond_to? :specification_version then
42
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
43
35
  s.specification_version = 3
44
36
 
45
37
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
metadata CHANGED
@@ -1,66 +1,58 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: twtail
3
- version: !ruby/object:Gem::Version
4
- hash: 17
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 1
9
- - 5
10
- version: 0.1.5
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - rodrigo franco (caffo)
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2010-08-07 00:00:00 -03:00
19
- default_executable: twtail
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2012-08-30 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: htmlentities
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 53
30
- segments:
31
- - 4
32
- - 2
33
- - 1
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
34
21
  version: 4.2.1
35
22
  type: :runtime
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: simple-rss
39
23
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 4.2.1
30
+ - !ruby/object:Gem::Dependency
31
+ name: simple-rss
32
+ requirement: !ruby/object:Gem::Requirement
41
33
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- hash: 27
46
- segments:
47
- - 1
48
- - 2
49
- - 2
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
50
37
  version: 1.2.2
51
38
  type: :runtime
52
- version_requirements: *id002
53
- description: twitter tail based on search.twitter.com - works perfectly with crappy internet connections usually available at tech conferences
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 1.2.2
46
+ description: twitter tail based on search.twitter.com - works perfectly with crappy
47
+ internet connections usually available at tech conferences
54
48
  email: caffeine@gmail.com
55
- executables:
49
+ executables:
56
50
  - twtail
57
51
  extensions: []
58
-
59
- extra_rdoc_files:
52
+ extra_rdoc_files:
60
53
  - README.rdoc
61
- files:
54
+ files:
62
55
  - README.rdoc
63
- - Rakefile
64
56
  - VERSION
65
57
  - bin/twtail
66
58
  - lib/twtail.rb
@@ -68,40 +60,29 @@ files:
68
60
  - spec/spec_helper.rb
69
61
  - spec/twtail_spec.rb
70
62
  - twtail.gemspec
71
- has_rdoc: true
72
63
  homepage: http://github.com/caffo/twtail
73
64
  licenses: []
74
-
75
65
  post_install_message:
76
- rdoc_options:
77
- - --charset=UTF-8
78
- require_paths:
66
+ rdoc_options: []
67
+ require_paths:
79
68
  - lib
80
- required_ruby_version: !ruby/object:Gem::Requirement
69
+ required_ruby_version: !ruby/object:Gem::Requirement
81
70
  none: false
82
- requirements:
83
- - - ">="
84
- - !ruby/object:Gem::Version
85
- hash: 3
86
- segments:
87
- - 0
88
- version: "0"
89
- required_rubygems_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ! '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ required_rubygems_version: !ruby/object:Gem::Requirement
90
76
  none: false
91
- requirements:
92
- - - ">="
93
- - !ruby/object:Gem::Version
94
- hash: 3
95
- segments:
96
- - 0
97
- version: "0"
77
+ requirements:
78
+ - - ! '>='
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
98
81
  requirements: []
99
-
100
82
  rubyforge_project:
101
- rubygems_version: 1.3.7
83
+ rubygems_version: 1.8.24
102
84
  signing_key:
103
85
  specification_version: 3
104
- summary: twitter tail based on search.twitter.com - works perfectly with crappy internet connections usually available at tech conferences
105
- test_files:
106
- - spec/spec_helper.rb
107
- - spec/twtail_spec.rb
86
+ summary: twitter tail based on search.twitter.com - works perfectly with crappy internet
87
+ connections usually available at tech conferences
88
+ test_files: []
data/Rakefile DELETED
@@ -1,78 +0,0 @@
1
- begin
2
- require 'spec'
3
- rescue LoadError
4
- require 'rubygems'
5
- require 'spec'
6
- end
7
- begin
8
- require 'spec/rake/spectask'
9
- rescue LoadError
10
- puts <<-EOS
11
- To use rspec for testing you must install rspec gem:
12
- gem install rspec
13
- EOS
14
- exit(0)
15
- end
16
-
17
- begin
18
- require 'jeweler'
19
- Jeweler::Tasks.new do |gem|
20
- gem.name = "twtail"
21
- gem.summary = "twitter tail based on search.twitter.com - works perfectly with crappy internet connections usually available at tech conferences"
22
- gem.description = "twitter tail based on search.twitter.com - works perfectly with crappy internet connections usually available at tech conferences"
23
- gem.email = "caffeine@gmail.com"
24
- gem.homepage = "http://github.com/caffo/twtail"
25
- gem.authors = ["rodrigo franco (caffo)"]
26
- gem.add_dependency "htmlentities", ">= 4.2.1"
27
- gem.add_dependency "simple-rss", ">= 1.2.2"
28
- end
29
- Jeweler::GemcutterTasks.new
30
- rescue LoadError
31
- puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
32
- end
33
-
34
- require 'rake/testtask'
35
- Rake::TestTask.new(:test) do |test|
36
- test.libs << 'lib' << 'test'
37
- test.pattern = 'test/**/test_*.rb'
38
- test.verbose = true
39
- end
40
-
41
- begin
42
- require 'rcov/rcovtask'
43
- Rcov::RcovTask.new do |test|
44
- test.libs << 'test'
45
- test.pattern = 'test/**/test_*.rb'
46
- test.verbose = true
47
- end
48
- rescue LoadError
49
- task :rcov do
50
- abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
51
- end
52
- end
53
-
54
- task :test => :check_dependencies
55
-
56
- task :default => :test
57
-
58
- require 'rake/rdoctask'
59
- Rake::RDocTask.new do |rdoc|
60
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
61
-
62
- rdoc.rdoc_dir = 'rdoc'
63
- rdoc.title = "twtail #{version}"
64
- rdoc.rdoc_files.include('README*')
65
- rdoc.rdoc_files.include('lib/**/*.rb')
66
- end
67
-
68
-
69
- desc "Run the specs under spec/models"
70
- Spec::Rake::SpecTask.new do |t|
71
- t.spec_opts = ['--options', "spec/spec.opts"]
72
- t.spec_files = FileList['spec/**/*_spec.rb']
73
- end
74
-
75
- task :default do
76
- puts "\nAvailable tasks: #{Rake.application.tasks.to_a.join(', ')}"
77
- puts "Use rake -T for more info.\n\n"
78
- end