nazar 0.0.6 → 0.0.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
  SHA256:
3
- metadata.gz: caea3f0827d9d39e782cf749a4e4d1d4828ef5e6c0fc1293eceb4aa084ea77c7
4
- data.tar.gz: 3dcb286c61452847f5c5d0d6aa8ea03d36943ba76c322cf0c09995cb6655efe5
3
+ metadata.gz: ae9a224c9ae75c4e9b85ef48d22c97ea0c293b42aa859cc03dd4e0f31abed150
4
+ data.tar.gz: e2450f3e6a340c7bd6e1e239201c6bf7e7248c9e88d4e032d1e7e09be96d40aa
5
5
  SHA512:
6
- metadata.gz: 66df708fe14e78480c65ef01f1353e0454b4f423aa2a47888c6b9ce3c19a2ddec26d53ce64f18d4b6339eaaa64c4ae5591e2d680e5e90721f86ac50baf932658
7
- data.tar.gz: 79976a910bf1bd58c8a0b60bbe9d50d4c0a24d61d2dcc756f5fe3404e672263e332ea5feeae1f20631addc0c991c216b6e93d84e03d34b02a37e613883418495
6
+ metadata.gz: 39ed17bba483fde391edcafe72f942f7f38777f25d1baa152ddfc5121a1e2019c686f736af537e46a65e4fca6edd7a6acc02858a8d569f9bf7376b9d9e8824f3
7
+ data.tar.gz: 7318b8a9beb572d8a6732734b4847ea7bd2c856b32def45c91ee88034eef122026d5f340e88d40b983c106f793b1f5df0047d7d28526b192f3b916c311439f12
checksums.yaml.gz.sig CHANGED
Binary file
@@ -35,4 +35,8 @@ jobs:
35
35
  ruby-version: 2.7
36
36
  bundler-cache: true
37
37
  - name: Specs
