helium-console 0.1.7 → 0.1.11

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Helium
4
+ class Console
5
+ define_formatter_for Time do
6
+ def call
7
+ blue object.strftime('%A, %d %b %Y, %H:%M:%S')
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,14 +1,31 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'colorized_string'
2
4
 
3
5
  module Helium
4
6
  class Console
5
7
  class Registry
6
8
  class Element
9
+ class LazyStringEvaluator
10
+ def initialize(&block)
11
+ @lines = Enumerator.new { |y| block.(y) }
12
+ end
13
+
14
+ attr_reader :lines
15
+
16
+ def to_s
17
+ lines.to_a.join
18
+ end
19
+ end
20
+
7
21
  def initialize(object, **options)
8
22
  @object = object
9
23
  @options = options
10
24
  end
11
25
 
26
+ def call
27
+ end
28
+
12
29
  attr_reader :object, :options
13
30
 
14
31
  def format_nested(other_object, **options)
@@ -23,28 +40,41 @@ module Helium
23
40
  Helium::Console.format_string(string, **options)
24
41
  end
25
42
 
26
- def simple?(object)
27
- Helium::Console.simple?(object)
28
- end
29
-
30
- def is_simple
43
+ def simple?
31
44
  false
32
45
  end
33
46
 
34
47
  def method_missing(name, *args)
35
48
  return @options[name] if @options.key?(name)
36
- if ColorizedString.colors.include?(name)
37
- return ColorizedString.new(*args).colorize(name)
38
- end
49
+ return ColorizedString.new(*args).colorize(name) if ColorizedString.colors.include?(name)
50
+
39
51
  super
40
52
  end
41
53
 
54
+ def respond_to_missing?(name, private = false)
55
+ @options.key?(name) || ColorizedString.colors.include?(name) || super
56
+ end
57
+
58
+ private
59
+
60
+ def nested_objects
61
+ []
62
+ end
63
+
42
64
  def nested_opts(new_options, increase_level: true)
43
65
  new_options = options.merge(new_options)
44
66
  new_options[:level] += 1 if increase_level
45
- new_options[:ignore_objects] << object.object_id
67
+ new_options[:ignore_objects] = nested_objects
46
68
  new_options
47
69
  end
70
+
71
+ def length_of(string)
72
+ ColorizedString.new(string).uncolorize.length
73
+ end
74
+
75
+ def yield_lines(&block)
76
+ LazyStringEvaluator.new(&block)
77
+ end
48
78
  end
49
79
 
50
80
  def add(klass, &handler)
@@ -58,17 +88,20 @@ module Helium
58
88
  end
59
89
 
60
90
  def handler_for(object, **options)
61
- object.class.ancestors.each do |ancestor|
62
- return handlers[ancestor].new(object, **options) if handlers.key?(ancestor)
91
+ element_class = object.class.ancestors.find do |ancestor|
92
+ break handlers[ancestor] if handlers.key?(ancestor)
93
+ break handlers[ancestor.name] if handlers.key?(ancestor.name)
63
94
  end
64
- nil
95
+ return unless element_class
96
+
97
+ element_class.new(object, **options)
65
98
  end
66
99
 
67
- private
100
+ private
68
101
 
69
102
  def handlers
70
103
  @handlers ||= {}
71
104
  end
72
105
  end
73
106
  end
74
- end
107
+ end
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Helium
2
4
  class Console
3
5
  class Table
4
-
5
- def initialize(runner: "|", after_key: " ", format_keys: true)
6
+ def initialize(runner: '|', after_key: ' ', format_keys: true)
6
7
  @runner = runner
7
8
  @after_key = after_key
8
9
  @format_keys = format_keys
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Helium
2
4
  class Console
3
- VERSION = "0.1.7"
5
+ VERSION = '0.1.11'
4
6
  end
5
7
  end
@@ -1,13 +1,15 @@
1
- require "pry"
1
+ # frozen_string_literal: true
2
2
 
3
- require "helium/console/version"
4
- require "helium/console/formatters/indent"
5
- require "helium/console/formatters/overflow"
6
- require "helium/console/formatters/max_lines"
7
- require "helium/console/table"
8
- require "helium/console/registry"
3
+ require 'pry'
9
4
 
10
- require "helium/console/printer"
5
+ require 'helium/console/version'
6
+ require 'helium/console/formatters/indent'
7
+ require 'helium/console/formatters/overflow'
8
+ require 'helium/console/formatters/max_lines'
9
+ require 'helium/console/table'
10
+ require 'helium/console/registry'
11
+
12
+ require 'helium/console/printer'
11
13
 
12
14
  module Helium
13
15
  class Console
@@ -19,7 +21,7 @@ module Helium
19
21
  FalseClass,
20
22
  TrueClass,
21
23
  Symbol
22
- ]
24
+ ].freeze
23
25
 
