natty-ui 0.5.2 → 0.6.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.
data/lib/natty-ui.rb CHANGED
@@ -1,6 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'reline'
3
+ require 'readline'
4
+ unless defined?(Reline)
5
+ # load the Reline::Unicode part only
6
+ # @!visibility private
7
+ module Reline
8
+ # @!visibility private
9
+ def self.ambiguous_width = 1
10
+ end
11
+ require 'reline/unicode'
12
+ end
4
13
  require_relative 'natty-ui/wrapper'
5
14
  require_relative 'natty-ui/ansi_wrapper'
6
15
 
@@ -114,6 +123,64 @@ module NattyUI
114
123
  str.empty? ? 0 : Reline::Unicode.calculate_width(str)
115
124
  end
116
125
 
126
+ # Convert given arguments into strings and yield each line.
127
+ # Optionally limit the line width to given `max_width`.
128
+ #
129
+ # @overload each_line(..., max_width: nil)
130
+ # @param [#to_s] ... objects to print
131
+ # @param [#to_i, nil] max_width maximum line width
132
+ # @yieldparam [String] line string line
133
+ # @return [nil]
134
+ # @overload each_line(..., max_width: nil)
135
+ # @param [#to_s] ... objects to print
136
+ # @param [#to_i, nil] max_width maximum line width
137
+ # @return [Enumerator] line enumerator
138
+ def each_line(*strs, max_width: nil, &block)
139
+ return to_enum(__method__, *strs, max_width: max_width) unless block
140
+ unless max_width
141
+ strs.each { |str| str.to_s.each_line(chomp: true, &block) }
142
+ return nil
143
+ end
144
+ max_width = max_width.to_i
145
+ return if max_width <= 0
146
+ strs.each do |str|
147
+ str
148
+ .to_s
149
+ .each_line(chomp: true) do |line|
150
+ Reline::Unicode.split_by_width(line, max_width)[0].each do |part|
151
+ yield(part) if part
152
+ end
153
+ end
154
+ end
155
+ nil
156
+ end
157
+
158
+ # Read user input line from {.in_stream}.
159
+ #
160
+ # This method uses Ruby's Readline implementation (default gem). See there
161
+ # for more information.
162
+ #
163
+ # @see .valid_out?
164
+ #
165
+ # @param [#to_s] prompt input prompt
166
+ # @param [false, nil, #call] completion disable autocompletion, use default
167
+ # autocompletion or use given completion proc
168
+ # @param [IO] stream writeable IO used to display output
169
+ # @return [String] user input line
170
+ # @return [nil] when user interrupted input with `^C` or `^D`
171
+ def readline(prompt = nil, completion: false, stream: StdOut.stream)
172
+ cp = Readline.completion_proc
173
+ Readline.completion_proc = completion == false ? ->(*_) {} : completion
174
+ Readline.output = stream
175
+ Readline.input = @in_stream
176
+ Readline.readline(prompt.to_s)
177
+ rescue Interrupt
178
+ stream.puts
179
+ nil
180
+ ensure
181
+ Readline.completion_proc = cp
182
+ end
183
+
117
184
  private
118
185
 
119
186
  def wrapper_class(stream, ansi)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: natty-ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Blumtritt
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-10 00:00:00.000000000 Z
11
+ date: 2023-11-17 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |
14
14
  This is the beautiful, nice, nifty, fancy, neat, pretty, cool, lovely,
@@ -25,25 +25,28 @@ extra_rdoc_files:
25
25
  files:
26
26
  - LICENSE
27
27
  - README.md
28
+ - examples/attributes.rb
28
29
  - examples/basic.rb
29
- - examples/colors.rb
30
- - examples/illustration.svg
30
+ - examples/illustration.png
31
+ - examples/list_in_columns.rb
31
32
  - examples/progress.rb
32
33
  - examples/query.rb
33
34
  - lib/natty-ui.rb
34
35
  - lib/natty-ui/ansi.rb
35
36
  - lib/natty-ui/ansi_wrapper.rb
37
+ - lib/natty-ui/features.rb
38
+ - lib/natty-ui/mixins.rb
36
39
  - lib/natty-ui/version.rb
37
40
  - lib/natty-ui/wrapper.rb
38
41
  - lib/natty-ui/wrapper/ask.rb
39
42
  - lib/natty-ui/wrapper/element.rb
40
- - lib/natty-ui/wrapper/features.rb
41
43
  - lib/natty-ui/wrapper/framed.rb
42
44
  - lib/natty-ui/wrapper/heading.rb
45
+ - lib/natty-ui/wrapper/list_in_columns.rb
43
46
  - lib/natty-ui/wrapper/message.rb
44
- - lib/natty-ui/wrapper/mixins.rb
45
47
  - lib/natty-ui/wrapper/progress.rb
46
48
  - lib/natty-ui/wrapper/query.rb
49
+ - lib/natty-ui/wrapper/request.rb
47
50
  - lib/natty-ui/wrapper/section.rb
48
51
  - lib/natty-ui/wrapper/task.rb
49
52
  homepage: https://github.com/mblumtritt/natty-ui
@@ -69,7 +72,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
69
72
  - !ruby/object:Gem::Version
70
73
  version: '0'
71
74
  requirements: []
72
- rubygems_version: 3.4.21
75
+ rubygems_version: 3.4.22
73
76
  signing_key:
74
77
  specification_version: 4
75
78
  summary: This is the beautiful, nice, nifty, fancy, neat, pretty, cool, lovely, natty
