usaidwat 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 40cfe670a21fe2f65549c77c5ac84f06e1114b2b
4
- data.tar.gz: ffe351f3831ca31ad960b148c630ca442c1b9ea7
3
+ metadata.gz: cb020c71be1b1132ce622e958ce732fd29ef086b
4
+ data.tar.gz: 629f6f970557e968bab7d850d4ee1c101f1c66a7
5
5
  SHA512:
6
- metadata.gz: 68be66ec279c06be4c8c56a009eb2ae4bc1b3f8aa2e0c12d84f83d5e81198f7468bc350f403dd3eedfca119c98255ec6e4637df68b7d3b9495822231c95a72cb
7
- data.tar.gz: b5636dd3f2d95e734c3684054fa0919e750696d366a792be832778c0a42833e920c96a3512b4fb97fbfa070491c6b9f346055282b2b3a9d092ef1e476806cce7
6
+ metadata.gz: de40783e531b166a72f99c401a05007383b2f237dbe1717679fbd4ac6ed2750865e66bec4c5520cd25963faf4c4e6bfe0bf703f11fc7860ef712125573c89309
7
+ data.tar.gz: e825e1c9517ce21aea8ec086c1e23aec34ee2062cdb46ac0bd61f2aeb24c03677a6429d7b4b465eaf13496b5ab931c7273993b9576f3d89a3c5de355af8ed4d7
@@ -3,26 +3,32 @@ Feature: Browse comments
3
3
  As a Redditor
4
4
  I want to quickly be able to list another Redditor's comments
5
5
  In order to see what they like to talk about
6
-
6
+
7
7
  Scenario: List all comments
8
8
  Given the Reddit service returns comments for the user "mipadi"
9
- When I run `usaidwat mipadi | head -n 16`
9
+ When I run `usaidwat mipadi`
10
10
  Then it should pass with:
11
11
  """
12
12
  wikipedia
13
13
  http://www.reddit.com/r/wikipedia/comments/142t4w/z/c79peed
14
+ Heisenbug: a software bug that seems to disappear or alter its behavior when one
15
+ 01 Dec 2012, 12:14 PM
14
16
 
15
17
  Yep. My first experience with a Heisenbug occurred in a C++ program, and disappeared when I tried to print a variable with printf (only to reappear when that call was removed).
16
18
 
17
19
 
18
20
  nyc
19
21
  http://www.reddit.com/r/nyc/comments/141zqc/z/c79dxg6
22
+ NYC taxi roof lights get overhaul - A light simply will mean the cab is availab
23
+ 30 Nov 2012, 04:44 PM
20
24
 
21
25
  It has a fare when the lights are *off.*
22
26
 
23
27
 
24
28
  worldnews
25
29
  http://www.reddit.com/r/worldnews/comments/140mra/z/c797jq4
30
+ Palestinians win upgraded UN status by wide margin
31
+ 30 Nov 2012, 10:09 AM
26
32
 
27
33
  The Judgment of Solomon Accords.
28
34
  """
@@ -34,7 +40,7 @@ Feature: Browse comments
34
40
  """
35
41
  No such user: palorchild
36
42
  """
37
-
43
+
38
44
  Scenario: List all comments when user has no comments
39
45
  Given the Reddit service returns comments for the user "blank"
40
46
  When I run `usaidwat blank`
@@ -42,7 +48,7 @@ Feature: Browse comments
42
48
  """
43
49
  blank has no comments.
44
50
  """
45
-
51
+
46
52
  Scenario: Tally comments
47
53
  Given the Reddit service returns comments for the user "mipadi"
48
54
  When I run `usaidwat -t mipadi`
@@ -62,7 +68,7 @@ Feature: Browse comments
62
68
  wikipedia 1
63
69
  worldnews 2
64
70
  """
65
-
71
+
66
72
  Scenario: Tally comments when user has no comments
67
73
  Given the Reddit service returns comments for the user "blank"
68
74
  When I run `usaidwat -t blank`
@@ -70,49 +76,61 @@ Feature: Browse comments
70
76
  """
