git-trend 1.1.7 → 1.1.8

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: a1737082fa6fe05f7987fee1930513062cfac740
4
- data.tar.gz: 21816ac3c04291ffb636b00a2c362f7a7b16a1b1
3
+ metadata.gz: 126ab6ca6c31c5071f4b7c5bbf8968af1570783e
4
+ data.tar.gz: ccfefaa8fef06af6785b7fc69dbe8570545b82fe
5
5
  SHA512:
6
- metadata.gz: ca7a8ca768daf05888f8a8d65e95fb38decea33325306101055ae17f9aa8b4603dae271dbbd2a2f7b8a2154099c18e5400cdde087bb7611e954808040e84b3a2
7
- data.tar.gz: fcd93412836ad53cffe5c67422bdbd2d1bac191f441ab140b572e436e35de636003041b51f477e9493733678c343219449151058bc648c98b278dabf683050c0
6
+ metadata.gz: 1bce4a42eef223ff8467b60c8d1a2d7ead74044ba8fad675652d55e7d7d61776d73a2198f94d0690c5f7f23ccaf3dd2d5fadb696d97856e4d8711402b6743f70
7
+ data.tar.gz: 58cd27be8f81940cd3a4882ba642b5cc269e31b6d3aad3822fbdee243be4b1a5a63b8efa7e9579636ce053af3b9fb833f5e073728943a429a9297fd7ab98b010
@@ -1,3 +1,7 @@
1
+ ## v1.1.8 (Sat Jul 22 2017)
2
+
3
+ - Add the format option[f0136a3]
4
+
1
5
  ## v1.1.7 (Tue Jul 18 2017)
2
6
 
3
7
  - Fix NoMethodError when fork count is nothing #10 [6bdf1f6]
@@ -1,6 +1,9 @@
1
1
  require "mb_string"
2
2
 
3
3
  require "git_trend/cli"
4
+ require "git_trend/formatter"
5
+ require "git_trend/formatters/text_formatter"
6
+ require "git_trend/formatters/json_formatter"
4
7
  require "git_trend/project"
5
8
  require "git_trend/scraper"
6
9
  require "git_trend/version"
@@ -1,10 +1,7 @@
1
1
  require "thor"
2
- require "git_trend/rendering"
3
2
 
4
3
  module GitTrend
5
4
  class CLI < Thor
6
- include Rendering
7
-
8
5
  map "-v" => :version,
9
6
  "--version" => :version
10
7
 
@@ -19,23 +16,27 @@ module GitTrend
19
16
  option :language, aliases: "-l", required: false, desc: "Specify a language"
20
17
  option :since, aliases: "-s", required: false, desc: "Enable: [d, day, daily, w, week, weekly, m, month, monthly]"
21
18
  option :description, aliases: "-d", required: false, default: true, type: :boolean, desc: "\033[32m(DEFAULT OPTION)\e[0m Dislpay descriptions"
19
+ option :format, aliases: "-f", required: false, default: "text", desc: "Choose a formatter as text or json. Enable: [t, text, j, json]"
22
20
  option :number, aliases: "-n", required: false, type: :numeric, desc: "Number of lines"
23
21
  option :help, aliases: "-h", required: false, type: :boolean
24
22
  def list
25
23
  help(:list) && return if options[:help]
26
24
  scraper = Scraper.new
27
25
  projects = scraper.get(options[:language], options[:since], options[:number])
28
- render(projects, !!options[:description])
26
+ formatter = Formatter.new(options[:format])
27
+ formatter.print(projects, enable_description: !!options[:description])
29
28
  rescue => e
30
29
  say "An unexpected #{e.class} has occurred.", :red
31
30
  say e.message unless e.class.to_s == e.message
32
31
  end
33
32
 
34
33
  desc :languages, "Show selectable languages"
34
+ option :format, aliases: "-f", required: false, default: "text", desc: "Choose a formatter as text or json. Enable: [t, text, j, json]"
35
35
  def languages