data/examples/colors.rb DELETED
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # require 'natty-ui'
4
- require_relative '../lib/natty-ui'
5
-
6
- 256.times { |i| print NattyUI::Ansi.embellish("color #{i} ", i) }
7
- puts
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 688"><style>text{dominant-baseline:text-before-edge;white-space:pre;font:13px Courier,monospace;fill:#bbb}.u{text-decoration:underline}.c1{fill:#0080d5}.f{fill:#fff}.c2{fill:#a5faff}.c3{fill:#ff50a5}.c4{fill:#50d0ff}.c5{fill:#2ad5d5}.c6{fill:#fffa50}.c7{fill:#ff5050}.c8{fill:#50ff50}.c9{fill:#ffa5ff}.ca{fill:#ffff50}.cb{fill:#55aad5}.cc{fill:#d5802a}</style><rect width="100%" height="100%" style="fill:#000;shape-rendering:crispEdges"/><text class="c1">═</text><text x="8" class="c1">═</text><text x="16" class="c1">═</text><text x="24" class="c1">═</text><text x="32" class="c1">═</text><text x="40" class="c1">═</text><text x="48" class="c1">═</text><text x="64" class="f">N</text><text x="72" class="f">a</text><text x="80" class="f">t</text><text x="88" class="f">t</text><text x="96" class="f">y</text><text x="104" class="f">U</text><text x="112" class="f">I</text><text x="128" class="f">B</text><text x="136" class="f">a</text><text x="144" class="f">s</text><text x="152" class="f">i</text><text x="160" class="f">c</text><text x="176" class="f">F</text><text x="184" class="f">e</text><text x="192" class="f">a</text><text x="200" class="f">t</text><text x="208" class="f">u</text><text x="216" class="f">r</text><text x="224" class="f">e</text><text x="240" class="f">D</text><text x="248" class="f">e</text><text x="256" class="f">m</text><text x="264" class="f">o</text><text x="280" class="c4">═</text><text x="288" class="c4">═</text><text x="296" class="c4">═</text><text x="304" class="c4">═</text><text x="312" class="c4">═</text><text x="320" class="c4">═</text><text x="328" class="c4">═</text><text y="32">T</text><text x="8" y="32">h</text><text x="16" y="32">i</text><text x="24" y="32">s</text><text x="40" y="32">i</text><text x="48" y="32">s</text><text x="64" y="32">a</text><text x="80" y="32">s</text><text x="88" y="32">h</text><text x="96" y="32">o</text><text x="104" y="32">r</text><text x="112" y="32">t</text><text x="128" y="32">d</text><text x="136" y="32">e</text><text x="144" y="32">m</text><text x="152" y="32">o</text><text x="168" y="32">o</text><text x="176" y="32">f</text><text x="192" y="32">t</text><text x="200" y="32">h</text><text x="208" y="32">e</text><text x="224" y="32">b</text><text x="232" y="32">a</text><text x="240" y="32">s</text><text x="248" y="32">i</text><text x="256" y="32">c</text><text x="272" y="32">f</text><text x="280" y="32">e</text><text x="288" y="32">a</text><text x="296" y="32">t</text><text x="304" y="32">u</text><text x="312" y="32">r</text><text x="320" y="32">e</text><text x="328" y="32">s</text><text x="344" y="32">o</text><text x="352" y="32">f</text><text x="368" y="32" class="c2">N</text><text x="376" y="32" class="c2">a</text><text x="384" y="32" class="c2">t</text><text x="392" y="32" class="c2">t</text><text x="400" y="32" class="c2">y</text><text x="408" y="32" class="c2">U</text><text x="416" y="32" class="c2">I</text><text x="424" y="32">.</text><text y="64" class="c1">━</text><text x="8" y="64" class="c1">━</text><text x="16" y="64" class="c1">━</text><text x="24" y="64" class="c1">━</text><text x="32" y="64" class="c1">━</text><text x="48" y="64" class="f">F</text><text x="56" y="64" class="f">e</text><text x="64" y="64" class="f">a</text><text x="72" y="64" class="f">t</text><text x="80" y="64" class="f">u</text><text x="88" y="64" class="f">r</text><text x="96" y="64" class="f">e</text><text x="104" y="64" class="f">:</text><text x="120" y="64" class="f">A</text><text x="128" y="64" class="f">N</text><text x="136" y="64" class="f">S</text><text x="144" y="64" class="f">I</text><text x="160" y="64" class="f">C</text><text x="168" y="64" class="f">o</text><text x="176" y="64" class="f">l</text><text x="184" y="64" class="f">o</text><text x="192" y="64" class="f">r</text><text x="200" y="64" class="f">s</text><text x="216" y="64" class="f">a</text><text x="224" y="64" class="f">n</text><text x="232" y="64" class="f">d</text><text x="248" y="64" class="f">A</text><text x="256" y="64" class="f">t</text><text x="264" y="64" class="f">t</text><text x="272" y="64" class="f">r</text><text x="280" y="64" class="f">i</text><text x="288" y="64" class="f">b</text><text x="296" y="64" class="f">u</text><text x="304" y="64" class="f">t</text><text x="312" y="64" class="f">e</text><text x="320" y="64" class="f">s</text><text x="336" y="64" class="c4">━</text><text x="344" y="64" class="c4">━</text><text x="352" y="64" class="c4">━</text><text x="360" y="64" class="c4">━</text><text x="368" y="64" class="c4">━</text><text y="96">L</text><text x="8" y="96">i</text><text x="16" y="96">k</text><text x="24" y="96">e</text><text x="40" y="96">y</text><text x="48" y="96">o</text><text x="56" y="96">u</text><text x="72" y="96">m</text><text x="80" y="96">i</text><text x="88" y="96">g</text><text x="96" y="96">h</text><text x="104" y="96">t</text><text x="120" y="96">n</text><text x="128" y="96">o</text><text x="136" y="96">t</text><text x="144" y="96">i</text><text x="152" y="96">c</text><text x="160" y="96">e</text><text x="168" y="96">d</text><text x="184" y="96">y</text><text x="192" y="96">o</text><text x="200" y="96">u</text><text x="216" y="96">c</text><text x="224" y="96">a</text><text x="232" y="96">n</text><text x="248" y="96" class="c5">c</text><text x="256" y="96" class="c5">o</text><text x="264" y="96" class="c5">l</text><text x="272" y="96" class="c5">o</text><text x="280" y="96" class="c5">r</text><text x="296" y="96" class="cc">t</text><text x="304" y="96" class="cc">e</text><text x="312" y="96" class="cc">x</text><text x="320" y="96" class="cc">t</text><text x="336" y="96">f</text><text x="344" y="96">o</text><text x="352" y="96">r</text><text x="368" y="96">t</text><text x="376" y="96">e</text><text x="384" y="96">r</text><text x="392" y="96">m</text><text x="400" y="96">i</text><text x="408" y="96">n</text><text x="416" y="96">a</text><text x="424" y="96">l</text><text x="432" y="96">s</text><text x="448" y="96">s</text><text x="456" y="96">u</text><text x="464" y="96">p</text><text x="472" y="96">p</text><text x="480" y="96">o</text><text x="488" y="96">r</text><text x="496" y="96">t</text><text x="504" y="96">i</text><text x="512" y="96">n</text><text x="520" y="96">g</text><text x="536" y="96">t</text><text x="544" y="96">h</text><text x="552" y="96">i</text><text x="560" y="96">s</text><text y="112">f</text><text x="8" y="112">e</text><text x="16" y="112">a</text><text x="24" y="112">t</text><text x="32" y="112">u</text><text x="40" y="112">r</text><text x="48" y="112">e</text><text x="56" y="112">.</text><text x="72" y="112">Y</text><text x="80" y="112">o</text><text x="88" y="112">u</text><text x="104" y="112">c</text><text x="112" y="112">a</text><text x="120" y="112">n</text><text x="136" y="112">e</text><text x="144" y="112">n</text><text x="152" y="112">f</text><text x="160" y="112">o</text><text x="168" y="112">r</text><text x="176" y="112">e</text><text x="184" y="112">c</text><text x="192" y="112">e</text><text x="208" y="112">t</text><text x="216" y="112">h</text><text x="224" y="112">e</text><text x="240" y="112">n</text><text x="248" y="112">o</text><text x="256" y="112">n</text><text x="264" y="112">-</text><text x="272" y="112">A</text><text x="280" y="112">N</text><text x="288" y="112">S</text><text x="296" y="112">I</text><text x="312" y="112">v</text><text x="320" y="112">e</text><text x="328" y="112">r</text><text x="336" y="112">s</text><text x="344" y="112">i</text><text x="352" y="112">o</text><text x="360" y="112">n</text><text x="376" y="112">b</text><text x="384" y="112">y</text><text x="400" y="112">s</text><text x="408" y="112">e</text><text x="416" y="112">t</text><text x="424" y="112">t</text><text x="432" y="112">i</text><text x="440" y="112">n</text><text x="448" y="112">g</text><text x="464" y="112">t</text><text x="472" y="112">h</text><text x="480" y="112">e</text><text x="496" y="112">e</text><text x="504" y="112">n</text><text x="512" y="112">v</text><text x="520" y="112">i</text><text x="528" y="112">r</text><text x="536" y="112">o</text><text x="544" y="112">n</text><text x="552" y="112">m</text><text x="560" y="112">e</text><text x="568" y="112">n</text><text x="576" y="112">t</text><text y="128">v</text><text x="8" y="128">a</text><text x="16" y="128">r</text><text x="24" y="128">i</text><text x="32" y="128">a</text><text x="40" y="128">b</text><text x="48" y="128">l</text><text x="56" y="128">e</text><text x="72" y="128" class="cb">N</text><text x="80" y="128" class="cb">O</text><text x="88" y="128" class="cb">_</text><text x="96" y="128" class="cb">C</text><text x="104" y="128" class="cb">O</text><text x="112" y="128" class="cb">L</text><text x="120" y="128" class="cb">O</text><text x="128" y="128" class="cb">R</text><text x="144" y="128">t</text><text x="152" y="128">o</text><text x="168" y="128">&apos;</text><text x="176" y="128" class="cb">1</text><text x="184" y="128">&apos;</text><text x="192" y="128">.</text><text x="208" y="128">(</text><text x="216" y="128">s</text><text x="224" y="128">e</text><text x="232" y="128">e</text><text x="248" y="128">a</text><text x="256" y="128">l</text><text x="264" y="128">s</text><text x="272" y="128">o</text><text x="288" y="128" class="u">h</text><text x="296" y="128" class="u">t</text><text x="304" y="128" class="u">t</text><text x="312" y="128" class="u">p</text><text x="320" y="128" class="u">s</text><text x="328" y="128" class="u">:</text><text x="336" y="128" class="u">/</text><text x="344" y="128" class="u">/</text><text x="352" y="128" class="u">n</text><text x="360" y="128" class="u">o</text><text x="368" y="128" class="u">-</text><text x="376" y="128" class="u">c</text><text x="384" y="128" class="u">o</text><text x="392" y="128" class="u">l</text><text x="400" y="128" class="u">o</text><text x="408" y="128" class="u">r</text><text x="416" y="128" class="u">.</text><text x="424" y="128" class="u">o</text><text x="432" y="128" class="u">r</text><text x="440" y="128" class="u">g</text><text x="448" y="128">)</text><text y="160">Y</text><text x="8" y="160">o</text><text x="16" y="160">u</text><text x="32" y="160">c</text><text x="40" y="160">a</text><text x="48" y="160">n</text><text x="64" y="160">n</text><text x="72" y="160">o</text><text x="80" y="160">t</text><text x="96" y="160">o</text><text x="104" y="160">n</text><text x="112" y="160">l</text><text x="120" y="160">y</text><text x="136" y="160">c</text><text x="144" y="160">o</text><text x="152" y="160">l</text><text x="160" y="160">o</text><text x="168" y="160">r</text><text x="184" y="160">y</text><text x="192" y="160">o</text><text x="200" y="160">u</text><text x="208" y="160">r</text><text x="224" y="160">t</text><text x="232" y="160">e</text><text x="240" y="160">x</text><text x="248" y="160">t</text><text x="264" y="160">b</text><text x="272" y="160">u</text><text x="280" y="160">t</text><text x="296" y="160">a</text><text x="304" y="160">l</text><text x="312" y="160">s</text><text x="320" y="160">o</text><text x="336" y="160">m</text><text x="344" y="160">o</text><text x="352" y="160">d</text><text x="360" y="160">i</text><text x="368" y="160">f</text><text x="376" y="160">y</text><text x="384" y="160">,</text><text x="400" y="160" class="u">d</text><text x="408" y="160" class="u">e</text><text x="416" y="160" class="u">c</text><text x="424" y="160" class="u">o</text><text x="432" y="160" class="u">r</text><text x="440" y="160" class="u">a</text><text x="448" y="160" class="u">t</text><text x="456" y="160" class="u">e</text><text x="472" y="160">a</text><text x="480" y="160">n</text><text x="488" y="160">d</text><text x="504" y="160">m</text><text x="512" y="160">a</text><text x="520" y="160">n</text><text x="528" y="160">i</text><text x="536" y="160">p</text><text x="544" y="160">u</text><text x="552" y="160">l</text><text x="560" y="160">a</text><text x="568" y="160">t</text><text x="576" y="160">e</text><text y="176">i</text><text x="8" y="176">t</text><text x="16" y="176">.</text><text x="32" y="176">T</text><text x="40" y="176">h</text><text x="48" y="176">e</text><text x="64" y="176">a</text><text x="72" y="176">t</text><text x="80" y="176">t</text><text x="88" y="176">r</text><text x="96" y="176">i</text><text x="104" y="176">b</text><text x="112" y="176">u</text><text x="120" y="176">t</text><text x="128" y="176">e</text><text x="136" y="176">s</text><text x="152" y="176">a</text><text x="160" y="176">r</text><text x="168" y="176">e</text><text x="184" y="176">d</text><text x="192" y="176">i</text><text x="200" y="176">r</text><text x="208" y="176">e</text><text x="216" y="176">c</text><text x="224" y="176">t</text><text x="240" y="176">e</text><text x="248" y="176">m</text><text x="256" y="176">b</text><text x="264" y="176">e</text><text x="272" y="176">d</text><text x="280" y="176">d</text><text x="288" y="176">e</text><text x="296" y="176">d</text><text x="312" y="176">i</text><text x="320" y="176">n</text><text x="328" y="176">t</text><text x="336" y="176">o</text><text x="352" y="176">t</text><text x="360" y="176">h</text><text x="368" y="176">e</text><text x="384" y="176">t</text><text x="392" y="176">e</text><text x="400" y="176">x</text><text x="408" y="176">t</text><text x="424" y="176">l</text><text x="432" y="176">i</text><text x="440" y="176">k</text><text x="448" y="176">e</text><text x="464" y="176">&apos;</text><text x="472" y="176">[</text><text x="480" y="176">[</text><text x="488" y="176">b</text><text x="496" y="176">o</text><text x="504" y="176">l</text><text x="512" y="176">d</text><text x="528" y="176">r</text><text x="536" y="176">e</text><text x="544" y="176">d</text><text x="552" y="176">]</text><text x="560" y="176">]</text><text x="568" y="176">&apos;</text><text y="192">a</text><text x="8" y="192">n</text><text x="16" y="192">d</text><text x="32" y="192">c</text><text x="40" y="192">a</text><text x="48" y="192">n</text><text x="64" y="192">b</text><text x="72" y="192">e</text><text x="88" y="192">r</text><text x="96" y="192">e</text><text x="104" y="192">s</text><text x="112" y="192">e</text><text x="120" y="192">t</text><text x="128" y="192">t</text><text x="136" y="192">e</text><text x="144" y="192">d</text><text x="160" y="192">w</text><text x="168" y="192">i</text><text x="176" y="192">t</text><text x="184" y="192">h</text><text x="200" y="192">&apos;</text><text x="208" y="192">[</text><text x="216" y="192">[</text><text x="224" y="192">/</text><text x="232" y="192">]</text><text x="240" y="192">]</text><text x="248" y="192">&apos;</text><text x="264" y="192">o</text><text x="272" y="192">r</text><text x="288" y="192">a</text><text x="296" y="192">t</text><text x="312" y="192">t</text><text x="320" y="192">h</text><text x="328" y="192">e</text><text x="344" y="192">l</text><text x="352" y="192">i</text><text x="360" y="192">n</text><text x="368" y="192">e</text><text x="384" y="192">e</text><text x="392" y="192">n</text><text x="400" y="192">d</text><text x="408" y="192">.</text><text y="224" class="c1">━</text><text x="8" y="224" class="c1">━</text><text x="16" y="224" class="c1">━</text><text x="24" y="224" class="c1">━</text><text x="32" y="224" class="c1">━</text><text x="48" y="224" class="f">F</text><text x="56" y="224" class="f">e</text><text x="64" y="224" class="f">a</text><text x="72" y="224" class="f">t</text><text x="80" y="224" class="f">u</text><text x="88" y="224" class="f">r</text><text x="96" y="224" class="f">e</text><text x="104" y="224" class="f">:</text><text x="120" y="224" class="f">S</text><text x="128" y="224" class="f">e</text><text x="136" y="224" class="f">c</text><text x="144" y="224" class="f">t</text><text x="152" y="224" class="f">i</text><text x="160" y="224" class="f">o</text><text x="168" y="224" class="f">n</text><text x="176" y="224" class="f">s</text><text x="192" y="224" class="c4">━</text><text x="200" y="224" class="c4">━</text><text x="208" y="224" class="c4">━</text><text x="216" y="224" class="c4">━</text><text x="224" y="224" class="c4">━</text><text y="256">S</text><text x="8" y="256">e</text><text x="16" y="256">c</text><text x="24" y="256">t</text><text x="32" y="256">i</text><text x="40" y="256">o</text><text x="48" y="256">n</text><text x="56" y="256">s</text><text x="72" y="256">g</text><text x="80" y="256">r</text><text x="88" y="256">o</text><text x="96" y="256">u</text><text x="104" y="256">p</text><text x="120" y="256">t</text><text x="128" y="256">e</text><text x="136" y="256">x</text><text x="144" y="256">t</text><text x="160" y="256">l</text><text x="168" y="256">i</text><text x="176" y="256">n</text><text x="184" y="256">e</text><text x="192" y="256">s</text><text x="208" y="256">t</text><text x="216" y="256">o</text><text x="224" y="256">g</text><text x="232" y="256">e</text><text x="240" y="256">t</text><text x="248" y="256">h</text><text x="256" y="256">e</text><text x="264" y="256">r</text><text x="280" y="256">a</text><text x="288" y="256">n</text><text x="296" y="256">d</text><text x="304" y="256">/</text><text x="312" y="256">o</text><text x="320" y="256">r</text><text x="336" y="256">d</text><text x="344" y="256">e</text><text x="352" y="256">f</text><text x="360" y="256">i</text><text x="368" y="256">n</text><text x="376" y="256">e</text><text x="392" y="256">t</text><text x="400" y="256">h</text><text x="408" y="256">e</text><text x="416" y="256">i</text><text x="424" y="256">r</text><text x="440" y="256">s</text><text x="448" y="256">t</text><text x="456" y="256">y</text><text x="464" y="256">l</text><text x="472" y="256">e</text><text x="480" y="256">.</text><text x="496" y="256">T</text><text x="504" y="256">h</text><text x="512" y="256">e</text><text x="520" y="256">r</text><text x="528" y="256">e</text><text x="544" y="256">a</text><text x="552" y="256">r</text><text x="560" y="256">e</text><text y="272">s</text><text x="8" y="272">e</text><text x="16" y="272">v</text><text x="24" y="272">e</text><text x="32" y="272">r</text><text x="40" y="272">a</text><text x="48" y="272">l</text><text x="64" y="272">s</text><text x="72" y="272">e</text><text x="80" y="272">c</text><text x="88" y="272">t</text><text x="96" y="272">i</text><text x="104" y="272">o</text><text x="112" y="272">n</text><text x="128" y="272">t</text><text x="136" y="272">y</text><text x="144" y="272">p</text><text x="152" y="272">e</text><text x="160" y="272">s</text><text x="176" y="272">w</text><text x="184" y="272">h</text><text x="192" y="272">i</text><text x="200" y="272">c</text><text x="208" y="272">h</text><text x="224" y="272">a</text><text x="232" y="272">l</text><text x="240" y="272">l</text><text x="256" y="272">c</text><text x="264" y="272">a</text><text x="272" y="272">n</text><text x="288" y="272">b</text><text x="296" y="272">e</text><text x="312" y="272">s</text><text x="320" y="272">t</text><text x="328" y="272">a</text><text x="336" y="272">c</text><text x="344" y="272">k</text><text x="352" y="272">e</text><text x="360" y="272">d</text><text x="368" y="272">.</text><text y="304">H</text><text x="8" y="304">a</text><text x="16" y="304">v</text><text x="24" y="304">e</text><text x="40" y="304">a</text><text x="56" y="304">l</text><text x="64" y="304">o</text><text x="72" y="304">o</text><text x="80" y="304">k</text><text x="96" y="304">a</text><text x="104" y="304">t</text><text x="120" y="304">t</text><text x="128" y="304">h</text><text x="136" y="304">e</text><text x="152" y="304">d</text><text x="160" y="304">i</text><text x="168" y="304">f</text><text x="176" y="304">f</text><text x="184" y="304">e</text><text x="192" y="304">r</text><text x="200" y="304">e</text><text x="208" y="304">n</text><text x="216" y="304">t</text><text x="232" y="304">t</text><text x="240" y="304">y</text><text x="248" y="304">p</text><text x="256" y="304">e</text><text x="264" y="304">s</text><text x="280" y="304">o</text><text x="288" y="304">f</text><text x="304" y="304">s</text><text x="312" y="304">e</text><text x="320" y="304">c</text><text x="328" y="304">t</text><text x="336" y="304">i</text><text x="344" y="304">o</text><text x="352" y="304">n</text><text x="360" y="304">s</text><text x="368" y="304">:</text><text y="336" class="f">•</text><text x="16" y="336" class="f">G</text><text x="24" y="336" class="f">e</text><text x="32" y="336" class="f">n</text><text x="40" y="336" class="f">e</text><text x="48" y="336" class="f">r</text><text x="56" y="336" class="f">i</text><text x="64" y="336" class="f">c</text><text x="80" y="336" class="f">M</text><text x="88" y="336" class="f">e</text><text x="96" y="336" class="f">s</text><text x="104" y="336" class="f">s</text><text x="112" y="336" class="f">a</text><text x="120" y="336" class="f">g</text><text x="128" y="336" class="f">e</text><text y="352" class="c2">i</text><text x="16" y="352" class="c2">I</text><text x="24" y="352" class="c2">n</text><text x="32" y="352" class="c2">f</text><text x="40" y="352" class="c2">o</text><text x="48" y="352" class="c2">r</text><text x="56" y="352" class="c2">m</text><text x="64" y="352" class="c2">a</text><text x="72" y="352" class="c2">t</text><text x="80" y="352" class="c2">i</text><text x="88" y="352" class="c2">o</text><text x="96" y="352" class="c2">n</text><text x="104" y="352" class="c2">a</text><text x="112" y="352" class="c2">l</text><text x="128" y="352" class="c2">M</text><text x="136" y="352" class="c2">e</text><text x="144" y="352" class="c2">s</text><text x="152" y="352" class="c2">s</text><text x="160" y="352" class="c2">a</text><text x="168" y="352" class="c2">g</text><text x="176" y="352" class="c2">e</text><text y="368" class="c6">!</text><text x="16" y="368" class="c6">W</text><text x="24" y="368" class="c6">a</text><text x="32" y="368" class="c6">r</text><text x="40" y="368" class="c6">n</text><text x="48" y="368" class="c6">i</text><text x="56" y="368" class="c6">n</text><text x="64" y="368" class="c6">g</text><text x="80" y="368" class="c6">M</text><text x="88" y="368" class="c6">e</text><text x="96" y="368" class="c6">s</text><text x="104" y="368" class="c6">s</text><text x="112" y="368" class="c6">a</text><text x="120" y="368" class="c6">g</text><text x="128" y="368" class="c6">e</text><text y="384" class="c7">X</text><text x="16" y="384" class="c7">E</text><text x="24" y="384" class="c7">r</text><text x="32" y="384" class="c7">r</text><text x="40" y="384" class="c7">o</text><text x="48" y="384" class="c7">r</text><text x="64" y="384" class="c7">M</text><text x="72" y="384" class="c7">e</text><text x="80" y="384" class="c7">s</text><text x="88" y="384" class="c7">s</text><text x="96" y="384" class="c7">a</text><text x="104" y="384" class="c7">g</text><text x="112" y="384" class="c7">e</text><text y="400" class="c8">✓</text><text x="16" y="400" class="c8">C</text><text x="24" y="400" class="c8">o</text><text x="32" y="400" class="c8">m</text><text x="40" y="400" class="c8">p</text><text x="48" y="400" class="c8">l</text><text x="56" y="400" class="c8">e</text><text x="64" y="400" class="c8">t</text><text x="72" y="400" class="c8">i</text><text x="80" y="400" class="c8">o</text><text x="88" y="400" class="c8">n</text><text x="104" y="400" class="c8">M</text><text x="112" y="400" class="c8">e</text><text x="120" y="400" class="c8">s</text><text x="128" y="400" class="c8">s</text><text x="136" y="400" class="c8">a</text><text x="144" y="400" class="c8">g</text><text x="152" y="400" class="c8">e</text><text y="416" class="c3">F</text><text x="16" y="416" class="c3">F</text><text x="24" y="416" class="c3">a</text><text x="32" y="416" class="c3">i</text><text x="40" y="416" class="c3">l</text><text x="48" y="416" class="c3">u</text><text x="56" y="416" class="c3">r</text><text x="64" y="416" class="c3">e</text><text x="80" y="416" class="c3">M</text><text x="88" y="416" class="c3">e</text><text x="96" y="416" class="c3">s</text><text x="104" y="416" class="c3">s</text><text x="112" y="416" class="c3">a</text><text x="120" y="416" class="c3">g</text><text x="128" y="416" class="c3">e</text><text y="432" class="f">◉</text><text x="16" y="432" class="c9">C</text><text x="24" y="432" class="c9">u</text><text x="32" y="432" class="c9">s</text><text x="40" y="432" class="c9">t</text><text x="48" y="432" class="c9">o</text><text x="56" y="432" class="c9">m</text><text x="64" y="432" class="c9">i</text><text x="72" y="432" class="c9">z</text><text x="80" y="432" class="c9">e</text><text x="88" y="432" class="c9">d</text><text x="104" y="432" class="c9">M</text><text x="112" y="432" class="c9">e</text><text x="120" y="432" class="c9">s</text><text x="128" y="432" class="c9">s</text><text x="136" y="432" class="c9">a</text><text x="144" y="432" class="c9">g</text><text x="152" y="432" class="c9">e</text><text y="464">Y</text><text x="8" y="464">o</text><text x="16" y="464">u</text><text x="32" y="464">c</text><text x="40" y="464">a</text><text x="48" y="464">n</text><text x="64" y="464">s</text><text x="72" y="464">t</text><text x="80" y="464">a</text><text x="88" y="464">c</text><text x="96" y="464">k</text><text x="112" y="464">a</text><text x="120" y="464">l</text><text x="128" y="464">l</text><text x="144" y="464">k</text><text x="152" y="464">i</text><text x="160" y="464">n</text><text x="168" y="464">d</text><text x="176" y="464">s</text><text x="192" y="464">o</text><text x="200" y="464">f</text><text x="216" y="464">s</text><text x="224" y="464">e</text><text x="232" y="464">c</text><text x="240" y="464">t</text><text x="248" y="464">i</text><text x="256" y="464">o</text><text x="264" y="464">n</text><text x="272" y="464">s</text><text x="288" y="464">t</text><text x="296" y="464">o</text><text x="304" y="464">g</text><text x="312" y="464">e</text><text x="320" y="464">t</text><text x="328" y="464">h</text><text x="336" y="464">e</text><text x="344" y="464">r</text><text x="352" y="464">:</text><text y="496" class="c1">┌</text><text x="8" y="496" class="c1">─</text><text x="16" y="496" class="c1">─</text><text x="32" y="496" class="f">S</text><text x="40" y="496" class="f">i</text><text x="48" y="496" class="f">m</text><text x="56" y="496" class="f">p</text><text x="64" y="496" class="f">l</text><text x="72" y="496" class="f">e</text><text x="88" y="496" class="f">F</text><text x="96" y="496" class="f">r</text><text x="104" y="496" class="f">a</text><text x="112" y="496" class="f">m</text><text x="120" y="496" class="f">e</text><text x="128" y="496" class="f">d</text><text x="144" y="496" class="f">S</text><text x="152" y="496" class="f">e</text><text x="160" y="496" class="f">c</text><text x="168" y="496" class="f">t</text><text x="176" y="496" class="f">i</text><text x="184" y="496" class="f">o</text><text x="192" y="496" class="f">n</text><text x="208" y="496" class="c1">─</text><text x="216" y="496" class="c1">─</text><text x="224" y="496" class="c1">─</text><text x="232" y="496" class="c1">─</text><text x="240" y="496" class="c1">─</text><text y="512" class="c1">│</text><text x="16" y="512" class="c1">┏</text><text x="24" y="512" class="c1">━</text><text x="32" y="512" class="c1">━</text><text x="48" y="512" class="f">H</text><text x="56" y="512" class="f">e</text><text x="64" y="512" class="f">a</text><text x="72" y="512" class="f">v</text><text x="80" y="512" class="f">y</text><text x="96" y="512" class="f">F</text><text x="104" y="512" class="f">r</text><text x="112" y="512" class="f">a</text><text x="120" y="512" class="f">m</text><text x="128" y="512" class="f">e</text><text x="136" y="512" class="f">d</text><text x="152" y="512" class="f">S</text><text x="160" y="512" class="f">e</text><text x="168" y="512" class="f">c</text><text x="176" y="512" class="f">t</text><text x="184" y="512" class="f">i</text><text x="192" y="512" class="f">o</text><text x="200" y="512" class="f">n</text><text x="216" y="512" class="c1">━</text><text x="224" y="512" class="c1">━</text><text x="232" y="512" class="c1">━</text><text x="240" y="512" class="c1">━</text><text x="248" y="512" class="c1">━</text><text y="528" class="c1">│</text><text x="16" y="528" class="c1">┃</text><text x="32" y="528" class="c1">┍</text><text x="40" y="528" class="c1">━</text><text x="48" y="528" class="c1">━</text><text x="64" y="528" class="f">S</text><text x="72" y="528" class="f">e</text><text x="80" y="528" class="f">m</text><text x="88" y="528" class="f">i</text><text x="104" y="528" class="f">F</text><text x="112" y="528" class="f">r</text><text x="120" y="528" class="f">a</text><text x="128" y="528" class="f">m</text><text x="136" y="528" class="f">e</text><text x="144" y="528" class="f">d</text><text x="160" y="528" class="f">S</text><text x="168" y="528" class="f">e</text><text x="176" y="528" class="f">c</text><text x="184" y="528" class="f">t</text><text x="192" y="528" class="f">i</text><text x="200" y="528" class="f">o</text><text x="208" y="528" class="f">n</text><text x="224" y="528" class="c1">━</text><text x="232" y="528" class="c1">━</text><text x="240" y="528" class="c1">━</text><text x="248" y="528" class="c1">━</text><text x="256" y="528" class="c1">━</text><text y="544" class="c1">│</text><text x="16" y="544" class="c1">┃</text><text x="32" y="544" class="c1">│</text><text x="48" y="544" class="c1">╔</text><text x="56" y="544" class="c1">═</text><text x="64" y="544" class="c1">═</text><text x="80" y="544" class="f">D</text><text x="88" y="544" class="f">o</text><text x="96" y="544" class="f">u</text><text x="104" y="544" class="f">b</text><text x="112" y="544" class="f">l</text><text x="120" y="544" class="f">e</text><text x="136" y="544" class="f">F</text><text x="144" y="544" class="f">r</text><text x="152" y="544" class="f">a</text><text x="160" y="544" class="f">m</text><text x="168" y="544" class="f">e</text><text x="176" y="544" class="f">d</text><text x="192" y="544" class="f">S</text><text x="200" y="544" class="f">e</text><text x="208" y="544" class="f">c</text><text x="216" y="544" class="f">t</text><text x="224" y="544" class="f">i</text><text x="232" y="544" class="f">o</text><text x="240" y="544" class="f">n</text><text x="256" y="544" class="c1">═</text><text x="264" y="544" class="c1">═</text><text x="272" y="544" class="c1">═</text><text x="280" y="544" class="c1">═</text><text x="288" y="544" class="c1">═</text><text y="560" class="c1">│</text><text x="16" y="560" class="c1">┃</text><text x="32" y="560" class="c1">│</text><text x="48" y="560" class="c1">║</text><text x="64" y="560" class="f">💛</text><text x="80" y="560" class="ca">F</text><text x="88" y="560" class="ca">r</text><text x="96" y="560" class="ca">a</text><text x="104" y="560" class="ca">m</text><text x="112" y="560" class="ca">e</text><text x="120" y="560" class="ca">s</text><text x="136" y="560" class="ca">a</text><text x="144" y="560" class="ca">r</text><text x="152" y="560" class="ca">e</text><text x="168" y="560" class="ca">n</text><text x="176" y="560" class="ca">i</text><text x="184" y="560" class="ca">c</text><text x="192" y="560" class="ca">e</text><text y="576" class="c1">│</text><text x="16" y="576" class="c1">┃</text><text x="32" y="576" class="c1">│</text><text x="48" y="576" class="c1">║</text><text x="88" y="576">J</text><text x="96" y="576">u</text><text x="104" y="576">s</text><text x="112" y="576">t</text><text x="128" y="576">t</text><text x="136" y="576">o</text><text x="152" y="576">s</text><text x="160" y="576">h</text><text x="168" y="576">o</text><text x="176" y="576">w</text><text x="192" y="576">y</text><text x="200" y="576">o</text><text x="208" y="576">u</text><text x="224" y="576">t</text><text x="232" y="576">h</text><text x="240" y="576">a</text><text x="248" y="576">t</text><text x="264" y="576">a</text><text x="272" y="576">l</text><text x="280" y="576">l</text><text x="296" y="576">s</text><text x="304" y="576">e</text><text x="312" y="576">c</text><text x="320" y="576">t</text><text x="328" y="576">i</text><text x="336" y="576">o</text><text x="344" y="576">n</text><text x="352" y="576">s</text><text y="592" class="c1">│</text><text x="16" y="592" class="c1">┃</text><text x="32" y="592" class="c1">│</text><text x="48" y="592" class="c1">║</text><text x="88" y="592">c</text><text x="96" y="592">a</text><text x="104" y="592">n</text><text x="120" y="592">b</text><text x="128" y="592">e</text><text x="144" y="592">s</text><text x="152" y="592">t</text><text x="160" y="592">a</text><text x="168" y="592">c</text><text x="176" y="592">k</text><text x="184" y="592">e</text><text x="192" y="592">d</text><text x="200" y="592">.</text><text x="208" y="592">.</text><text x="216" y="592">.</text><text y="608" class="c1">│</text><text x="16" y="608" class="c1">┃</text><text x="32" y="608" class="c1">│</text><text x="48" y="608" class="c1">╚</text><text x="56" y="608" class="c1">═</text><text x="64" y="608" class="c1">═</text><text x="72" y="608" class="c1">═</text><text x="80" y="608" class="c1">═</text><text x="88" y="608" class="c1">═</text><text x="96" y="608" class="c1">═</text><text x="104" y="608" class="c1">═</text><text x="112" y="608" class="c1">═</text><text x="120" y="608" class="c1">═</text><text x="128" y="608" class="c1">═</text><text y="624" class="c1">│</text><text x="16" y="624" class="c1">┃</text><text x="32" y="624" class="c1">┕</text><text x="40" y="624" class="c1">━</text><text x="48" y="624" class="c1">━</text><text x="56" y="624" class="c1">━</text><text x="64" y="624" class="c1">━</text><text x="72" y="624" class="c1">━</text><text x="80" y="624" class="c1">━</text><text x="88" y="624" class="c1">━</text><text x="96" y="624" class="c1">━</text><text x="104" y="624" class="c1">━</text><text x="112" y="624" class="c1">━</text><text y="640" class="c1">│</text><text x="16" y="640" class="c1">┗</text><text x="24" y="640" class="c1">━</text><text x="32" y="640" class="c1">━</text><text x="40" y="640" class="c1">━</text><text x="48" y="640" class="c1">━</text><text x="56" y="640" class="c1">━</text><text x="64" y="640" class="c1">━</text><text x="72" y="640" class="c1">━</text><text x="80" y="640" class="c1">━</text><text x="88" y="640" class="c1">━</text><text x="96" y="640" class="c1">━</text><text y="656" class="c1">└</text><text x="8" y="656" class="c1">─</text><text x="16" y="656" class="c1">─</text><text x="24" y="656" class="c1">─</text><text x="32" y="656" class="c1">─</text><text x="40" y="656" class="c1">─</text><text x="48" y="656" class="c1">─</text><text x="56" y="656" class="c1">─</text><text x="64" y="656" class="c1">─</text><text x="72" y="656" class="c1">─</text><text x="80" y="656" class="c1">─</text></svg>
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module NattyUI
4
- #
5
- # Mix-in for output functionality.
6
- #
7
- module Features
8
- protected
9
-
10
- def _element(type, *args)
11
- wrapper.class.const_get(type).__send__(:new, self).__send__(:_call, *args)
12
- end
13
-
14
- def _section(owner, type, args, **opts, &block)
15
- sec = wrapper.class.const_get(type).__send__(:new, owner, **opts)
16
- sec.puts(*args) if args && !args.empty?
17
- block ? sec.__send__(:_call, &block) : sec
18
- end
19
- end
20
- end