nazar 0.0.2 → 0.0.4
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 +4 -4
- checksums.yaml.gz.sig +2 -2
- data/.github/workflows/main.yml +38 -0
- data/.rubocop.yml +12 -1
- data/README.md +5 -29
- data/lib/nazar/cell_formatter.rb +4 -4
- data/lib/nazar/formatter/active_record_collection.rb +5 -2
- data/lib/nazar/formatter/active_record_interface.rb +7 -1
- data/lib/nazar/formatter/active_record_item.rb +1 -0
- data/lib/nazar/formatter/csv_table.rb +4 -0
- data/lib/nazar/formatter.rb +2 -2
- data/lib/nazar/headers_formatter.rb +1 -1
- data/lib/nazar/renderer.rb +0 -4
- data/lib/nazar/version.rb +1 -1
- data/lib/nazar/view.rb +22 -8
- data/lib/nazar.rb +54 -32
- data/nazar.gemspec +3 -2
- data.tar.gz.sig +0 -0
- metadata +27 -12
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bc538e2fec48e0daf00bd670d1c5aa204f9caa6a045397cfcf32e92d433b379f
|
4
|
+
data.tar.gz: 17658ef498b4c1f9f14a8ba91e3ad53aa3de347a95302042647b8e30decd6d91
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bdd620ad635fdfde0337d339c28b570e412bbd7d7d1e6701f76cf9ad028eb92c22a77e013ad7ef7e460dd1114e2e9ffb66039ca18276455a255445ce156ccc1c
|
7
|
+
data.tar.gz: 9737cb971cc7a46118640e352e90745915101f409ba5297b432e046343715e53261f17c4bad80f332ec1878ff2e8911742be5f6bdefe42e50fa280f3674187fd
|
checksums.yaml.gz.sig
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
W
|
2
|
-
|
1
|
+
�y1����J�� ;���5���:b��܈ې��*Wީg=JT�o�d�]�uV��Vnc-zC͉�r�r�_����aJ�C�M��g��Ǹd�%#z�<�[*-(���/
|
2
|
+
ȁ8k~A�h)Ǫ"�Zy�W����M;0o��;�^�)NL�}���ѵ��g;�9Z⋠� ��V� ]f�I���4���U���t�Q� TU��y���L.���r���4�E��#<���B���>��y�[��t<�}Rձa�||�ݦu~g��HЊH�Nr�1{|U1(���<P�MG~Xh�K�O��bU�10![|��>�T��Z�� V6�Ԟ��[j&�c@x 0���I�=�~O2��D'�����@��`��H�c��տ!.��
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# This is a basic workflow to help you get started with Actions
|
2
|
+
|
3
|
+
name: CI
|
4
|
+
|
5
|
+
# Controls when the workflow will run
|
6
|
+
on: [push]
|
7
|
+
|
8
|
+
jobs:
|
9
|
+
build:
|
10
|
+
runs-on: ubuntu-latest
|
11
|
+
steps:
|
12
|
+
- uses: actions/checkout@v2
|
13
|
+
- uses: ruby/setup-ruby@v1
|
14
|
+
with:
|
15
|
+
ruby-version: 2.7
|
16
|
+
bundler-cache: true
|
17
|
+
|
18
|
+
- name: Bundle
|
19
|
+
run: bundle
|
20
|
+
rubocop:
|
21
|
+
runs-on: ubuntu-latest
|
22
|
+
steps:
|
23
|
+
- uses: actions/checkout@v2
|
24
|
+
- uses: ruby/setup-ruby@v1
|
25
|
+
with:
|
26
|
+
ruby-version: 2.7
|
27
|
+
bundler-cache: true
|
28
|
+
- run: bundle exec rubocop --format simple
|
29
|
+
specs:
|
30
|
+
runs-on: ubuntu-latest
|
31
|
+
steps:
|
32
|
+
- uses: actions/checkout@v2
|
33
|
+
- uses: ruby/setup-ruby@v1
|
34
|
+
with:
|
35
|
+
ruby-version: 2.7
|
36
|
+
bundler-cache: true
|
37
|
+
- name: Specs
|
38
|
+
run: bundle exec rspec
|
data/.rubocop.yml
CHANGED
@@ -1,4 +1,15 @@
|
|
1
1
|
AllCops:
|
2
2
|
NewCops: enable
|
3
3
|
Style/Documentation:
|
4
|
-
Enabled: false
|
4
|
+
Enabled: false
|
5
|
+
Style/SymbolArray:
|
6
|
+
EnforcedStyle: brackets
|
7
|
+
Style/WordArray:
|
8
|
+
EnforcedStyle: brackets
|
9
|
+
Metrics/BlockLength:
|
10
|
+
Exclude:
|
11
|
+
- 'spec/**/*_spec.rb'
|
12
|
+
Layout/CaseIndentation:
|
13
|
+
EnforcedStyle: end
|
14
|
+
Layout/EndAlignment:
|
15
|
+
EnforcedStyleAlignWith: variable
|
data/README.md
CHANGED
@@ -1,36 +1,12 @@
|
|
1
|
-
# Nazar
|
1
|
+
# Nazar [](https://github.com/krzyzak/nazar/actions) [](https://codeclimate.com/github/krzyzak/nazar)
|
2
2
|
|
3
|
-
|
3
|
+
Nazar improves defvault inspect output for console applications (supports IRB and Pry).
|
4
4
|
|
5
|
-
|
5
|
+
**Nazar is under heavy development now. Expect bumpy ride or wait until the API will stabilise a bit ;)**
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
Add this line to your application's Gemfile:
|
10
|
-
|
11
|
-
```ruby
|
12
|
-
gem 'nazar'
|
13
|
-
```
|
14
|
-
|
15
|
-
And then execute:
|
16
|
-
|
17
|
-
$ bundle install
|
18
|
-
|
19
|
-
Or install it yourself as:
|
20
|
-
|
21
|
-
$ gem install nazar
|
22
|
-
|
23
|
-
## Usage
|
24
|
-
|
25
|
-
TODO: Write usage instructions here
|
26
|
-
|
27
|
-
## Development
|
28
|
-
|
29
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
30
|
-
|
31
|
-
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
7
|
+
[](https://asciinema.org/a/436814)
|
32
8
|
|
33
9
|
## Contributing
|
34
10
|
|
35
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
11
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/krzyzak/nazar.
|
36
12
|
|
data/lib/nazar/cell_formatter.rb
CHANGED
@@ -11,8 +11,8 @@ module Nazar
|
|
11
11
|
case type
|
12
12
|
when :boolean
|
13
13
|
format_boolean(value)
|
14
|
-
when :
|
15
|
-
Pastel.new.bright_blue(value)
|
14
|
+
when :integer
|
15
|
+
Pastel.new(enabled: Nazar.config.colors.enabled).bright_blue(value)
|
16
16
|
else
|
17
17
|
value.nil? ? format_nil : value.to_s
|
18
18
|
end
|
@@ -26,11 +26,11 @@ module Nazar
|
|
26
26
|
return format_nil if value.nil?
|
27
27
|
|
28
28
|
true_value, false_value = Nazar.config.formatter.boolean
|
29
|
-
Formatter::TRUTHY_VALUES.include?(value) ? true_value : false_value
|
29
|
+
Formatter::TRUTHY_VALUES.include?(value.to_s.downcase) ? true_value : false_value
|
30
30
|
end
|
31
31
|
|
32
32
|
def format_nil
|
33
|
-
Pastel.new.dim(Nazar.config.formatter.nil)
|
33
|
+
Pastel.new(enabled: Nazar.config.colors.enabled).dim(Nazar.config.formatter.nil)
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'nazar/formatter/active_record_interface'
|
3
4
|
|
4
5
|
module Nazar
|
@@ -8,8 +9,10 @@ module Nazar
|
|
8
9
|
|
9
10
|
def initialize(collection)
|
10
11
|
@collection = collection
|
11
|
-
@
|
12
|
-
|
12
|
+
@collection.load if @collection.respond_to?(:loaded?) && !@collection.loaded?
|
13
|
+
|
14
|
+
@attributes = collection.first&.attributes
|
15
|
+
@klass = collection.first&.class
|
13
16
|
end
|
14
17
|
|
15
18
|
def summary
|
@@ -1,8 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Nazar
|
2
4
|
module Formatter
|
3
5
|
module ActiveRecordInterface
|
4
6
|
attr_reader :collection, :klass, :attributes
|
5
7
|
|
8
|
+
def valid?
|
9
|
+
!!(attributes && klass)
|
10
|
+
end
|
11
|
+
|
6
12
|
def headers
|
7
13
|
HeadersFormatter.new(attributes.keys).format
|
8
14
|
end
|
@@ -16,4 +22,4 @@ module Nazar
|
|
16
22
|
end
|
17
23
|
end
|
18
24
|
end
|
19
|
-
end
|
25
|
+
end
|
data/lib/nazar/formatter.rb
CHANGED
data/lib/nazar/renderer.rb
CHANGED
data/lib/nazar/version.rb
CHANGED
data/lib/nazar/view.rb
CHANGED
@@ -13,13 +13,13 @@ module Nazar
|
|
13
13
|
def render
|
14
14
|
return unless supported_data?
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
table.tap do
|
17
|
+
add_summary if summary
|
18
|
+
end
|
19
19
|
end
|
20
20
|
|
21
21
|
def supported_data?
|
22
|
-
!!formatter_klass
|
22
|
+
!!formatter_klass && formatter.valid?
|
23
23
|
end
|
24
24
|
|
25
25
|
private
|
@@ -27,21 +27,23 @@ module Nazar
|
|
27
27
|
attr_reader :data
|
28
28
|
|
29
29
|
def formatter_klass
|
30
|
-
case data
|
30
|
+
@formatter_klass ||= case data
|
31
31
|
when acttive_record_collection?
|
32
32
|
Formatter::ActiveRecordCollection
|
33
33
|
when active_record_item?
|
34
34
|
Formatter::ActiveRecordItem
|
35
|
-
when
|
35
|
+
when csv_table?
|
36
36
|
Formatter::CSVTable
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
40
|
def formatter
|
41
|
-
formatter_klass.new(data)
|
41
|
+
@formatter ||= formatter_klass.new(data)
|
42
42
|
end
|
43
43
|
|
44
44
|
def acttive_record_collection?
|
45
|
+
return false unless Nazar.extensions.include?(:active_record)
|
46
|
+
|
45
47
|
proc do
|
46
48
|
data.is_a?(ActiveRecord::Associations::CollectionProxy) ||
|
47
49
|
data.is_a?(ActiveRecord::Relation) ||
|
@@ -50,12 +52,20 @@ module Nazar
|
|
50
52
|
end
|
51
53
|
|
52
54
|
def active_record_item?
|
55
|
+
return false unless Nazar.extensions.include?(:active_record)
|
56
|
+
|
53
57
|
proc { data.is_a?(ActiveRecord::Base) }
|
54
58
|
end
|
55
59
|
|
60
|
+
def csv_table?
|
61
|
+
return false unless Nazar.extensions.include?(:csv)
|
62
|
+
|
63
|
+
proc { data.is_a?(CSV::Table) }
|
64
|
+
end
|
65
|
+
|
56
66
|
def add_summary
|
57
67
|
table.add_separator
|
58
|
-
table.add_row [
|
68
|
+
table.add_row [pastel.bold('Total'), { value: summary, colspan: headers.size - 1 }]
|
59
69
|
end
|
60
70
|
|
61
71
|
def table
|
@@ -65,5 +75,9 @@ module Nazar
|
|
65
75
|
style: { border: :unicode_thick_edge }
|
66
76
|
)
|
67
77
|
end
|
78
|
+
|
79
|
+
def pastel
|
80
|
+
@pastel ||= Pastel.new(enabled: Nazar.config.colors.enabled)
|
81
|
+
end
|
68
82
|
end
|
69
83
|
end
|
data/lib/nazar.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'active_record'
|
4
|
-
require 'csv'
|
5
3
|
require 'dry-configurable'
|
6
4
|
require 'terminal-table'
|
7
5
|
require 'pastel'
|
@@ -12,9 +10,6 @@ require 'nazar/cell_formatter'
|
|
12
10
|
require 'nazar/headers_formatter'
|
13
11
|
require 'nazar/renderer'
|
14
12
|
require 'nazar/formatter'
|
15
|
-
require 'nazar/formatter/csv_table'
|
16
|
-
require 'nazar/formatter/active_record_collection'
|
17
|
-
require 'nazar/formatter/active_record_item'
|
18
13
|
require 'nazar/view'
|
19
14
|
|
20
15
|
module Nazar
|
@@ -25,44 +20,71 @@ module Nazar
|
|
25
20
|
setting :boolean, default: ['✓', '✗']
|
26
21
|
end
|
27
22
|
|
28
|
-
|
29
|
-
|
23
|
+
setting :colors do
|
24
|
+
setting :enabled, default: ENV.fetch('ENABLE_TTY_COLORS') { TTY::Color.color? ? 'true' : 'false' } == 'true'
|
25
|
+
end
|
30
26
|
|
31
|
-
|
32
|
-
|
27
|
+
class << self
|
28
|
+
def extensions
|
29
|
+
@extensions ||= Set.new
|
30
|
+
end
|
33
31
|
|
34
|
-
|
35
|
-
|
32
|
+
def enable!(extensions: [:active_record, :csv])
|
33
|
+
return if @enabled
|
34
|
+
|
35
|
+
load_active_record! if extensions.include?(:active_record) || defined?(ActiveRecord)
|
36
|
+
|
37
|
+
enable_for_irb! if defined?(IRB)
|
38
|
+
enable_for_pry! if defined?(Pry)
|
39
|
+
|
40
|
+
@enabled = true
|
41
|
+
end
|
42
|
+
|
43
|
+
def load_csv!
|
44
|
+
extensions << :csv
|
45
|
+
|
46
|
+
require 'csv'
|
47
|
+
require 'nazar/formatter/csv_table'
|
48
|
+
end
|
49
|
+
|
50
|
+
def load_active_record!
|
51
|
+
extensions << :active_record
|
36
52
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
53
|
+
require 'active_record'
|
54
|
+
require 'nazar/formatter/active_record_collection'
|
55
|
+
require 'nazar/formatter/active_record_item'
|
56
|
+
end
|
57
|
+
|
58
|
+
def enable_for_irb!
|
59
|
+
::IRB::Irb.class_eval do
|
60
|
+
alias_method :__original_output_value__, :output_value
|
61
|
+
def output_value(omit = false) # rubocop:disable Style/OptionalBooleanParameter
|
62
|
+
::Nazar::Renderer.new(@context.last_value).render || __original_output_value__(omit)
|
63
|
+
end
|
42
64
|
end
|
43
65
|
end
|
44
|
-
end
|
45
66
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
67
|
+
def enable_for_pry!
|
68
|
+
@__original_pry_print = Pry.config.print
|
69
|
+
Pry.config.print = proc do |output, value, instance|
|
70
|
+
output.puts Nazar::Renderer.new(value).render || @__original_pry_print.call(output, value, instance)
|
71
|
+
end
|
50
72
|
end
|
51
|
-
end
|
52
73
|
|
53
|
-
|
54
|
-
|
74
|
+
def disable!
|
75
|
+
return unless @enabled
|
55
76
|
|
56
|
-
|
77
|
+
disable_for_irb! if defined?(IRB)
|
57
78
|
|
58
|
-
|
59
|
-
|
79
|
+
@enabled = false
|
80
|
+
end
|
60
81
|
|
61
|
-
|
62
|
-
|
63
|
-
|
82
|
+
def disable_for_irb!
|
83
|
+
::IRB::Irb.send(:alias_method, :output_value, :__original_output_value__)
|
84
|
+
end
|
64
85
|
|
65
|
-
|
66
|
-
|
86
|
+
def disable_for_pry!
|
87
|
+
nil
|
88
|
+
end
|
67
89
|
end
|
68
90
|
end
|
data/nazar.gemspec
CHANGED
@@ -24,11 +24,12 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.require_paths = ['lib']
|
25
25
|
|
26
26
|
spec.cert_chain = ['certs/krzyzak.pem']
|
27
|
-
spec.signing_key = File.expand_path(
|
27
|
+
spec.signing_key = File.expand_path('~/.ssh/gem-private_key.pem') if $PROGRAM_NAME =~ /gem\z/
|
28
28
|
|
29
|
+
spec.add_development_dependency 'activerecord', '>= 3.0', '< 6.2'
|
29
30
|
spec.add_development_dependency 'rubocop', '~> 1.21'
|
31
|
+
spec.add_development_dependency 'sqlite3'
|
30
32
|
|
31
|
-
spec.add_runtime_dependency 'activerecord', '>= 3.0', '< 6.2'
|
32
33
|
spec.add_runtime_dependency 'dry-configurable', '~> 0.12'
|
33
34
|
spec.add_runtime_dependency 'pastel', '~> 0.8'
|
34
35
|
spec.add_runtime_dependency 'terminal-table', '~> 3.0'
|
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.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michał Krzyżanowski
|
@@ -36,8 +36,28 @@ cert_chain:
|
|
36
36
|
FlwFUDGjWAe8lcsjyGp1dox0FK91TAHdZW1op8LYnOcO2DM8Mgzu4Gp7mibATEnx
|
37
37
|
ooN2pwmH
|
38
38
|
-----END CERTIFICATE-----
|
39
|
-
date: 2021-09-
|
39
|
+
date: 2021-09-21 00:00:00.000000000 Z
|
40
40
|
dependencies:
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: activerecord
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.0'
|
48
|
+
- - "<"
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '6.2'
|
51
|
+
type: :development
|
52
|
+
prerelease: false
|
53
|
+
version_requirements: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '3.0'
|
58
|
+
- - "<"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '6.2'
|
41
61
|
- !ruby/object:Gem::Dependency
|
42
62
|
name: rubocop
|
43
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,25 +73,19 @@ dependencies:
|
|
53
73
|
- !ruby/object:Gem::Version
|
54
74
|
version: '1.21'
|
55
75
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
76
|
+
name: sqlite3
|
57
77
|
requirement: !ruby/object:Gem::Requirement
|
58
78
|
requirements:
|
59
79
|
- - ">="
|
60
80
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
62
|
-
|
63
|
-
- !ruby/object:Gem::Version
|
64
|
-
version: '6.2'
|
65
|
-
type: :runtime
|
81
|
+
version: '0'
|
82
|
+
type: :development
|
66
83
|
prerelease: false
|
67
84
|
version_requirements: !ruby/object:Gem::Requirement
|
68
85
|
requirements:
|
69
86
|
- - ">="
|
70
87
|
- !ruby/object:Gem::Version
|
71
|
-
version: '
|
72
|
-
- - "<"
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
version: '6.2'
|
88
|
+
version: '0'
|
75
89
|
- !ruby/object:Gem::Dependency
|
76
90
|
name: dry-configurable
|
77
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -135,6 +149,7 @@ executables: []
|
|
135
149
|
extensions: []
|
136
150
|
extra_rdoc_files: []
|
137
151
|
files:
|
152
|
+
- ".github/workflows/main.yml"
|
138
153
|
- ".gitignore"
|
139
154
|
- ".rspec"
|
140
155
|
- ".rubocop.yml"
|
metadata.gz.sig
CHANGED
Binary file
|