38
- run: bundle exec rspec
38
+ uses: paambaati/codeclimate-action@v2.7.5
39
+ env:
40
+ CC_TEST_REPORTER_ID: ${{secrets.CC_TEST_REPORTER_ID}}
41
+ with:
42
+ coverageCommand: bundle exec rspec
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Nazar [![Build Status](https://github.com/krzyzak/nazar/actions/workflows/main.yml/badge.svg)](https://github.com/krzyzak/nazar/actions) [![Gem Version](https://badge.fury.io/rb/nazar.svg)](https://badge.fury.io/rb/nazar) [![Code Climate](https://codeclimate.com/github/krzyzak/nazar/badges/gpa.svg)](https://codeclimate.com/github/krzyzak/nazar)
1
+ # Nazar [![Build Status](https://github.com/krzyzak/nazar/actions/workflows/main.yml/badge.svg)](https://github.com/krzyzak/nazar/actions) [![Gem Version](https://badge.fury.io/rb/nazar.svg)](https://badge.fury.io/rb/nazar) [![Code Climate](https://codeclimate.com/github/krzyzak/nazar/badges/gpa.svg)](https://codeclimate.com/github/krzyzak/nazar) [![Test Coverage](https://api.codeclimate.com/v1/badges/f89b8bfdf557900e1f9f/test_coverage)](https://codeclimate.com/github/krzyzak/nazar/test_coverage)
2
2
 
3
3
  Nazar improves defvault inspect output for console applications (supports IRB and Pry).
4
4
 
@@ -15,6 +15,12 @@ module Nazar
15
15
  @klass = collection.first&.class
16
16
  end
17
17
 
18
+ def self.valid?(data)
19
+ data.is_a?(ActiveRecord::Associations::CollectionProxy) ||
20
+ data.is_a?(ActiveRecord::Relation) ||
21
+ (data.is_a?(Array) && data.first.is_a?(ActiveRecord::Base))
22
+ end
23
+
18
24
  def summary
19
25
  collection.size
20
26
  end
@@ -13,6 +13,10 @@ module Nazar
13
13
  @klass = item.class
14
14
  end
15
15
 
16
+ def self.valid?(data)
17
+ data.is_a?(ActiveRecord::Base)
18
+ end
19
+
16
20
  def summary
17
21
  false
18
22
  end
@@ -9,6 +9,10 @@ module Nazar
9
9
  @collection = collection
10
10
  end
11
11
 
12
+ def self.valid?(data)
13
+ data.is_a?(CSV::Table)
14
+ end
15
+
12
16
  def valid?
13
17
  !!collection && !collection.empty?
14
18
  end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'nazar/formatter/sequel_interface'
4
+
5
+ module Nazar
6
+ module Formatter
7
+ class SequelCollection
8
+ include SequelInterface
9
+
10
+ def initialize(collection)
11
+ @collection = collection
12
+ @attributes = collection.first&.values
13
+ end
14
+
15
+ def self.valid?(data)
16
+ data.is_a?(Array) && data.first.is_a?(Sequel::Model)
17
+ end
18
+
19
+ def summary
20
+ collection.size
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Nazar
4
+ module Formatter
5
+ module SequelInterface
6
+ attr_reader :collection, :klass, :attributes
7
+
8
+ def valid?
9
+ !!attributes
10
+ end
11
+
12
+ def headers
13
+ HeadersFormatter.new(attributes.keys).format
14
+ end
15
+
16
+ def cells
17
+ @cells ||= begin
18
+ schema = collection.first.db_schema
19
+
20
+ collection.map do |item|
21
+ item.values.map do |column, value|
22
+ CellFormatter.new(value, type: schema.dig(column, :type)).format
23
+ end
24
+ end
25
+ end
26
+ end
27
+
28
+ def summary
29
+ collection.size
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'nazar/formatter/sequel_interface'
4
+
5
+ module Nazar
6
+ module Formatter
7
+ class SequelItem
8
+ include SequelInterface
9
+
10
+ def initialize(item)
11
+ @collection = [item]
12
+ @attributes = item.values
13
+ @klass = item.class
14
+ end
15
+
16
+ def self.valid?(data)
17
+ data.is_a?(Sequel::Model)
18
+ end
19
+
20
+ def summary
21
+ false
22
+ end
23
+ end
24
+ end
25
+ end
data/lib/nazar/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Nazar
4
- VERSION = '0.0.6'
4
+ VERSION = '0.0.8'
5
5
  end
data/lib/nazar/view.rb CHANGED
@@ -27,48 +27,13 @@ module Nazar
27
27
  attr_reader :data
28
28
 
29
29
  def formatter_klass
30
- @formatter_klass ||= case data
31
- when boolean?
32
- nil
33
- when acttive_record_collection?
34
- Formatter::ActiveRecordCollection
35
- when active_record_item?
36
- Formatter::ActiveRecordItem
37
- when csv_table?
38
- Formatter::CSVTable
39
- end
30
+ @formatter_klass ||= Nazar.formatters.find { |klass| klass.valid?(data) }
40
31
  end
41
32
 
42
33
  def formatter
43
34
  @formatter ||= formatter_klass.new(data)
44
35
  end
45
36
 
46
- def boolean?
47
- proc { data === true || data === false } # rubocop:disable Style/CaseEquality
48
- end
49
-
50
- def acttive_record_collection?
51
- return false unless Nazar.extensions.include?(:active_record)
52
-
53
- proc do
54
- data.is_a?(ActiveRecord::Associations::CollectionProxy) ||
55
- data.is_a?(ActiveRecord::Relation) ||
56
- (data.is_a?(Array) && data.first.is_a?(ActiveRecord::Base))
57
- end
58
- end
59
-
60
- def active_record_item?
61
- return false unless Nazar.extensions.include?(:active_record)
62
-
63
- proc { data.is_a?(ActiveRecord::Base) }
64
- end
65
-
66
- def csv_table?
67
- return false unless Nazar.extensions.include?(:csv)
68
-
69
- proc { data.is_a?(CSV::Table) }
70
- end
71
-
72
37
  def add_summary
73
38
  table.add_separator
74
39
  table.add_row [pastel.bold('Total'), { value: summary, colspan: headers.size - 1 }]
data/lib/nazar.rb CHANGED
@@ -25,8 +25,8 @@ module Nazar
25
25
  end
26
26
 
27
27
  class << self
28
- def extensions
29
- @extensions ||= Set.new
28
+ def formatters
29
+ @formatters ||= Set.new
30
30
  end
31
31
 
32
32
  def enable!(extensions: [:active_record, :csv])
@@ -34,6 +34,7 @@ module Nazar
34
34
 
35
35
  load_active_record! if extensions.include?(:active_record)
36
36
  load_csv! if extensions.include?(:csv)
37
+ load_sequel! if extensions.include?(:sequel)
37
38
 
38
39
  enable_for_irb! if defined?(IRB)
39
40
  enable_for_pry! if defined?(Pry)
@@ -42,18 +43,29 @@ module Nazar
42
43
  end
43
44
 
44
45
  def load_csv!
45
- extensions << :csv
46
-
47
46
  require 'csv'
48
- load 'nazar/formatter/csv_table.rb'
47
+
48
+ register_formatter!('CSVTable', 'nazar/formatter/csv_table')
49
49
  end
50
50
 
51
51
  def load_active_record!
52
- extensions << :active_record
53
-
54
52
  require 'active_record'
55
- load 'nazar/formatter/active_record_collection.rb'
56
- load 'nazar/formatter/active_record_item.rb'
53
+
54
+ register_formatter!('ActiveRecordCollection', 'nazar/formatter/active_record_collection')
55
+ register_formatter!('ActiveRecordItem', 'nazar/formatter/active_record_item')
56
+ end
57
+
58
+ def load_sequel!
59
+ require 'sequel'
60
+
61
+ register_formatter!('SequelCollection', 'nazar/formatter/sequel_collection')
62
+ register_formatter!('SequelItem', 'nazar/formatter/sequel_item')
63
+ end
64
+
65
+ def register_formatter!(klass_name, path)
66
+ require path
67
+
68
+ formatters << Nazar::Formatter.const_get(klass_name)
57
69
  end
58
70
 
59
71
  def enable_for_irb!
data/nazar.gemspec CHANGED
@@ -28,7 +28,9 @@ Gem::Specification.new do |spec|
28
28
 
29
29
  spec.add_development_dependency 'activerecord', '>= 3.0', '< 6.2'
30
30
  spec.add_development_dependency 'rubocop', '~> 1.21'
31
- spec.add_development_dependency 'sqlite3'
31
+ spec.add_development_dependency 'sequel', '~> 5.0'
32
+ spec.add_development_dependency 'simplecov', '~> 0.20'
33
+ spec.add_development_dependency 'sqlite3', '~> 1.0'
32
34
 
33
35
  spec.add_runtime_dependency 'dry-configurable', '~> 0.12'
34
36
  spec.add_runtime_dependency 'pastel', '~> 0.8'
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nazar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michał Krzyżanowski
@@ -36,7 +36,7 @@ cert_chain:
36
36
  FlwFUDGjWAe8lcsjyGp1dox0FK91TAHdZW1op8LYnOcO2DM8Mgzu4Gp7mibATEnx
37
37
  ooN2pwmH
38
38
  -----END CERTIFICATE-----
39
- date: 2021-09-23 00:00:00.000000000 Z
39
+ date: 2021-09-24 00:00:00.000000000 Z
40
40
  dependencies:
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: activerecord
@@ -72,20 +72,48 @@ dependencies:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
74
  version: '1.21'
75
+ - !ruby/object:Gem::Dependency
76
+ name: sequel
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '5.0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '5.0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: simplecov
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '0.20'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '0.20'
75
103
  - !ruby/object:Gem::Dependency
76
104
  name: sqlite3
77
105
  requirement: !ruby/object:Gem::Requirement
78
106
  requirements:
79
- - - ">="
107
+ - - "~>"
80
108
  - !ruby/object:Gem::Version
81
- version: '0'
109
+ version: '1.0'
82
110
  type: :development
83
111
  prerelease: false
84
112
  version_requirements: !ruby/object:Gem::Requirement
85
113
  requirements:
86
- - - ">="
114
+ - - "~>"
87
115
  - !ruby/object:Gem::Version
88
- version: '0'
116
+ version: '1.0'
89
117
  - !ruby/object:Gem::Dependency
90
118
  name: dry-configurable
91
119
  requirement: !ruby/object:Gem::Requirement
@@ -167,6 +195,9 @@ files:
167
195
  - lib/nazar/formatter/active_record_interface.rb
168
196
  - lib/nazar/formatter/active_record_item.rb
169
197
  - lib/nazar/formatter/csv_table.rb
198
+ - lib/nazar/formatter/sequel_collection.rb
199
+ - lib/nazar/formatter/sequel_interface.rb
200
+ - lib/nazar/formatter/sequel_item.rb
170
201
  - lib/nazar/headers_formatter.rb
171
202
  - lib/nazar/renderer.rb
172
203
  - lib/nazar/version.rb
metadata.gz.sig CHANGED
Binary file