helium-console 0.1.10 → 0.1.11

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: 2775258ea31537dc27077753497d8c6fef2d34f31e6470c17574cd30395675e9
4
- data.tar.gz: eafd3659c58654fc6566359f52093c928d7ecfc4bab9c23df74330f814760c6c
3
+ metadata.gz: 8d935efaa6d5d2a98d58c2d0cea17911486522ce45bfd00432b089735994ce20
4
+ data.tar.gz: c86a17fc7b04379249cf491da55086537f7f8983c47758d9b20438495f12039e
5
5
  SHA512:
6
- metadata.gz: a18002a4319bb7154810167feb4888ab5199034f001262614d291725623a856fd0a18fea8c362573fb049b823b10753a928bc3401fefcda8be66258f3420bb39
7
- data.tar.gz: 56b961dcbfab3a0b39041abba71a36e90166cb7f409f9ea54d3957b2c147ba304e5c35d6c1dcb5c0415e9b0d3f5ea71bbdfb14494ca08a15526b5e43dfa2a89b
6
+ metadata.gz: 2ab8ca592e31437b6e70cd269cd961b8fc38c3e544b24aa2eecfbddce474ed22ebda4c704849271b847656e22d15b25feb169aedad5593f6267378e211b068bf
7
+ data.tar.gz: 2915fa426caea028e549e9d55e5a4cb7799ef593cdd706529c9eac5bc582a841bdaaa67fb1480917df0543286a0d7743f5eb13b813b92ad4193eab207d49a378
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- helium-console (0.1.10)
4
+ helium-console (0.1.11)
5
5
  colorize
6
6
  pry
7
7
 
@@ -12,8 +12,11 @@ module Helium
12
12
 
13
13
  def pp(object)
14
14
  formatted = Helium::Console.format(object)
15
- formatted = "\n#{formatted}" if formatted.lines.count > 1
16
- output << formatted
15
+ output << "\n" if object.is_a? Registry::Element::LazyStringEvaluator
16
+ formatted.lines.each do |line|
17
+ output << "#{line.chomp}\n"
18
+ end
19
+ output << "\n"
17
20
  end
18
21
 
19
22
  ::Pry.config.print = method(:default)
@@ -22,11 +22,11 @@ module Helium
22
22
  table.row(light_black("[#{index}]:"), element)
23
23
  end
24
24
 
25
- [
26
- '[',
27
- format(table),
28
- ']'
29
- ].join("\n")
25
+ yield_lines do |y|
26
+ y << '['
27
+ format(table).lines.each { |line| y << line }
28
+ y << ']'
29
+ end
30
30
  end
31
31
 
32
32
  def inline_with_truncation
@@ -13,17 +13,17 @@ module Helium
13
13
  private
14
14
 
15
15
  def format_as_table
16
- table = Table.new(runner: ' ', after_key: after_key, format_keys: !all_symbol?)
16
+ table = Table.new(runner: ' ', after_key: after_key, format_keys: true)
17
17
  object.each do |key, value|
18
18
  key = light_blue(key.to_s) if all_symbol?
19
19
  table.row(key, value)
20
20
  end
21
21
 
22
- [
23
- '{',
24
- format(table, **options),
25
- '}'
26
- ].join("\n")
22
+ yield_lines do |y|
23
+ y << '{'
24
+ format(table).lines.each { |line| y << line }
25
+ y << '}'
26
+ end
27
27
  end
28
28
 
29
29
  def inline_with_truncation
@@ -63,7 +63,10 @@ module Helium
63
63
  end
64
64
 
65
65
  def all_symbol?
66
- object.keys.all? { |key| key.is_a? Symbol }
66
+ return false
67
+ return @all_symbol if defined?(@all_symbol)
68
+
69
+ @all_symbol = object.keys.all? { |key| key.is_a? Symbol }
67
70
  end
68
71
 
69
72
  def format_key(key, **options)
@@ -18,10 +18,10 @@ module Helium
18
18
  table.row(magenta(inst.to_s), object.instance_variable_get(inst))
19
19
  end
20
20
 
21
- [
22
- "#{light_black '#'} #{class_name}",
23
- format(table)
24
- ].reject(&:empty?).join("\n")
21
+ yield_lines do |y|
22
+ y << "#{light_black '#'} #{class_name}"
23
+ format(table).lines.each {|line| y << line }
24
+ end
25
25
  end