71
77
  blank has no comments.
72
78
  """
73
-
79
+
74
80
  Scenario: List comments for a particular subreddit
75
81
  Given the Reddit service returns comments for the user "mipadi"
76
- When I run `usaidwat mipadi AskReddit | head -n 16`
82
+ When I run `usaidwat mipadi AskReddit`
77
83
  Then it should pass with:
78
84
  """
79
85
  AskReddit
80
86
  http://www.reddit.com/r/AskReddit/comments/141kt9/z/c795rwz
87
+ Do colleges actually teach students how to think critically? Or even to think/qu
88
+ 30 Nov 2012, 08:27 AM
81
89
 
82
90
  I think it depends on where you go and what you study, but yes, I think they do teach you to think critically, especially in humanities courses and seminars. Maybe it's just because I went to a small, private liberal arts college rather than a huge school, but critical thinking was definitely a part of my education.
83
91
 
84
92
 
85
93
  AskReddit
86
94
  http://www.reddit.com/r/AskReddit/comments/140t5c/z/c795nw3
95
+ I'm from Tennessee and most of our jokes are geared toward Mississippi and Alaba
96
+ 30 Nov 2012, 08:20 AM
87
97
 
88
98
  You're from New Jersey? Which exit?
89
99
 
90
100
 
91
101
  AskReddit
92
102
  http://www.reddit.com/r/AskReddit/comments/140h3z/z/c795muo
103
+ Today I was going 80mph in a 55 when an unmarked police car pulled up next to me
104
+ 30 Nov 2012, 08:19 AM
93
105
 
94
106
  You didn't slow down for very long though, did you?
95
107
  """
96
-
108
+
97
109
  Scenario: List comments for a particular subreddit specified with the wrong case
98
110
  Given the Reddit service returns comments for the user "mipadi"
99
- When I run `usaidwat mipadi askreddit | head -n 16`
111
+ When I run `usaidwat mipadi askreddit`
100
112
  Then it should pass with:
101
113
  """
102
114
  AskReddit
103
115
  http://www.reddit.com/r/AskReddit/comments/141kt9/z/c795rwz
116
+ Do colleges actually teach students how to think critically? Or even to think/qu
117
+ 30 Nov 2012, 08:27 AM
104
118
 
105
119
  I think it depends on where you go and what you study, but yes, I think they do teach you to think critically, especially in humanities courses and seminars. Maybe it's just because I went to a small, private liberal arts college rather than a huge school, but critical thinking was definitely a part of my education.
106
120
 
107
121
 
108
122
  AskReddit
109
123
  http://www.reddit.com/r/AskReddit/comments/140t5c/z/c795nw3
124
+ I'm from Tennessee and most of our jokes are geared toward Mississippi and Alaba
125
+ 30 Nov 2012, 08:20 AM
110
126
 
111
127
  You're from New Jersey? Which exit?
112
128
 
113
129
 
114
130
  AskReddit
115
131
  http://www.reddit.com/r/AskReddit/comments/140h3z/z/c795muo
132
+ Today I was going 80mph in a 55 when an unmarked police car pulled up next to me
133
+ 30 Nov 2012, 08:19 AM
116
134
 
117
135
  You didn't slow down for very long though, did you?
118
136
  """
@@ -124,7 +142,7 @@ Feature: Browse comments
124
142
  """
125
143
  No comments by mipadi for nsfw.
126
144
  """
127
-
145
+
128
146
  Scenario: Tally comments with subreddit
129
147
  Given the Reddit service returns comments for the user "mipadi"
130
148
  When I run `usaidwat -t mipadi AskReddit`
@@ -132,7 +150,7 @@ Feature: Browse comments
132
150
  """
133
151
  Usage: usaidwat [-t] <user> [<subreddit>]
