favt 0.1.1 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8ea6e7884c78dc9a87a2df33da350b76f53ec657
4
- data.tar.gz: a16bae914515ca427b9b681bbfeddc4f4850388b
3
+ metadata.gz: 22fdcc2d77b7cb92dfaf41890e77176c51b6ec12
4
+ data.tar.gz: 3c52f7271410151fb3dd8711994c48ade552a22c
5
5
  SHA512:
6
- metadata.gz: 203442991f08bf557e022fcacd12ab0b8c281596f8c35921df5ce06e2cccaba47fc64b159a1111148c84b43b2aa98cf8769a9eeb82aa39525ede110f599d2019
7
- data.tar.gz: 98b136059f648def0998f40d8e0cee2438415a0abca86accd9429b693e275c5a3aa0d91459f9e55eeb161f27c1df7670c6371d7fc9a38e374054c614f08f2003
6
+ metadata.gz: a6bfb7625e755c048a71ccc79b9495e695b52026eb775699a4beb225e8fa25452b02899ec10c7e27f345e1e1e2b6edba2a9afa0d4e7713931ee12e22e1da5199
7
+ data.tar.gz: c7e0a7d90ac006acca901e260cc2c3ec816f443012aa0ec06a0c5dcf78089550b7f79347388d2a12c7517f7d60efb09f52d4a313235f7c8bcbef8d374f9d801f
data/bin/favt CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
2
3
 
3
4
  require 'optparse'
4
5
  require 'colorize'
@@ -75,6 +76,12 @@ client:
75
76
  consumer_secret: "Your Consumer Secret Key"
76
77
  access_token: "Your Access Token"
77
78
  access_token_secret: "Your Access Token Secret"
79
+
80
+ custom_render:
81
+ users: "■"
82
+ screen_name: "#\{post.user.screen_name}\n"
83
+ post_text: "#\{post.text}"
84
+ post_url: "#\{post.url}"
78
85
 
79
86
  users:
80
87
  - "esehara"
data/lib/favt.rb CHANGED
@@ -1,122 +1,9 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  require "favt/version"
3
- require "twitter"
4
- require "colorize"
5
- require "yaml"
3
+ require "favt/client"
4
+ require "favt/render"
6
5
 
7
6
  module Favt
8
- class TwitterClient
9
- def init_client
10
- keys = @config["client"]
11
- @client = Twitter::REST::Client.new do |config|
12
- config.consumer_key = keys["consumer_key"]
13
- config.consumer_secret = keys["consumer_secret"]
14
- config.access_token = keys["access_token"]
15
- config.access_token_secret = keys["access_token_secret"]
16
- end
17
- end
18
-
19
- def initialize(options)
20
- yaml_file = options["config_file"] || "config.yaml"
21
- @render = options["render"] || Render
22
- @options = options
23
- @config = YAML.load_file(yaml_file)
24
-
25
- self.init_client()
26
- end
27
-
28
- def favorites_from_user
29
- users = self.target_users
30
- return users.flat_map do |user|
31
- @client.favorites user
32
- end
33
- end
34
-
35
- def take(set_fav_posts)
36
- show_count = @options["show_count"].to_i || 0
37
- if show_count != 0
38
- return set_fav_posts.take(show_count)
39
- end
40
- return set_fav_posts
41
- end
42
-
43
- def target_users
44
- if !@options["user"]
45
- return @config["users"]
46
- end
47
- return [@options["user"]]
48
- end
49
-
50
- def favorite_posts
51
- show_fav_posts = self.to_set(self.favorites_from_user.sort do
52
- |prev_post, next_post| next_post.id <=> prev_post.id
53
- end)
54
-
55
- return self.take(show_fav_posts)
56
- end
57
-
58
- def to_set(favorites)
59
- favorites_dict = {}
60
- favorites.each do |favorite|
61
- if !(favorites_dict.key? favorite.id)
62
- favorites_dict[favorite.id] = {
63
- "users" => 1, "post" => favorite}
64
- else
65
- favorites_dict[favorite.id]["users"] += 1
66
- end
67
- end
68
- return favorites_dict
69
- end
70
-
71
- def render
72
- self.favorite_posts.each do |_, favorite|
73
- print @render.new(favorite, @options).to_s
74
- end
75
- end
76
- end
77
-
78
- class Render
79
- def initialize(favorite, options)
80
- @users = favorite["users"]
81
- @post = favorite["post"]
82
- @options = options
83
- end
84
-
85
- def render_users
86
- render = "■"
87
-
88
- if !@options["no_color"]
89
- render = render.red
90
- end
91
-
92
- @users.times do
93
- print render
94
- end
95
- end
96
-
97
- def post_colorize(render_dict)
98
- if !@options["no_color"]
99
- render_dict[:screen_name] = render_dict[:screen_name].green.bold
100
- render_dict[:post_url] = render_dict[:post_url].blue
101
- end
102
- return render_dict
103
- end
104
-
105
- def render_post
106
- post = @post
107
-
108
- post_template = {
109
- screen_name: "[#{post.user.screen_name}] ",
110
- post_text: "#{post.text}\n",
111
- post_url: "#{post.url}\n",
112
- }
113
-
114
- self.post_colorize(post_template).values.join
115
- end
116
-
117
- def to_s
118
- self.render_users
119
- self.render_post
120
- end
121
- end
7
+ include Client
8
+ include Render
122
9
  end