24
26
  class << self
25
27
  def instance
@@ -31,6 +33,10 @@ module Helium
31
33
 
32
34
  instance.public_send(name, *args, &block)
33
35
  end
36
+
37
+ def respond_to_missing?(name, private = false)
38
+ instance.respond_to?(name) || super
39
+ end
34
40
  end
35
41
 
36
42
  def initialize(registry:)
@@ -39,12 +45,12 @@ module Helium
39
45
 
40
46
  def format(object, **options)
41
47
  options = default_options.merge(options)
42
- return "(...)" if options[:ignore_objects].include?(object.object_id)
48
+ return '(...)' if options[:ignore_objects].include?(object.object_id)
43
49
 
44
50
  handler = registry.handler_for(object, **options)
45
51
 
46
52
  if handler
47
- handler.call
53
+ handler.()
48
54
  else
49
55
  format(object.inspect, **options)
50
56
  end
@@ -59,8 +65,8 @@ module Helium
59
65
  end
60
66
 
61
67
  def simple?(object)
62
- SIMPLE_OBJECTS.any? {|simple_obj_class| object.is_a? simple_obj_class } ||
63
- registry.handler_for(object).is_simple
68
+ SIMPLE_OBJECTS.any? { |simple_obj_class| object.is_a? simple_obj_class } ||
69
+ registry.handler_for(object).simple?
64
70
  end
65
71
 
66
72
  def default_options
@@ -69,11 +75,11 @@ module Helium
69
75
  indent: 0,
70
76
  max_width: `tput cols`.chomp.to_i,
71
77
  level: 1,
72
- ignore_objects: [],
78
+ ignore_objects: []
73
79
  }
74
80
  end
75
81
 
76
- def format_string(string, ellipses: "...", **options)
82
+ def format_string(string, ellipses: '...', **options)
77
83
  options = default_options.merge(options)
78
84
 
79
85
  formatters = [
@@ -86,17 +92,17 @@ module Helium
86
92
  )
87
93
  ]
88
94
 
89
- formatters.inject(string) do |string, formatter|
90
- formatter.call(string)
95
+ formatters.inject(string) do |str, formatter|
96
+ formatter.(str)
91
97
  end
92
98
  end
93
99
 
94
- private
100
+ private
95
101
 
96
102
  attr_reader :registry
97
103
  end
98
104
  end
99
105
 
100
- Dir.glob(File.join(File.dirname(__FILE__), "console", "registry", "**/*.rb")).each do |file|
106
+ Dir.glob(File.join(File.dirname(__FILE__), 'console', 'registry', '**/*.rb')).sort.each do |file|
101
107
  require file
102
108
  end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: helium-console
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stanislaw Klajn
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-07-19 00:00:00.000000000 Z
11
+ date: 2021-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: pry
14
+ name: colorize
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: colorize
28
+ name: pry
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -47,6 +47,7 @@ extra_rdoc_files: []
47
47
  files:
48
48
  - ".gitignore"
49
49
  - ".rspec"
50
+ - ".rubocop.yml"
50
51
  - ".travis.yml"
51
52
  - CODE_OF_CONDUCT.md
52
53
  - Gemfile
@@ -66,14 +67,18 @@ files:
66
67
  - lib/helium/console/registry.rb
67
68
  - lib/helium/console/registry/array.rb
68
69
  - lib/helium/console/registry/booleans.rb
70
+ - lib/helium/console/registry/date.rb
69
71
  - lib/helium/console/registry/hash.rb
70
72
  - lib/helium/console/registry/module.rb
71
73
  - lib/helium/console/registry/nil.rb
72
74
  - lib/helium/console/registry/numeric.rb
73
75
  - lib/helium/console/registry/object.rb
76
+ - lib/helium/console/registry/pathname.rb
77
+ - lib/helium/console/registry/set.rb
74
78
  - lib/helium/console/registry/string.rb
75
79
  - lib/helium/console/registry/symbol.rb
76
80
  - lib/helium/console/registry/table.rb
81
+ - lib/helium/console/registry/time.rb
77
82
  - lib/helium/console/table.rb
78
83
  - lib/helium/console/version.rb
79
84
  homepage: https://github.com/helium-rb/console
@@ -90,14 +95,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
90
95
  requirements:
91
96
  - - ">="
92
97
  - !ruby/object:Gem::Version
93
- version: 2.3.0
98
+ version: 2.5.0
94
99
  required_rubygems_version: !ruby/object:Gem::Requirement
95
100
  requirements:
96
101
  - - ">="
97
102
  - !ruby/object:Gem::Version
98
103
  version: '0'
99
104
  requirements: []
100
- rubygems_version: 3.0.6
105
+ rubygems_version: 3.1.4
101
106
  signing_key:
102
107
  specification_version: 4
103
108
  summary: Collection of tools for smooth integration with console