134
152
  """
135
-
153
+
136
154
  Scenario: Pass no arguments
137
155
  Given the Reddit service returns comments for the user "mipadi"
138
156
  When I run `usaidwat`
@@ -140,7 +158,7 @@ Feature: Browse comments
140
158
  """
141
159
  Usage: usaidwat [-t] <user> [<subreddit>]
142
160
  """
143
-
161
+
144
162
  Scenario: Pass no arguments when tallying
145
163
  Given the Reddit service returns comments for the user "mipadi"
146
164
  When I run `usaidwat -t`
@@ -9,6 +9,7 @@ module USaidWat
9
9
  class Application
10
10
  def initialize(client)
11
11
  @client = client
12
+ Signal.trap("PIPE", "EXIT")
12
13
  end
13
14
 
14
15
  def run(argv)
@@ -17,7 +18,7 @@ module USaidWat
17
18
  username = args.first
18
19
  @redditor = @client.new(username)
19
20
  begin
20
- return tally_comments if opts[:tally]
21
+ return tally_comments if opts.tally
21
22
  return list_comments_for_subreddit(args[1]) if args.length == 2
22
23
  return list_all_comments
23
24
  rescue USaidWat::Client::NoSuchUserError
@@ -77,12 +78,13 @@ module USaidWat
77
78
 
78
79
  private
79
80
  def handle_arguments(argv)
81
+ opts = OpenStruct.new
82
+ opts.tally = false
80
83
  usage(1) if argv.length == 0
81
84
  usage if argv.first == "--help"
82
85
  version if argv.first == "--version"
83
- opts = {:tally => false}
84
86
  if argv.first == "-t"
85
- opts[:tally] = true
87
+ opts.tally = true
86
88
  argv.shift
87
89
  usage(1) unless argv.length == 1
88
90
  end
@@ -1,4 +1,8 @@
1
1
  class String
2
+ def truncate(width)
3
+ self[0, width]
4
+ end
5
+
2
6
  def convert_entities
3
7
  self.gsub(/&gt;/, '>').gsub(/&lt;/, '<')
4
8
  end
@@ -1,3 +1,5 @@
1
+ require 'date'
2
+ require 'highline'
1
3
  require 'stringio'
2
4
  require 'rainbow/ext/string'
3
5
  require 'usaidwat/ext/string'
@@ -12,10 +14,13 @@ module USaidWat
12
14
  end
13
15
 
14
16
  def format(comment)
17
+ cols = HighLine::SystemExtensions.terminal_size[0]
15
18
  out = StringIO.new
16
19
  out.write("\n\n") unless @count == 0
17
20
  out.write("#{comment.subreddit}\n".color(:green))
18
21
  out.write("#{comment_link(comment)}\n".color(:yellow))
22
+ out.write("#{comment.link_title.strip.truncate(cols)}\n".color(:red))
23
+ out.write("#{comment_date(comment)}\n".color(:blue))
19
24
  out.write("\n")
20
25
  out.write("#{comment.body.strip.convert_entities}\n")
21
26
  @count += 1
@@ -28,6 +33,11 @@ module USaidWat
28
33
  link = comment.link_id.split("_")[-1]
29
34
  "http://www.reddit.com/r/#{comment.subreddit}/comments/#{link}/z/#{comment.id}"
30
35
  end
36
+
37
+ def comment_date(comment)
38
+ fmt = ENV['USAIDWAT_TIME_FORMAT'] || '%d %b %Y, %I:%M %p'
39
+ DateTime.strptime(comment.created_utc.to_s, "%s").to_time.localtime.strftime(fmt)
40
+ end
31
41
  end
32
42
  end
33
43
  end
@@ -1,7 +1,7 @@
1
1
  module USaidWat
2
2
  module Service
3
3
  class MockComment
4
- attr_reader :subreddit, :body, :id, :link_id
4
+ attr_reader :subreddit, :body, :id, :link_id, :created_utc, :link_title
5
5
 
6
6
  def initialize(dict)
7
7
  data = dict['data']
@@ -9,6 +9,8 @@ module USaidWat
9
9
  @body = data['body']
10
10
  @id = data['id']
11
11
  @link_id = data['link_id']
12
+ @created_utc = data['created_utc']
13
+ @link_title = data['link_title']
12
14
  end
13
15
  end
14
16
 
@@ -1,3 +1,3 @@
1
1
  module USaidWat
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.6"
3
3
  end
@@ -11,10 +11,14 @@ module USaidWat
11
11
  expect(comment).to receive(:subreddit).twice.and_return("programming")
12
12
  expect(comment).to receive(:link_id).and_return("t3_13f783")
13
13
  expect(comment).to receive(:id).and_return("c73qhxi")
14
+ expect(comment).to receive(:link_title).and_return("Why Brit Ruby 2013 was cancelled and why this is not ok - Gist")
15
+ expect(comment).to receive(:created_utc).and_return(1433378314.0)
14
16
  expect(comment).to receive(:body).and_return("Welcome to the wonderful world of Python drama!")
15
17
  expected = <<-EXPECTED
16
18
  programming
17
19
  http://www.reddit.com/r/programming/comments/13f783/z/c73qhxi
20
+ Why Brit Ruby 2013 was cancelled and why this is not ok - Gist
21
+ 03 Jun 2015, 05:38 PM
18
22
 
19
23
  Welcome to the wonderful world of Python drama!
20
24
  EXPECTED
@@ -27,11 +31,15 @@ EXPECTED
27
31
  expect(comment1).to receive(:subreddit).twice.and_return("programming")
28
32
  expect(comment1).to receive(:link_id).and_return("t3_13f783")
29
33
  expect(comment1).to receive(:id).and_return("c73qhxi")
34
+ expect(comment1).to receive(:created_utc).and_return(1433378314.0)
35
+ expect(comment1).to receive(:link_title).and_return("Why Brit Ruby 2013 was cancelled and why this is not ok - Gist")
30
36
  expect(comment1).to receive(:body).and_return("Welcome to the wonderful world of Python drama!")
31
37
  comment2 = double("second comment")
32
38
  expect(comment2).to receive(:subreddit).twice.and_return("programming")
33
39
  expect(comment2).to receive(:link_id).and_return("t3_13f783")
34
40
  expect(comment2).to receive(:id).and_return("c73qhxi")
41
+ expect(comment2).to receive(:created_utc).and_return(1433378314.0)
42
+ expect(comment2).to receive(:link_title).and_return("Why Brit Ruby 2013 was cancelled and why this is not ok - Gist")
35
43
  expect(comment2).to receive(:body).and_return("Welcome to the wonderful world of Python drama!")
36
44
  s = formatter.format(comment1)
37
45
  s = formatter.format(comment2)
@@ -46,6 +54,8 @@ EXPECTED
46
54
  expect(comment).to receive(:subreddit).twice.and_return("test")
47
55
  expect(comment).to receive(:link_id).and_return("t3_13f783")
48
56
  expect(comment).to receive(:id).and_return("c73qhxi")
57
+ expect(comment).to receive(:created_utc).and_return(1433378314.0)
58
+ expect(comment).to receive(:link_title).and_return("Why Brit Ruby 2013 was cancelled and why this is not ok - Gist")
49
59
  expect(comment).to receive(:body).and_return("This is a comment.\n\nIt has two lines.\n\n\n")
50
60
  s = formatter.format(comment)
51
61
  lines = s.split("\n")
data/usaidwat.gemspec CHANGED
@@ -18,11 +18,12 @@ Gem::Specification.new do |gem|
18
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
19
  gem.require_paths = ["lib"]
20
20
 
21
- gem.add_dependency('snooby', '~> 0.1.5')
22
- gem.add_dependency('rainbow', '~> 2.0', '>= 2.0.0')
21
+ gem.add_runtime_dependency('snooby', '~> 0.1.5')
22
+ gem.add_runtime_dependency('rainbow', '~> 2.0')
23
+ gem.add_runtime_dependency('highline', '~> 1.7', '>= 1.7.2')
23
24
 
24
- gem.add_development_dependency('rspec', '~> 3.2', '>= 3.2.0')
25
- gem.add_development_dependency('cucumber', '~> 2.0', '>= 2.0.0')
25
+ gem.add_development_dependency('rspec', '~> 3.2')
26
+ gem.add_development_dependency('cucumber', '~> 2.0')
26
27
  gem.add_development_dependency('aruba', '~> 0.6.2')
27
- gem.add_development_dependency('webmock', '~> 1.21', '>= 1.21.0')
28
+ gem.add_development_dependency('webmock', '~> 1.21')
28
29
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: usaidwat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Dippery
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-31 00:00:00.000000000 Z
11
+ date: 2015-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: snooby
@@ -31,19 +31,33 @@ dependencies:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '2.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: highline
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.7'
34
48
  - - ">="
35
49
  - !ruby/object:Gem::Version
36
- version: 2.0.0
50
+ version: 1.7.2
37
51
  type: :runtime
38
52
  prerelease: false
39
53
  version_requirements: !ruby/object:Gem::Requirement
40
54
  requirements:
41
55
  - - "~>"
42
56
  - !ruby/object:Gem::Version
43
- version: '2.0'
57
+ version: '1.7'
44
58
  - - ">="
45
59
  - !ruby/object:Gem::Version
46
- version: 2.0.0
60
+ version: 1.7.2
47
61
  - !ruby/object:Gem::Dependency
48
62
  name: rspec
49
63
  requirement: !ruby/object:Gem::Requirement
@@ -51,9 +65,6 @@ dependencies:
51
65
  - - "~>"
52
66
  - !ruby/object:Gem::Version
53
67
  version: '3.2'
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- version: 3.2.0
57
68
  type: :development
58
69
  prerelease: false
59
70
  version_requirements: !ruby/object:Gem::Requirement
@@ -61,9 +72,6 @@ dependencies:
61
72
  - - "~>"
62
73
  - !ruby/object:Gem::Version
63
74
  version: '3.2'
64
- - - ">="
65
- - !ruby/object:Gem::Version
66
- version: 3.2.0
67
75
  - !ruby/object:Gem::Dependency
68
76
  name: cucumber
69
77
  requirement: !ruby/object:Gem::Requirement
@@ -71,9 +79,6 @@ dependencies:
71
79
  - - "~>"
72
80
  - !ruby/object:Gem::Version
73
81
  version: '2.0'
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- version: 2.0.0
77
82
  type: :development
78
83
  prerelease: false
79
84
  version_requirements: !ruby/object:Gem::Requirement
@@ -81,9 +86,6 @@ dependencies:
81
86
  - - "~>"
82
87
  - !ruby/object:Gem::Version
83
88
  version: '2.0'
84
- - - ">="
85
- - !ruby/object:Gem::Version
86
- version: 2.0.0
87
89
  - !ruby/object:Gem::Dependency
88
90
  name: aruba
89
91
  requirement: !ruby/object:Gem::Requirement
@@ -105,9 +107,6 @@ dependencies:
105
107
  - - "~>"
106
108
  - !ruby/object:Gem::Version
107
109
  version: '1.21'
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: 1.21.0
111
110
  type: :development
112
111
  prerelease: false
113
112
  version_requirements: !ruby/object:Gem::Requirement
@@ -115,9 +114,6 @@ dependencies:
115
114
  - - "~>"
116
115
  - !ruby/object:Gem::Version
117
116
  version: '1.21'
118
- - - ">="
119
- - !ruby/object:Gem::Version
120
- version: 1.21.0
121
117
  description: View a user's last 100 Reddit comments, organized by subreddit.
122
118
  email:
123
119
  - michael@monkey-robot.com