git-trend 1.1.7 → 1.1.8

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: 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