26
26
 
27
27
  def inline_with_truncation
@@ -38,24 +38,6 @@ module Helium
38
38
  [class_name, formatted_vars].compact.join
39
39
  end
40
40
 
41
- # def inline_without_truncation
42
- # joined = nil
43
- #
44
- # object.each do |key, value|
45
- # return unless simple?(value)
46
- #
47
- # formatted_key = format(key, level: 3, max_with: 15)
48
- # formatted_value = format(value, level: 3, max_width: 15)
49
- # formatted = "#{formatted_key} => #{formatted_value}"
50
- #
51
- # joined = [joined, formatted].compact.join(', ')
52
- #
53
- # return if joined.length > max_width - 4
54
- # end
55
- # joined = " #{joined} " if joined
56
- # ['{', joined, '}'].compact.join
57
- # end
58
-
59
41
  def force_inline?
60
42
  level > 2
61
43
  end
@@ -4,25 +4,23 @@ module Helium
4
4
  class Console
5
5
  define_formatter_for Table do
6
6
  def call
7
- [
8
- *formatted_values,
9
- truncation
10
- ].compact.join("\n")
7
+ yield_lines do |y|
8
+ rows.each do |key, value, options = {}|
9
+ format_pair(key, value, **options) do |line|
10
+ y << line
11
+ end
12
+ end
13
+ y << truncation if truncation
14
+ end
11
15
  end
12
16
 
13
17
  private
14
18
 
15
- def formatted_values
16
- rows.flat_map do |key, value, options = {}|
17
- format_pair(key, value, **options)
18
- end
19
- end
20
-
21
19
  def format_pair(key, value, **options)
22
20
  formatted_value = format_nested(value, max_width: max_value_width, **options)
23
21
 
24
- formatted_value.lines.map.with_index do |line, index|
25
- [
22
+ formatted_value.lines.each.with_index.map do |line, index|
23
+ yield [
26
24
  object.runner,
27
25
  text_or_blank(rjust(format_key(key), key_width), blank: index > 0),
28
26
  text_or_blank(object.after_key, blank: index > 0),
@@ -59,7 +57,7 @@ module Helium
59
57
 
60
58
  def rows
61
59
  @rows ||= case level
62
- when 1 then rows_limited_by(42)
60
+ when 1 then object.rows
63
61
  when 2 then rows_limited_by(10)
64
62
  else rows_limited_by(3)
65
63
  end
@@ -74,7 +72,8 @@ module Helium
74
72
 
75
73
  [
76
74
  object.runner,
77
- light_black("(#{object.rows.length - rows.length} more)")
75
+ light_black("(#{object.rows.length - rows.length} more)"),
76
+ "\n"
78
77
  ].join
79
78
  end
80
79
  end
@@ -6,6 +6,18 @@ module Helium
6
6
  class Console
7
7
  class Registry
8
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
+
9
21
  def initialize(object, **options)
10
22
  @object = object
11
23
  @options = options
@@ -43,16 +55,26 @@ module Helium
43
55
  @options.key?(name) || ColorizedString.colors.include?(name) || super
44
56
  end
45
57
 
58
+ private
59
+
60
+ def nested_objects
61
+ []
62
+ end
63
+
46
64
  def nested_opts(new_options, increase_level: true)
47
65
  new_options = options.merge(new_options)
48
66
  new_options[:level] += 1 if increase_level
49
- new_options[:ignore_objects] << object.object_id
67
+ new_options[:ignore_objects] = nested_objects
50
68
  new_options
51
69
  end
52
70
 
53
71
  def length_of(string)
54
72
  ColorizedString.new(string).uncolorize.length
55
73
  end
74
+
75
+ def yield_lines(&block)
76
+ LazyStringEvaluator.new(&block)
77
+ end
56
78
  end
57
79
 
58
80
  def add(klass, &handler)
@@ -82,4 +104,4 @@ module Helium
82
104
  end
83
105
  end
84
106
  end
85
- end
107
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Helium
4
4
  class Console
5
- VERSION = '0.1.10'
5
+ VERSION = '0.1.11'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: helium-console
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.10
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-08-29 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
14
  name: colorize