36
36
  scraper = Scraper.new
37
37
  languages = scraper.languages
38
- render_languages(languages)
38
+ formatter = Formatter.new(options[:format])
39
+ formatter.print_languages(languages)
39
40
  end
40
41
  end
41
42
  end
@@ -0,0 +1,23 @@
1
+ module GitTrend
2
+ class Formatter
3
+ def initialize(key)
4
+ @formatter = formatter_class(key).new
5
+ end
6
+
7
+ def print(projects, options = nil)
8
+ @formatter.print(projects, options)
9
+ end
10
+
11
+ def print_languages(languages)
12
+ @formatter.print_languages(languages)
13
+ end
14
+
15
+ private
16
+ def formatter_class(key)
17
+ case key
18
+ when "j", "json" then Formatters::JsonFormatter
19
+ else Formatters::TextFormatter
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,13 @@
1
+ require "json"
2
+
3
+ module GitTrend::Formatters
4
+ class JsonFormatter
5
+ def print(projects, options)
6
+ puts projects.map { |project| project.to_h }.to_json
7
+ end
8
+
9
+ def print_languages(languages)
10
+ puts languages.to_json
11
+ end
12
+ end
13
+ end
@@ -1,20 +1,17 @@
1
- module GitTrend
2
- module Rendering
3
- def self.included(base)
4
- base.extend(self)
5
- end
1
+ module GitTrend::Formatters
2
+ class TextFormatter
6
3
  HEADER_COLUMNS = %w(no. name lang star description)
7
4
  DEFAULT_COLUMNS_SIZES = [3, 40, 10, 6, 20]
8
5
 
9
- def render(projects, enable_description = false)
10
- @enable_description = enable_description
6
+ def print(projects, options)
7
+ @enable_description = options[:enable_description]
11
8
  rule_columns_sizes(projects)
12
9
  render_header
13
10
  render_body(projects)
14
11
  render_footer
15
12
  end
16
13
 
17
- def render_languages(languages)
14
+ def print_languages(languages)
18
15
  puts languages
19
16
  puts
20
17
  puts "#{languages.size} languages"
@@ -69,7 +66,7 @@ module GitTrend
69
66
  fmt = "%#{f[0]}s %-#{f[1]}s %-#{f[2]}s %#{f[3]}s"
70
67
  description_fmt = ""
71
68
  projects.each_with_index do |project, i|
72
- data = [i + 1, project.to_a].flatten
69
+ data = [i + 1, [project.name, project.lang, project.star_count.to_s]].flatten
73
70
  if @enable_description
74
71
  description = project.description.mb_truncate(f.last)
75
72
  data << description
@@ -11,8 +11,15 @@ module GitTrend
11
11
  self.star_count = star_count
12
12
  end
13
13
 
14
- def to_a
15
- [@name, @lang, @star_count.to_s]
14
+ def to_h
15
+ {
16
+ name: name,
17
+ description: description,
18
+ lang: lang,
19
+ all_star_count: all_star_count,
20
+ fork_count: fork_count,
21
+ star_count: star_count,
22
+ }
16
23
  end
17
24
  end
18
25
  end
@@ -1,3 +1,3 @@
1
1
  module GitTrend
2
- VERSION = "1.1.7"
2
+ VERSION = "1.1.8"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git-trend
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.7
4
+ version: 1.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - rochefort
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-07-18 00:00:00.000000000 Z
11
+ date: 2017-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -217,8 +217,10 @@ files:
217
217
  - lib/git-trend.rb
218
218
  - lib/git_trend.rb
219
219
  - lib/git_trend/cli.rb
220
+ - lib/git_trend/formatter.rb
221
+ - lib/git_trend/formatters/json_formatter.rb
222
+ - lib/git_trend/formatters/text_formatter.rb
220
223
  - lib/git_trend/project.rb
221
- - lib/git_trend/rendering.rb
222
224
  - lib/git_trend/scraper.rb
223
225
  - lib/git_trend/version.rb
224
226
  - note.txt