@@ -0,0 +1,75 @@
1
+ # -*- coding: utf-8 -*-
2
+ require "twitter"
3
+ require "yaml"
4
+
5
+ module Client
6
+ class TwitterClient
7
+ def init_client
8
+ keys = @config["client"]
9
+ @client = Twitter::REST::Client.new do |config|
10
+ config.consumer_key = keys["consumer_key"]
11
+ config.consumer_secret = keys["consumer_secret"]
12
+ config.access_token = keys["access_token"]
13
+ config.access_token_secret = keys["access_token_secret"]
14
+ end
15
+ end
16
+
17
+ def initialize(options)
18
+ yaml_file = options["config_file"] || "config.yaml"
19
+ @render = options["render"] || Favt::Render
20
+ @options = options
21
+ @config = YAML.load_file(yaml_file)
22
+ self.init_client
23
+ end
24
+
25
+ def favorites_from_user
26
+ users = self.target_users
27
+ return users.flat_map do |user|
28
+ @client.favorites user
29
+ end
30
+ end
31
+
32
+ def take(set_fav_posts)
33
+ show_count = @options["show_count"].to_i || 0
34
+ if show_count != 0
35
+ return set_fav_posts.take(show_count)
36
+ end
37
+ return set_fav_posts
38
+ end
39
+
40
+ def target_users
41
+ if !@options["user"]
42
+ return @config["users"]
43
+ end
44
+ return [@options["user"]]
45
+ end
46
+
47
+ def favorite_posts
48
+ show_fav_posts = self.to_set(self.favorites_from_user.sort do
49
+ |prev_post, next_post| next_post.id <=> prev_post.id
50
+ end)
51
+
52
+ return self.take(show_fav_posts)
53
+ end
54
+
55
+ def to_set(favorites)
56
+ favorites_dict = {}
57
+ favorites.each do |favorite|
58
+ if !(favorites_dict.key? favorite.id)
59
+ favorites_dict[favorite.id] = {
60
+ "users" => 1, "post" => favorite}
61
+ else
62
+ favorites_dict[favorite.id]["users"] += 1
63
+ end
64
+ end
65
+ return favorites_dict
66
+ end
67
+
68
+ def render
69
+ self.favorite_posts.each do |_, favorite|
70
+ print @render.new(favorite, @options, @config).to_s
71
+ print "\n"
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,79 @@
1
+ # -*- coding: utf-8 -*-
2
+ require "colorize"
3
+
4
+ module Render
5
+ class Render
6
+ def initialize(favorite, options, config)
7
+
8
+ @favorite = favorite
9
+ @options = options
10
+ @config = config
11
+
12
+ self.init_custom_render
13
+ .repack
14
+ end
15
+
16
+ def repack
17
+ post = @favorite["post"]
18
+
19
+ @render = {}
20
+ @render[:users] = @origin_render[:users] * @favorite["users"]
21
+ @render[:screen_name] = @origin_render[:screen_name]
22
+ .sub('#{post.user.screen_name}', post.user.screen_name)
23
+ @render[:post_text] = @origin_render[:post_text]
24
+ .sub('#{post.text}', post.text)
25
+ @render[:post_url] = @origin_render[:post_url]
26
+ .sub('#{post.url}', post.url.to_s)
27
+ end
28
+
29
+ def init_custom_render
30
+ custom_render = @config["custom_render"]
31
+
32
+ # First Initialize Values
33
+
34
+ users_str = '■'
35
+ screen_name_str = '[#{post.user.screen_name}]\n'
36
+ post_text_str = '#{post.text}\n'
37
+ post_url_str = '#{post.url}\n'
38
+
39
+ if custom_render
40
+ users_str = custom_render["users"] || users_str
41
+ screen_name_str = custom_render["screen_name"] || screen_name_str
42
+ post_text_str = custom_render["post_text"] || post_text_str
43
+ post_url_str = custom_render["post_url"] || post_url_str
44
+ end
45
+
46
+ @origin_render = {
47
+ users: users_str,
48
+ screen_name: screen_name_str,
49
+ post_text: post_text_str,
50
+ post_url: post_url_str
51
+ }
52
+ return self
53
+ end
54
+
55
+ def user_colorize
56
+ if !@options["no_color"]
57
+ @render[:users] = @render[:users].red
58
+ end
59
+ return self
60
+ end
61
+
62
+ def post_colorize
63
+ if !@options["no_color"]
64
+ @render[:screen_name] = @render[:screen_name].green.bold
65
+ @render[:post_url] = @render[:post_url].blue
66
+ end
67
+ return @render
68
+ end
69
+
70
+ def to_s
71
+ self
72
+ .user_colorize
73
+ .post_colorize
74
+ .values.join
75
+ .sub("\\n", "\n")
76
+ end
77
+ end
78
+ end
79
+
data/lib/favt/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Favt
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: favt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - esehara shigeo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-07 00:00:00.000000000 Z
11
+ date: 2014-10-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: twitter
@@ -83,6 +83,8 @@ files:
83
83
  - config.sample.yaml
84
84
  - favt.gemspec
85
85
  - lib/favt.rb
86
+ - lib/favt/client.rb
87
+ - lib/favt/render.rb
86
88
  - lib/favt/version.rb
87
89
  homepage: ''
88
90
  licenses: