natty-ui 0.30.0 → 0.31.0

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
  SHA256:
3
- metadata.gz: 3573e7d7a6d163f278494a095198e3fd913ff6710c4984ff12279f80893c1b54
4
- data.tar.gz: 9d424a564160fa470b71d857b31fa725320b21047abd8423e613335b0e0449c6
3
+ metadata.gz: 5b2d8212f4b987cd05c8ce904cdde26e0a0228c9fe360a36dfad04b0e29bd7b6
4
+ data.tar.gz: 8a3cd4de41e7ae69e18b6bf4e5437166f0c45fccf329009ebd0ecefd90a72f70
5
5
  SHA512:
6
- metadata.gz: f2b6c3c4bc0c8636bbed5dcfcfb5cc9f77487ef84be7650abba172b707cf2e9eb9c59b9a4f0ba3c2209ce4902c704f8920cbd99d63d7da3cd347dbf466afe689
7
- data.tar.gz: 2c514b126360dd2c2b6173e9944db8e3cc1bd5a5505d5176ebaa382cf9a810dccc59137c55d1b18d7f1229ac8cbcee5fa9553ad5763ecea30fa84cabc0430387
6
+ metadata.gz: fe766477cf1ee36fad283300a659ed4bbc5e55a56e4d7b25383359f9e6616bac1179729ddda15a2c95e58a011dd185c3b419595554197a7fae6edf57f1a02b2c
7
+ data.tar.gz: 40c4b083965158a22a39f171e897f40d0e2e6ee2d5ff4a601ec0015dfce9a523882e45a68f2b3208aa623effaef7d563287252eca388fb033325fb404064fb3d
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # NattyUI ​ᓚᕠᗢ ![version](https://img.shields.io/gem/v/natty-ui?label=)
1
+ # ​ᓚᕠᗢ NattyUI ![version](https://img.shields.io/gem/v/natty-ui?label=)
2
2
 
3
3
  This is the beautiful, nice, nifty, fancy, neat, pretty, cool, rich, lovely, natty user interface you like to have for your command line applications. It contains elegant, simple and beautiful tools that enhance your command line interfaces functionally and aesthetically.
4
4
 
@@ -18,6 +18,7 @@ This is the beautiful, nice, nifty, fancy, neat, pretty, cool, rich, lovely, nat
18
18
  - headings
19
19
  - text separators
20
20
  - lists
21
+ - bar graphs
21
22
  - various types of text blocks with automatic alignment
22
23
  - text columns
23
24
  - tables
data/examples/cols.rb CHANGED
@@ -17,12 +17,10 @@ ui.message '[b]​ᓚᕠᗢ NattyUI[/b] [i green]Print Columns[/]' do
17
17
 
18
18
  ui.space
19
19
  ui.cols do |cc|
20
- cc.add(
21
- "This is a left aligned blue column with some text but also with with\n" \
22
- 'a forced line break.',
23
- style: 'bright_white on_blue',
24
- align: :left
25
- )
20
+ cc.add(<<~TEXT, style: 'bright_white on_blue', align: :left)
21
+ This is a left aligned blue column with some text but also with
22
+ a forced line break.
23
+ TEXT
26
24
  cc.add(
27
25
  'This is the middle red column.',
28
26
  style: 'bright_white on_red',
data/examples/hbars.rb CHANGED
@@ -10,9 +10,8 @@ ui.message '[b]​ᓚᕠᗢ NattyUI[/b] [i green]Print Horizontal Bars[/]' do
10
10
  ui.puts 'NattyUI can quick dump values as horizontal bars.'
11
11
 
12
12
  ui.space
13
- ui.hbars values, style: :green, normalize: true, width: 0.5
13
+ ui.hbars values, style: :green, normalize: true, width: 0.5, min: 10
14
14
  ui.puts(
15
- 'These are the same values but [i]normalized[/i] ' \
16
- 'and printed in half width.'
15
+ 'These are the same values but [i]normalized[/i] and printed in half width.'
17
16
  )
18
17
  end
@@ -3,16 +3,17 @@
3
3
  require_relative '../lib/natty-ui'
4
4
 
5
5
  ui.message '[b]​ᓚᕠᗢ NattyUI[/b]' do
6
+ ui.space
6
7
  ui.table(border: :defaulth, border_style: 'bright_blue') do |table|
7
8
  table.add do |row|
8
9
  row.add 'Styles'
9
- row.add <<~TEXT.tr("\n", ' ')
10
+ row.add <<~TEXT, eol: false
10
11
  Support of all ANSI styles like
11
- [bold]bold[/bold],
12
- [italic]italic[/italic],
13
- [underline]underline[/underline],
14
- [invert]invert[/invert],
15
- [strike]strike[/strike],
12
+ [b]bold[/b],
13
+ [i]italic[/i],
14
+ [u]underline[/u],
15
+ [inv]invert[/inv],
16
+ [s]strike[/s],
16
17
  [faint]faint[/faint],
17
18
  [double_underline]double underline[/double_underline],
18
19
  [curly_underline]curly underline[/curly_underline],
@@ -24,10 +25,9 @@ ui.message '[b]​ᓚᕠᗢ NattyUI[/b]' do
24
25
 
25
26
  table.add do |row|
26
27
  row.add 'Colors'
27
- row.add <<~TEXT.chomp
28
- ✓ [palegreen]3/4-bit color[/fg]         ✓ [ff7f50]Truecolor (16.7 million)
29
- ✓ [skyblue]8-bit color[/fg]           ✓ [gold]Dumb terminals
30
- ✓ [tan1]NO_COLOR convention
28
+ row.add <<~TEXT
29
+ ✓ [palegreen]3/4-bit color[/fg]  #{NattyUI::Ansi.rainbow('Truecolor')}       ✓ [tan1]NO_COLOR convention[/fg]
30
+ ✓ [skyblue]8-bit color[/fg]    ✓ [gold]Dumb terminals[/fg]
31
31
  TEXT
32
32
  end
33
33
 
@@ -38,7 +38,7 @@ ui.message '[b]​ᓚᕠᗢ NattyUI[/b]' do
38
38
 
39
39
  table.add do |row|
40
40
  row.add 'Layout'
41
- row.add <<~TEXT.chomp
41
+ row.add <<~TEXT
42
42
  🎩 heading elements     📝 messages    📊 bar graphs
43
43
  📏 horizontal rulers    [blue]┼┼[/] tables
44
44
  📋 lists                [b green]✓✓[/] tasks
@@ -47,15 +47,14 @@ ui.message '[b]​ᓚᕠᗢ NattyUI[/b]' do
47
47
 
48
48
  table.add do |row|
49
49
  row.add 'Asian', 'language', 'support'
50
- row.add <<~TEXT.chomp
50
+ row.add <<~TEXT
51
51
  [bright_green]🇨🇳 该库支持中文,日文和韩文文本!
52
52
  [bright_green]🇯🇵 ライブラリは中国語、日本語、韓国語のテキストをサポートしています
53
53
  [bright_green]🇰🇷 이 라이브러리는 중국어, 일본어 및 한국어 텍스트를 지원합니다
54
54
  TEXT
55
55
  end
56
56
 
57
- table.columns[0].style = 'bold red'
58
- table.columns[0].width = 10
57
+ table.columns[0].assign(style: 'bold red', width: 8)
59
58
  table.columns[1].padding_right = 2
60
59
  end
61
60
  end
data/examples/info.rb CHANGED
@@ -3,15 +3,14 @@
3
3
  require_relative '../lib/natty-ui'
4
4
 
5
5
  def colors
6
- return Terminal.colors.to_s if Terminal.colors < 8
7
- colors = [
8
- Terminal.true_color? ? 'true color' : Terminal.colors,
9
- "#{(0..15).map { "[#{_1.to_s(16).rjust(2, '0')}]██" }.join}[/]"
10
- ]
11
- if Terminal.true_color?
12
- colors << Terminal::Ansi.rainbow('████████████████████████████████')
13
- end
14
- colors.join("\n")
6
+ return Terminal.colors if Terminal.colors < 8
7
+ color_bar = "#{(0..15).map { "[#{_1.to_s(16).rjust(2, '0')}]██" }.join}[/]"
8
+ return "#{Terminal.colors}\n#{color_bar}" unless Terminal.true_color?
9
+ <<~COLORS
10
+ true color
11
+ #{color_bar}
12
+ #{Terminal::Ansi.rainbow('████████████████████████████████')}
13
+ COLORS
15
14
  end
16
15
 
17
16
  ui.message '[b]​ᓚᕠᗢ NattyUI[/b] [i green]Terminal Information[/]' do
@@ -22,10 +21,7 @@ ui.message '[b]​ᓚᕠᗢ NattyUI[/b] [i green]Terminal Information[/]' do
22
21
  table.add 'Input mode', Terminal.input_mode
23
22
  table.add 'Colors', colors
24
23
  table.add 'Screen size', Terminal.size.join(' x ')
25
- fc = table.columns[0]
26
- fc.width = 14
27
- fc.padding_right = 2
28
- fc.align = :right
24
+ table.columns[0].assign(width: 15, padding_right: 2, align: :right)
29
25
  table.columns[1].style = %i[bold bright_yellow]
30
26
  end
31
27
  end
@@ -8,16 +8,14 @@ ui.message '[b]​ᓚᕠᗢ NattyUI[/b] [i green]Named Colors Support[/]' do
8
8
  NattyUI supports a series of named color values, such as those supported by Kitty.
9
9
 
10
10
  INFO
11
-
12
11
  ui.information('Note') do
13
12
  ui.puts('Not all terminal emulators support true-colors.')
14
13
  end
15
14
 
16
15
  ui.space
17
16
  ui.ls(
18
- NattyUI::Ansi
19
- .named_colors
20
- .delete_if { /\d/.match?(_1) }
21
- .map! { "[bg_#{_1}] [/bg] [#{_1}]#{_1}[/fg]" }
17
+ NattyUI::Ansi.named_colors.filter_map do |name|
18
+ "[bg_#{name}] [/bg] [#{name}]#{name}[/fg]" unless /\d/.match?(name)
19
+ end
22
20
  )
23
21
  end
data/examples/tables.rb CHANGED
@@ -20,14 +20,14 @@ ui.message '[b]​ᓚᕠᗢ NattyUI[/b] [i green]Print Tables[/]' do
20
20
  row.padding = [0, 2]
21
21
  end
22
22
 
23
- filler_text = <<~FILLER.tr("\n", ' ')
23
+ filler_text = <<~FILLER
24
24
  This is some filler text to demonstrate word-wise line breaks inside
25
25
  a table cell. Please, just ignore this nonsense-text gently.
26
26
  FILLER
27
27
  table.add do |row|
28
- row.add '[blue]Row 2 Col 0', filler_text, align: :right
29
- row.add '[blue]Row 2 Col 1', filler_text, align: :centered
30
- row.add '[blue]Row 2 Col 2', filler_text, align: :left
28
+ row.add '[blue]Row 2 Col 0', filler_text, eol: false, align: :right
29
+ row.add '[blue]Row 2 Col 1', filler_text, eol: false, align: :centered
30
+ row.add '[blue]Row 2 Col 2', filler_text, eol: false, align: :left
31
31
  row.padding = [1, 2]
32
32
  end
33
33
  end
@@ -37,10 +37,7 @@ ui.message '[b]​ᓚᕠᗢ NattyUI[/b] [i green]Print Tables[/]' do
37
37
  table.add(*('A'..'Z').each_slice(2).map(&:join))
38
38
  table.add(*('😀'..'😌'))
39
39
  table.add(*(3..15).map { _1.to_s(3) })
40
- table.each do |row|
41
- row.align = :centered
42
- row.style = :bright_yellow
43
- end
40
+ table.each { |row| row.assign(align: :centered, style: :bright_yellow) }
44
41
  end
45
42
 
46
43
  ui.space
data/examples/tasks.rb CHANGED
@@ -5,48 +5,48 @@ require_relative '../lib/natty-ui'
5
5
  ui.message '[b]​ᓚᕠᗢ NattyUI[/b] [i green]Tasks[/]' do
6
6
  ui.space
7
7
  ui.puts <<~TEXT, eol: false
8
- Tasks are sections that are closed either successfully or with an error message.
9
- If successful, their content is only displayed temporarily and can consist of all
10
- other features, in particular further (sub)tasks. As an exception to this, some
11
- elements can be “pinned” as permanent content.
8
+ Tasks are sections that are closed either successfully or with an error
9
+ message. If successful, their content is only displayed temporarily and can
10
+ consist of all other features, in particular further (sub)tasks. As an
11
+ exception to this, some elements can be “pinned” as permanent content.
12
12
  TEXT
13
13
 
14
14
  # to simulate some work:
15
- def foo = sleep(0.25)
16
- def some = sleep(0.75)
15
+ def do_something = sleep(0.25)
16
+ def do_something_heavy = sleep(0.75)
17
17
 
18
18
  ui.space
19
19
  ui.task 'Actualize Reading List' do
20
20
  ui.puts('This is a simple which actualizes the book reading list.')
21
21
 
22
22
  ui.task('Connect to Library') do
23
- foo
23
+ do_something
24
24
  ui.mark 'Server Found', mark: :checkmark
25
- ui.task('Login...') { some }
25
+ ui.task('Login...') { do_something_heavy }
26
26
  end
27
27
 
28
- ui.task('Request New Books') { some }
28
+ ui.task('Request New Books') { do_something_heavy }
29
29
 
30
30
  bar = ui.progress('Loading Books...', pin: true)
31
31
  11.times do
32
- foo
32
+ do_something
33
33
  bar.step
34
34
  end
35
35
  bar.ok 'Books Loaded'
36
36
 
37
- ui.task('Disconnect from Library') { some }
37
+ ui.task('Disconnect from Library') { do_something_heavy }
38
38
 
39
39
  ui.progress('Read Cover Images', max: 11) do |progress|
40
40
  while progress.value < progress.max
41
- foo
41
+ do_something
42
42
  progress.step
43
43
  end
44
44
  end
45
45
 
46
46
  ui.pin('New Books Marked', mark: :checkmark)
47
47
 
48
- ui.task('Optimize Database') { some }
48
+ ui.task('Optimize Database') { do_something_heavy }
49
49
 
50
- ui.task('Remove Dust') { some }
50
+ ui.task('Remove Dust') { do_something_heavy }
51
51
  end
52
52
  end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../lib/natty-ui'
4
+
5
+ NAMES = NattyUI::Theme.names.freeze
6
+ DESCR = NAMES.map { NattyUI::Theme.description(_1) }.freeze
7
+ ORG = NattyUI::Theme.current_name
8
+
9
+ def show(name)
10
+ NattyUI::Theme.use(name)
11
+ theme = NattyUI::Theme.current
12
+ ui.message(
13
+ "[b]​ᓚᕠᗢ NattyUI [/b] [i green]Theme #{NattyUI::Theme.description(name)}[/]"
14
+ ) do
15
+ ui.ls(
16
+ (1..6).map do |i|
17
+ left, right = theme.heading(i)
18
+ "#{left} H#{i} #{right}"
19
+ end
20
+ )
21
+ ui.space
22
+ ui.ls(theme.defined_marks.map { "#{theme.mark(_1)} #{_1}" })
23
+ ui.space
24
+ ui.ls(
25
+ %i[
26
+ task_style
27
+ choice_style
28
+ choice_current_style
29
+ sh_out_style
30
+ sh_err_style
31
+ ].map { "#{theme.send(_1)}█ #{_1} [/]" }
32
+ )
33
+ ui.space
34
+ %i[section message information warning error].each do |name|
35
+ ui.send(name, name.capitalize)
36
+ end
37
+ end
38
+ end
39
+
40
+ while true
41
+ selected =
42
+ ui.choice(*DESCR, abortable: true, selected: selected) do
43
+ ui.puts '[bright_green b]Select a theme:[/] [faint](Abort with [\\ESC])'
44
+ end
45
+ break unless selected
46
+ ui.temporary do
47
+ show(NAMES[selected])
48
+ ui.await { ui.puts '[faint][\\Press ENTER to continue...]' }
49
+ end
50
+ NattyUI::Theme.use(ORG)
51
+ end
@@ -3,53 +3,52 @@
3
3
  module NattyUI
4
4
  # @todo This chapter needs more documentation.
5
5
  #
6
- module Attributes
7
- class Base
8
- # @return [Attributes] updated copy of itself
9
- def merge(**attributes)
10
- attributes.empty? ? dup : dup._assign(attributes)
11
- end
6
+ class Attributes
7
+ # @return [Attributes] updated copy of itself
8
+ def merge(**attributes)
9
+ attributes.empty? ? dup : dup._assign(attributes)
10
+ end
12
11
 
13
- # @return [Attributes] itself
14
- def merge!(**attributes) = attributes.empty? ? self : _assign(attributes)
12
+ # @return [Attributes] itself
13
+ def merge!(**attributes) = attributes.empty? ? self : _assign(attributes)
14
+ alias assign merge!
15
15
 
16
- # @!visibility private
17
- def to_hash = _store({})
16
+ # @!visibility private
17
+ def to_hash = _store({})
18
18
 
19
- # @!visibility private
20
- def to_h(&block) = block ? _store({}).to_h(&block) : _store({})
19
+ # @!visibility private
20
+ def to_h(&block) = block ? _store({}).to_h(&block) : _store({})
21
21
 
22
- private
22
+ private
23
23
 
24
- def initialize(**attributes)
25
- _init
26
- _assign(attributes) unless attributes.empty?
27
- end
24
+ def initialize(**attributes)
25
+ _init
26
+ _assign(attributes) unless attributes.empty?
27
+ end
28
28
 
29
- def _init = nil
30
- def _assign(_opt) = self
31
- def _store(opt) = opt
32
- def as_uint(value) = [0, value.to_i].max
33
- def as_nint(value) = ([0, value.to_i].max if value)
29
+ def _init = nil
30
+ def _assign(_opt) = self
31
+ def _store(opt) = opt
32
+ def as_uint(value) = [0, value.to_i].max
33
+ def as_nint(value) = ([0, value.to_i].max if value)
34
34
 
35
- def as_wh(value)
36
- return unless value
37
- return value > 0 ? value : nil if value.is_a?(Numeric)
38
- value.is_a?(Range) ? wh_from(value.begin, value.end) : nil
39
- end
35
+ def as_wh(value)
36
+ return unless value
37
+ return value > 0 ? value : nil if value.is_a?(Numeric)
38
+ value.is_a?(Range) ? wh_from(value.begin, value.end) : nil
39
+ end
40
40
 
41
- def wh_from(min, max)
42
- min = normalized(min)
43
- max = normalized(max)
44
- return max ? (..max) : nil unless min
45
- return Range.new(min, nil) unless max
46
- min == max ? min : Range.new(*[min, max].minmax)
47
- end
41
+ def wh_from(min, max)
42
+ min = normalized(min)
43
+ max = normalized(max)
44
+ return max ? (..max) : nil unless min
45
+ return Range.new(min, nil) unless max
46
+ min == max ? min : Range.new(*[min, max].minmax)
47
+ end
48
48
 
49
- def normalized(value)
50
- return value < 0 ? nil : value if value.is_a?(Float) && value < 1
51
- (value = value.to_i) < 1 ? nil : value
52
- end
49
+ def normalized(value)
50
+ return value < 0 ? nil : value if value.is_a?(Float) && value < 1
51
+ (value = value.to_i) < 1 ? nil : value
53
52
  end
54
53
 
55
54
  module Align
@@ -37,12 +37,6 @@ module NattyUI
37
37
  # @return [Features]
38
38
  # itself
39
39
  def puts(*text, **options)
40
- if (ansi = Terminal.ansi?)
41
- @__eol ||= "\e[m\n"
42
- else
43
- @__eol ||= "\n"
44
- end
45
-
46
40
  if options.empty?
47
41
  bbcode = true
48
42
  max_width = Terminal.columns
@@ -107,10 +101,12 @@ module NattyUI
107
101
  *text,
108
102
  limit: max_width,
109
103
  bbcode: bbcode,
110
- ansi: ansi,
104
+ ansi: Terminal.ansi?,
111
105
  ignore_newline: ignore_newline
112
106
  )
113
107
 
108
+ @__eol ||= Terminal.ansi? ? "\e[m\n" : "\n"
109
+
114
110
  if (align = options[:align]).nil?
115
111
  lines.each do |line|
116
112
  Terminal.print(prefix, line, suffix, @__eol, bbcode: false)
@@ -489,10 +485,11 @@ module NattyUI
489
485
  # ui.hbars 1..10, style: :blue, width: 0.5
490
486
  #
491
487
  # @param values [#to_a, Array<Numeric>] values to print
492
- # @param with_values [true, false] whether the values should be printed too
488
+ # @param min [#to_f] start value
489
+ # @param max [#to_f] end value
493
490
  # @param normalize [true, false] whether the values should be normalized
494
- # @param height [Integer] output height
495
- # @param bar_width [:auto, :min, Integer] with of each bar
491
+ # @param text [true, false] whether the values should be printed too
492
+ # @param width [:auto, :min, Integer] with of each bar
496
493
  # @param style [Symbol, Array<Symbol>, nil] bar drawing style
497
494
  # @param text_style [Symbol, Array<Symbol>, nil] text style
498
495
  #
@@ -501,8 +498,10 @@ module NattyUI
501
498
  # @return (see puts)
502
499
  def hbars(
503
500
  values,
504
- with_values: true,
501
+ min: nil,
502
+ max: nil,
505
503
  normalize: false,
504
+ text: true,
506
505
  width: :auto,
507
506
  style: nil,
508
507
  text_style: nil
@@ -512,12 +511,9 @@ module NattyUI
512
511
  raise(ArgumentError, 'values can not be negative')
513
512
  end
514
513
  style = text_style = nil unless Terminal.ansi?
515
- size = Utils.as_size(3..columns, width)
516
- if with_values
517
- puts(*HBarsRenderer.lines(values, size, normalize, style, text_style))
518
- else
519
- puts(*HBarsRenderer.lines_bars_only(values, size, normalize, style))
520
- end
514
+ renderer = HBarsRenderer.new(values, min, max)
515
+ renderer.with_text(text_style) if text
516
+ puts(*renderer.lines(Utils.as_size(3..columns, width), style, normalize))
521
517
  end
522
518
 
523
519
  # Dynamically display a task progress.
@@ -582,6 +578,31 @@ module NattyUI
582
578
  block ? __with(progress, &block) : progress
583
579
  end
584
580
 
581
+ # Run a shell program
582
+ #
583
+ # @return [Process::Status] when command was executed
584
+ # @return [nil] in error case (like command not found)
585
+ def sh(*cmd, shell: false, input: nil)
586
+ m = (theme = Theme.current).mark(:sh_out)
587
+ opts_out = {
588
+ bbcode: false,
589
+ prefix: "#{m}#{theme.sh_out_style}",
590
+ prefix_width: m.width
591
+ }
592
+ m = theme.mark(:sh_err)
593
+ opts_err = {
594
+ bbcode: false,
595
+ prefix: "#{m}#{theme.sh_err_style}",
596
+ prefix_width: m.width
597
+ }
598
+ ShellCommand.call(*cmd, shell: shell, input: input) do |line, kind|
599
+ puts(
600
+ line.gsub("\t", '    ').gsub(/[[:space:]]/, ' '),
601
+ **(kind == :error ? opts_err : opts_out)
602
+ )
603
+ end
604
+ end
605
+
585
606
  #
586
607
  # @!endgroup
587
608
  #
@@ -963,36 +984,42 @@ module NattyUI
963
984
  end
964
985
 
965
986
  dir = __dir__
966
- autoload :Choice, "#{dir}/choice.rb"
967
- autoload :DumbChoice, "#{dir}/dumb_choice.rb"
968
- autoload :DumbOptions, "#{dir}/dumb_options.rb"
969
- autoload :CompactLSRenderer, "#{dir}/ls_renderer.rb"
970
987
  autoload :Framed, "#{dir}/framed.rb"
971
- autoload :HBarsRenderer, "#{dir}/hbars_renderer.rb"
972
- autoload :LSRenderer, "#{dir}/ls_renderer.rb"
973
- autoload :Options, "#{dir}/options.rb"
974
- autoload :Progress, "#{dir}/progress.rb"
975
- autoload :DumbProgress, "#{dir}/progress.rb"
976
988
  autoload :Section, "#{dir}/section.rb"
989
+ autoload :ShellCommand, "#{dir}/shell_command.rb"
977
990
  autoload :Table, "#{dir}/table.rb"
978
991
  autoload :Task, "#{dir}/task.rb"
979
992
  autoload :Temporary, "#{dir}/temporary.rb"
980
993
  autoload :Theme, "#{dir}/theme.rb"
981
994
  autoload :Utils, "#{dir}/utils.rb"
995
+
996
+ autoload :Choice, "#{dir}/choice.rb"
997
+ autoload :DumbChoice, "#{dir}/dumb_choice.rb"
998
+ autoload :Options, "#{dir}/options.rb"
999
+ autoload :DumbOptions, "#{dir}/dumb_options.rb"
1000
+ autoload :Progress, "#{dir}/progress.rb"
1001
+ autoload :DumbProgress, "#{dir}/progress.rb"
1002
+
1003
+ autoload :CompactLSRenderer, "#{dir}/ls_renderer.rb"
1004
+ autoload :HBarsRenderer, "#{dir}/hbars_renderer.rb"
1005
+ autoload :LSRenderer, "#{dir}/ls_renderer.rb"
982
1006
  autoload :VBarsRenderer, "#{dir}/vbars_renderer.rb"
983
1007
 
984
1008
  private_constant(
1009
+ :Framed,
1010
+ :ShellCommand,
1011
+ :Utils,
1012
+ # -
985
1013
  :Choice,
986
1014
  :DumbChoice,
1015
+ :Options,
987
1016
  :DumbOptions,
1017
+ :Progress,
1018
+ :DumbProgress,
1019
+ # -
988
1020
  :CompactLSRenderer,
989
- :Framed,
990
1021
  :HBarsRenderer,
991
1022
  :LSRenderer,
992
- :Options,
993
- :Progress,
994
- :DumbProgress,
995
- :Utils,
996
1023
  :VBarsRenderer
997
1024
  )
998
1025
  end