paintbrush 0.1.1 → 0.1.2
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
- data/Gemfile +1 -0
- data/Gemfile.lock +17 -1
- data/lib/paintbrush/colorized_string.rb +5 -2
- data/lib/paintbrush/colors.rb +5 -1
- data/lib/paintbrush/configuration.rb +40 -0
- data/lib/paintbrush/version.rb +1 -1
- data/lib/paintbrush.rb +5 -4
- metadata +3 -3
- data/rspec-documentation/bundle/introduction.html +0 -312
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 178fc999ac3d70a2f9dc640d1c3a187aac191019a1762af80f922144ab18aeb5
|
4
|
+
data.tar.gz: e1f996291bc1748c19ee6389415c896e14f98665b4297cc2217e20fc1657603e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6a05f14e7eb6ce19b86e8301e01000f51651ea01d93470a9a80928e3060e473800434141e537e71343995676c1131dbf69a4c6ecc271f9a2b37f52124fda5cf7
|
7
|
+
data.tar.gz: 4f4a5c99d916f055706e366fb7e56bec5a29223d04c604eb04686bcfa6cb596a78a6fdfd685b2a8df3804cf23bb60ce358d9b078d1426fd164b9c5e638d7b954
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
paintbrush (0.1.
|
4
|
+
paintbrush (0.1.2)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -10,23 +10,38 @@ GEM
|
|
10
10
|
concurrent-ruby (1.2.2)
|
11
11
|
devpack (0.4.1)
|
12
12
|
diff-lcs (1.5.0)
|
13
|
+
htmlbeautifier (1.4.2)
|
13
14
|
i18n (1.13.0)
|
14
15
|
concurrent-ruby (~> 1.0)
|
15
16
|
json (2.6.3)
|
17
|
+
kramdown (2.4.0)
|
18
|
+
rexml
|
19
|
+
kramdown-parser-gfm (1.1.0)
|
20
|
+
kramdown (~> 2.0)
|
16
21
|
paint (2.3.0)
|
17
22
|
parallel (1.23.0)
|
18
23
|
parser (3.2.2.1)
|
19
24
|
ast (~> 2.4.1)
|
20
25
|
rainbow (3.1.1)
|
21
26
|
rake (13.0.6)
|
27
|
+
redcarpet (3.6.0)
|
22
28
|
regexp_parser (2.8.0)
|
23
29
|
rexml (3.2.5)
|
30
|
+
rouge (4.1.1)
|
24
31
|
rspec (3.12.0)
|
25
32
|
rspec-core (~> 3.12.0)
|
26
33
|
rspec-expectations (~> 3.12.0)
|
27
34
|
rspec-mocks (~> 3.12.0)
|
28
35
|
rspec-core (3.12.2)
|
29
36
|
rspec-support (~> 3.12.0)
|
37
|
+
rspec-documentation (0.0.2)
|
38
|
+
htmlbeautifier (~> 1.4)
|
39
|
+
kramdown (~> 2.4)
|
40
|
+
kramdown-parser-gfm (~> 1.1)
|
41
|
+
paintbrush (~> 0.1.1)
|
42
|
+
redcarpet (~> 3.6)
|
43
|
+
rouge (~> 4.1)
|
44
|
+
rspec (~> 3.12)
|
30
45
|
rspec-expectations (3.12.3)
|
31
46
|
diff-lcs (>= 1.2.0, < 2.0)
|
32
47
|
rspec-support (~> 3.12.0)
|
@@ -70,6 +85,7 @@ DEPENDENCIES
|
|
70
85
|
paintbrush!
|
71
86
|
rake (~> 13.0)
|
72
87
|
rspec (~> 3.0)
|
88
|
+
rspec-documentation (~> 0.0.2)
|
73
89
|
rubocop (~> 1.51)
|
74
90
|
rubocop-rake (~> 0.6.0)
|
75
91
|
rubocop-rspec (~> 2.22)
|
@@ -5,7 +5,8 @@ module Paintbrush
|
|
5
5
|
# sequences to store references to start and end of each coloring method to allow nested
|
6
6
|
# colorizing with string interpolation within each individual call to `paintbrush`.
|
7
7
|
class ColorizedString
|
8
|
-
def initialize(&block)
|
8
|
+
def initialize(colorize:, &block)
|
9
|
+
@colorize = colorize
|
9
10
|
@block = block
|
10
11
|
@stack = []
|
11
12
|
end
|
@@ -14,7 +15,9 @@ module Paintbrush
|
|
14
15
|
# method in the provided block, rebuilds the string and returns the value with regular ANSI
|
15
16
|
# color codes ready to be output to a console.
|
16
17
|
def colorized
|
17
|
-
|
18
|
+
Configuration.with_configuration(colorize: @colorize) do
|
19
|
+
colorized_string
|
20
|
+
end
|
18
21
|
end
|
19
22
|
|
20
23
|
private
|
data/lib/paintbrush/colors.rb
CHANGED
@@ -20,7 +20,11 @@ module Paintbrush
|
|
20
20
|
|
21
21
|
COLOR_CODES.each do |name, code|
|
22
22
|
define_method name do |string|
|
23
|
-
|
23
|
+
if Configuration.colorize?
|
24
|
+
ColorElement.new(stack: @__stack, code: code, string: string).to_s
|
25
|
+
else
|
26
|
+
string
|
27
|
+
end
|
24
28
|
end
|
25
29
|
end
|
26
30
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Paintbrush
|
4
|
+
# Provides a configuration interface for Paintbrush features, allows disabling colorization.
|
5
|
+
#
|
6
|
+
# Usage:
|
7
|
+
#
|
8
|
+
# ```ruby
|
9
|
+
# Paintbrush::Configuration.colorize = false
|
10
|
+
# ```
|
11
|
+
module Configuration
|
12
|
+
@defaults = {
|
13
|
+
colorize: true
|
14
|
+
}
|
15
|
+
|
16
|
+
@configuration = {}
|
17
|
+
|
18
|
+
class << self
|
19
|
+
attr_reader :configuration, :defaults
|
20
|
+
|
21
|
+
def colorize=(val)
|
22
|
+
configuration[:colorize] = val
|
23
|
+
end
|
24
|
+
|
25
|
+
def colorize?
|
26
|
+
configuration.fetch(:colorize, defaults[:colorize])
|
27
|
+
end
|
28
|
+
|
29
|
+
def reset
|
30
|
+
@configuration = {}
|
31
|
+
end
|
32
|
+
|
33
|
+
def with_configuration(**options, &block)
|
34
|
+
previous = configuration.dup
|
35
|
+
options.compact.each { |key, value| configuration[key] = value unless configuration.key?(key) }
|
36
|
+
block.call.tap { @configuration = previous }
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/lib/paintbrush/version.rb
CHANGED
data/lib/paintbrush.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative 'paintbrush/version'
|
4
|
+
require_relative 'paintbrush/configuration'
|
4
5
|
require_relative 'paintbrush/escapes'
|
5
6
|
require_relative 'paintbrush/colors'
|
6
7
|
require_relative 'paintbrush/colorized_string'
|
@@ -20,11 +21,11 @@ require_relative 'paintbrush/element_tree'
|
|
20
21
|
# end
|
21
22
|
# ```
|
22
23
|
module Paintbrush
|
23
|
-
def self.paintbrush(&block)
|
24
|
-
ColorizedString.new(&block).colorized
|
24
|
+
def self.paintbrush(colorize: nil, &block)
|
25
|
+
ColorizedString.new(colorize: colorize, &block).colorized
|
25
26
|
end
|
26
27
|
|
27
|
-
def paintbrush(&block)
|
28
|
-
Paintbrush.paintbrush(&block)
|
28
|
+
def paintbrush(colorize: nil, &block)
|
29
|
+
Paintbrush.paintbrush(colorize: colorize, &block)
|
29
30
|
end
|
30
31
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paintbrush
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bob Farrell
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-05-
|
11
|
+
date: 2023-05-30 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Provides a set of encapsulated methods for nested colorization of strings.
|
14
14
|
email:
|
@@ -32,11 +32,11 @@ files:
|
|
32
32
|
- lib/paintbrush/color_element.rb
|
33
33
|
- lib/paintbrush/colorized_string.rb
|
34
34
|
- lib/paintbrush/colors.rb
|
35
|
+
- lib/paintbrush/configuration.rb
|
35
36
|
- lib/paintbrush/element_tree.rb
|
36
37
|
- lib/paintbrush/escapes.rb
|
37
38
|
- lib/paintbrush/version.rb
|
38
39
|
- paintbrush.gemspec
|
39
|
-
- rspec-documentation/bundle/introduction.html
|
40
40
|
- rspec-documentation/pages/Introduction.md
|
41
41
|
- sig/paintbrush.rbs
|
42
42
|
homepage: https://github.com/bobf/paintbrush
|
@@ -1,312 +0,0 @@
|
|
1
|
-
<html>
|
2
|
-
<head>
|
3
|
-
<link rel="stylesheet"
|
4
|
-
href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.2.3/css/bootstrap.min.css"
|
5
|
-
integrity="sha512-SbiR/eusphKoMVVXysTKG/7VseWii+Y3FdHrt0EpKgpToZeemhqHeZeLWLhJutz/2ut2Vw1uQEj2MbRF+TVBUA=="
|
6
|
-
crossorigin="anonymous"
|
7
|
-
referrerpolicy="no-referrer" />
|
8
|
-
<style>
|
9
|
-
|
10
|
-
.code {
|
11
|
-
font-family: monospace;
|
12
|
-
max-height: 30rem;
|
13
|
-
overflow-y: auto;
|
14
|
-
}
|
15
|
-
|
16
|
-
h1.title {
|
17
|
-
display: inline;
|
18
|
-
}
|
19
|
-
|
20
|
-
.header .separator {
|
21
|
-
display: inline-block;
|
22
|
-
height: 2.5rem;
|
23
|
-
}
|
24
|
-
|
25
|
-
.version {
|
26
|
-
color: #bbb;
|
27
|
-
font-size: 2rem;
|
28
|
-
}
|
29
|
-
|
30
|
-
.ansi-html {
|
31
|
-
display: inline-block;
|
32
|
-
background-color: #2e2e2e;
|
33
|
-
border: 5px solid #2e2e2e;
|
34
|
-
border-radius: 10px;
|
35
|
-
}
|
36
|
-
|
37
|
-
.ansi-html .ansi-color-0 { color: #555555; }
|
38
|
-
.ansi-html .ansi-color-1 { color: #ff0000; }
|
39
|
-
.ansi-html .ansi-color-2 { color: #47ff47; }
|
40
|
-
.ansi-html .ansi-color-3 { color: #e9e947; }
|
41
|
-
.ansi-html .ansi-color-4 { color: #49a0dd; }
|
42
|
-
.ansi-html .ansi-color-5 { color: #8d7eeb; }
|
43
|
-
.ansi-html .ansi-color-6 { color: #2eecff; }
|
44
|
-
.ansi-html .ansi-color-7 { color: #ffffff; }
|
45
|
-
.ansi-html .ansi-color-9 { color: #606060; }
|
46
|
-
.ansi-html .ansi-color-reset { color: #dddddd; }
|
47
|
-
|
48
|
-
.highlight table td { padding: 5px; }
|
49
|
-
.highlight table pre { margin: 0; }
|
50
|
-
.highlight, .highlight .w {
|
51
|
-
color: #24292f;
|
52
|
-
background-color: #f6f8fa;
|
53
|
-
}
|
54
|
-
.highlight .k, .highlight .kd, .highlight .kn, .highlight .kp, .highlight .kr, .highlight .kt, .highlight .kv {
|
55
|
-
color: #cf222e;
|
56
|
-
}
|
57
|
-
.highlight .gr {
|
58
|
-
color: #f6f8fa;
|
59
|
-
}
|
60
|
-
.highlight .gd {
|
61
|
-
color: #82071e;
|
62
|
-
background-color: #ffebe9;
|
63
|
-
}
|
64
|
-
.highlight .nb {
|
65
|
-
color: #953800;
|
66
|
-
}
|
67
|
-
.highlight .nc {
|
68
|
-
color: #953800;
|
69
|
-
}
|
70
|
-
.highlight .no {
|
71
|
-
color: #953800;
|
72
|
-
}
|
73
|
-
.highlight .nn {
|
74
|
-
color: #953800;
|
75
|
-
}
|
76
|
-
.highlight .sr {
|
77
|
-
color: #116329;
|
78
|
-
}
|
79
|
-
.highlight .na {
|
80
|
-
color: #116329;
|
81
|
-
}
|
82
|
-
.highlight .nt {
|
83
|
-
color: #116329;
|
84
|
-
}
|
85
|
-
.highlight .gi {
|
86
|
-
color: #116329;
|
87
|
-
background-color: #dafbe1;
|
88
|
-
}
|
89
|
-
.highlight .kc {
|
90
|
-
color: #0550ae;
|
91
|
-
}
|
92
|
-
.highlight .l, .highlight .ld, .highlight .m, .highlight .mb, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mx {
|
93
|
-
color: #0550ae;
|
94
|
-
}
|
95
|
-
.highlight .sb {
|
96
|
-
color: #0550ae;
|
97
|
-
}
|
98
|
-
.highlight .bp {
|
99
|
-
color: #0550ae;
|
100
|
-
}
|
101
|
-
.highlight .ne {
|
102
|
-
color: #0550ae;
|
103
|
-
}
|
104
|
-
.highlight .nl {
|
105
|
-
color: #0550ae;
|
106
|
-
}
|
107
|
-
.highlight .py {
|
108
|
-
color: #0550ae;
|
109
|
-
}
|
110
|
-
.highlight .nv, .highlight .vc, .highlight .vg, .highlight .vi, .highlight .vm {
|
111
|
-
color: #0550ae;
|
112
|
-
}
|
113
|
-
.highlight .o, .highlight .ow {
|
114
|
-
color: #0550ae;
|
115
|
-
}
|
116
|
-
.highlight .gh {
|
117
|
-
color: #0550ae;
|
118
|
-
font-weight: bold;
|
119
|
-
}
|
120
|
-
.highlight .gu {
|
121
|
-
color: #0550ae;
|
122
|
-
font-weight: bold;
|
123
|
-
}
|
124
|
-
.highlight .s, .highlight .sa, .highlight .sc, .highlight .dl, .highlight .sd, .highlight .s2, .highlight .se, .highlight .sh, .highlight .sx, .highlight .s1, .highlight .ss {
|
125
|
-
color: #0a3069;
|
126
|
-
}
|
127
|
-
.highlight .nd {
|
128
|
-
color: #8250df;
|
129
|
-
}
|
130
|
-
.highlight .nf, .highlight .fm {
|
131
|
-
color: #8250df;
|
132
|
-
}
|
133
|
-
.highlight .err {
|
134
|
-
color: #f6f8fa;
|
135
|
-
background-color: #82071e;
|
136
|
-
}
|
137
|
-
.highlight .c, .highlight .ch, .highlight .cd, .highlight .cm, .highlight .cp, .highlight .cpf, .highlight .c1, .highlight .cs {
|
138
|
-
color: #6e7781;
|
139
|
-
}
|
140
|
-
.highlight .gl {
|
141
|
-
color: #6e7781;
|
142
|
-
}
|
143
|
-
.highlight .gt {
|
144
|
-
color: #6e7781;
|
145
|
-
}
|
146
|
-
.highlight .ni {
|
147
|
-
color: #24292f;
|
148
|
-
}
|
149
|
-
.highlight .si {
|
150
|
-
color: #24292f;
|
151
|
-
}
|
152
|
-
.highlight .ge {
|
153
|
-
color: #24292f;
|
154
|
-
font-style: italic;
|
155
|
-
}
|
156
|
-
.highlight .gs {
|
157
|
-
color: #24292f;
|
158
|
-
font-weight: bold;
|
159
|
-
}
|
160
|
-
|
161
|
-
</style>
|
162
|
-
</head>
|
163
|
-
|
164
|
-
<body>
|
165
|
-
<div class="container m-3 p-3">
|
166
|
-
<div class="header p-3 m-3 w-90 text-end">
|
167
|
-
<h1 class="title">paintbrush</h1>
|
168
|
-
<span class="separator border-end pb-2 ms-2 me-2"></span>
|
169
|
-
<span class="version">0.1.0</span>
|
170
|
-
</div>
|
171
|
-
|
172
|
-
<hr/>
|
173
|
-
|
174
|
-
|
175
|
-
<div class="row">
|
176
|
-
<div class="col-auto page-tree fs-6 mt-1 ms-3 me-3">
|
177
|
-
|
178
|
-
<li>
|
179
|
-
|
180
|
-
<a href='/home/bob/dev/paintbrush/rspec-documentation/bundle/introduction.html'>Introduction</a>
|
181
|
-
|
182
|
-
</li>
|
183
|
-
|
184
|
-
<ul>
|
185
|
-
|
186
|
-
</ul>
|
187
|
-
|
188
|
-
</div>
|
189
|
-
|
190
|
-
<div class="col">
|
191
|
-
<h1 id="paintbrush">Paintbrush</h1>
|
192
|
-
|
193
|
-
<p>Simple and concise string colorization for <em>Ruby</em> without overloading <code>String</code> methods or requiring verbose class/method invocation.</p>
|
194
|
-
|
195
|
-
<p><em>Paintbrush</em> has zero dependencies and does not pollute any namespaces or objects outside of the <code>#paintbrush</code> method wherever you include the <code>Paintbrush</code> module.</p>
|
196
|
-
|
197
|
-
<p>Nesting is supported, allowing you to use multiple colors within the same string. The previous color is automatically restored.</p>
|
198
|
-
|
199
|
-
<div location="9"><button type="button" class="btn btn-primary float-end" data-bs-toggle="modal" data-bs-target="#modal-15cae418-087d-45aa-b936-ea2c34033c01-side-by-side"> View Side-by-side </button> <div class="modal fade" id="modal-15cae418-087d-45aa-b936-ea2c34033c01-side-by-side" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
|
200
|
-
<div class="modal-dialog modal-xl">
|
201
|
-
<div class="modal-content">
|
202
|
-
<div class="modal-header">
|
203
|
-
<h5 class="modal-title" id="modal-15cae418-087d-45aa-b936-ea2c34033c01-side-by-side-label">Side-by-side view</h5>
|
204
|
-
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
205
|
-
</div>
|
206
|
-
<div class="modal-body">
|
207
|
-
<div class="container p-3">
|
208
|
-
<div class="row border">
|
209
|
-
<div class="col border">
|
210
|
-
<div class="p-3 mb-5 code highlight">
|
211
|
-
<span class="nb">require</span> <span class="s1">'paintbrush'</span><br /><br /><span class="kp">extend</span> <span class="no">Paintbrush</span><br /><br /><span class="n">output</span> <span class="o">=</span> <span class="n">paintbrush</span> <span class="p">{</span> <span class="n">purple</span> <span class="s2">"You used </span><span class="si">#{</span><span class="n">green</span> <span class="s1">'four'</span><span class="si">}</span><span class="s2"> </span><span class="si">#{</span><span class="n">blue</span> <span class="s2">"(</span><span class="si">#{</span><span class="n">cyan</span> <span class="s1">'4'</span><span class="si">}</span><span class="s2">)"</span><span class="si">}</span><span class="s2"> </span><span class="si">#{</span><span class="n">yellow</span> <span class="s1">'colors'</span><span class="si">}</span><span class="s2"> today!"</span> <span class="p">}</span><br /><span class="n">it_documents</span> <span class="n">output</span> <span class="k">do</span><br /> <span class="n">expect</span><span class="p">(</span><span class="n">output</span><span class="p">).</span><span class="nf">to</span> <span class="n">eql</span> <span class="s2">"</span><span class="se">\e</span><span class="s2">[35mYou used </span><span class="se">\e</span><span class="s2">[32mfour</span><span class="se">\e</span><span class="s2">[0m</span><span class="se">\e</span><span class="s2">[35m "</span> <span class="p">\</span><br /> <span class="s2">"</span><span class="se">\e</span><span class="s2">[34m(</span><span class="se">\e</span><span class="s2">[36m4</span><span class="se">\e</span><span class="s2">[0m</span><span class="se">\e</span><span class="s2">[34m)</span><span class="se">\e</span><span class="s2">[0m</span><span class="se">\e</span><span class="s2">[35m "</span> <span class="p">\</span><br /> <span class="s2">"</span><span class="se">\e</span><span class="s2">[33mcolors</span><span class="se">\e</span><span class="s2">[0m</span><span class="se">\e</span><span class="s2">[35m today!</span><span class="se">\e</span><span class="s2">[0m</span><span class="se">\e</span><span class="s2">[0m"</span><br /><span class="k">end</span><br />
|
212
|
-
</div>
|
213
|
-
</div>
|
214
|
-
<div class="col border">
|
215
|
-
<div class="p-3 mb-5 code highlight">
|
216
|
-
<div class="ansi-html border m-1 p-4">
|
217
|
-
<span></span><span class="ansi-color-5">You used </span><span class="ansi-color-2">four</span><span class="ansi-color-reset"></span><span class="ansi-color-5"> </span><span class="ansi-color-4">(</span><span class="ansi-color-6">4</span><span class="ansi-color-reset"></span><span class="ansi-color-4">)</span><span class="ansi-color-reset"></span><span class="ansi-color-5"> </span><span class="ansi-color-3">colors</span><span class="ansi-color-reset"></span><span class="ansi-color-5"> today!</span><span class="ansi-color-reset"></span><span class="ansi-color-reset"></span>
|
218
|
-
</div>
|
219
|
-
</div>
|
220
|
-
</div>
|
221
|
-
</div>
|
222
|
-
</div>
|
223
|
-
</div>
|
224
|
-
<div class="modal-footer">
|
225
|
-
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
226
|
-
</div>
|
227
|
-
</div>
|
228
|
-
</div>
|
229
|
-
</div>
|
230
|
-
<ul class="nav nav-tabs" id="html-tabs-15cae418-087d-45aa-b936-ea2c34033c01" role="tablist">
|
231
|
-
<li class="nav-item" role="presentation"><button class="nav-link active" id="code-source-15cae418-087d-45aa-b936-ea2c34033c01-tab" data-bs-toggle="tab" data-bs-target="#code-source-15cae418-087d-45aa-b936-ea2c34033c01" type="button" role="tab" aria-controls="code-source" aria-selected="true">Code</button></li>
|
232
|
-
<li class="nav-item" role="presentation"><button class="nav-link" id="rendered-15cae418-087d-45aa-b936-ea2c34033c01-tab" data-bs-toggle="tab" data-bs-target="#rendered-15cae418-087d-45aa-b936-ea2c34033c01" type="button" role="tab" aria-controls="rendered" aria-selected="false">Output</button></li>
|
233
|
-
</ul>
|
234
|
-
<div class="tab-content" id="html-tab-content-15cae418-087d-45aa-b936-ea2c34033c01">
|
235
|
-
<div class="tab-pane fade show active" id="code-source-15cae418-087d-45aa-b936-ea2c34033c01" role="tabpanel" aria-labelledby="code-source-15cae418-087d-45aa-b936-ea2c34033c01-tab">
|
236
|
-
<div class="p-3 mb-5 code highlight">
|
237
|
-
<span class="nb">require</span> <span class="s1">'paintbrush'</span><br /><br /><span class="kp">extend</span> <span class="no">Paintbrush</span><br /><br /><span class="n">output</span> <span class="o">=</span> <span class="n">paintbrush</span> <span class="p">{</span> <span class="n">purple</span> <span class="s2">"You used </span><span class="si">#{</span><span class="n">green</span> <span class="s1">'four'</span><span class="si">}</span><span class="s2"> </span><span class="si">#{</span><span class="n">blue</span> <span class="s2">"(</span><span class="si">#{</span><span class="n">cyan</span> <span class="s1">'4'</span><span class="si">}</span><span class="s2">)"</span><span class="si">}</span><span class="s2"> </span><span class="si">#{</span><span class="n">yellow</span> <span class="s1">'colors'</span><span class="si">}</span><span class="s2"> today!"</span> <span class="p">}</span><br /><span class="n">it_documents</span> <span class="n">output</span> <span class="k">do</span><br /> <span class="n">expect</span><span class="p">(</span><span class="n">output</span><span class="p">).</span><span class="nf">to</span> <span class="n">eql</span> <span class="s2">"</span><span class="se">\e</span><span class="s2">[35mYou used </span><span class="se">\e</span><span class="s2">[32mfour</span><span class="se">\e</span><span class="s2">[0m</span><span class="se">\e</span><span class="s2">[35m "</span> <span class="p">\</span><br /> <span class="s2">"</span><span class="se">\e</span><span class="s2">[34m(</span><span class="se">\e</span><span class="s2">[36m4</span><span class="se">\e</span><span class="s2">[0m</span><span class="se">\e</span><span class="s2">[34m)</span><span class="se">\e</span><span class="s2">[0m</span><span class="se">\e</span><span class="s2">[35m "</span> <span class="p">\</span><br /> <span class="s2">"</span><span class="se">\e</span><span class="s2">[33mcolors</span><span class="se">\e</span><span class="s2">[0m</span><span class="se">\e</span><span class="s2">[35m today!</span><span class="se">\e</span><span class="s2">[0m</span><span class="se">\e</span><span class="s2">[0m"</span><br /><span class="k">end</span><br />
|
238
|
-
</div>
|
239
|
-
</div>
|
240
|
-
<div class="tab-pane fade" id="rendered-15cae418-087d-45aa-b936-ea2c34033c01" role="tabpanel" aria-labelledby="rendered-15cae418-087d-45aa-b936-ea2c34033c01-tab">
|
241
|
-
<div class="p-3 mb-5 code highlight">
|
242
|
-
<div class="ansi-html border m-1 p-4">
|
243
|
-
<span></span><span class="ansi-color-5">You used </span><span class="ansi-color-2">four</span><span class="ansi-color-reset"></span><span class="ansi-color-5"> </span><span class="ansi-color-4">(</span><span class="ansi-color-6">4</span><span class="ansi-color-reset"></span><span class="ansi-color-4">)</span><span class="ansi-color-reset"></span><span class="ansi-color-5"> </span><span class="ansi-color-3">colors</span><span class="ansi-color-reset"></span><span class="ansi-color-5"> today!</span><span class="ansi-color-reset"></span><span class="ansi-color-reset"></span>
|
244
|
-
</div>
|
245
|
-
</div>
|
246
|
-
</div>
|
247
|
-
</div>
|
248
|
-
</div>
|
249
|
-
|
250
|
-
<div location="22"><button type="button" class="btn btn-primary float-end" data-bs-toggle="modal" data-bs-target="#modal-c3e2bbb8-9a13-4400-93a1-0e6c9847cba0-side-by-side"> View Side-by-side </button> <div class="modal fade" id="modal-c3e2bbb8-9a13-4400-93a1-0e6c9847cba0-side-by-side" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
|
251
|
-
<div class="modal-dialog modal-xl">
|
252
|
-
<div class="modal-content">
|
253
|
-
<div class="modal-header">
|
254
|
-
<h5 class="modal-title" id="modal-c3e2bbb8-9a13-4400-93a1-0e6c9847cba0-side-by-side-label">Side-by-side view</h5>
|
255
|
-
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
256
|
-
</div>
|
257
|
-
<div class="modal-body">
|
258
|
-
<div class="container p-3">
|
259
|
-
<div class="row border">
|
260
|
-
<div class="col border">
|
261
|
-
<div class="p-3 mb-5 code highlight">
|
262
|
-
<span class="nb">require</span> <span class="s1">'paintbrush'</span><br /><br /><span class="kp">extend</span> <span class="no">Paintbrush</span><br /><br /><span class="n">output</span> <span class="o">=</span> <span class="n">paintbrush</span> <span class="k">do</span><br /> <span class="s2">"</span><span class="si">#{</span><span class="n">blue</span> <span class="s1">'foo'</span><span class="si">}</span><span class="s2"> </span><span class="si">#{</span><span class="n">green</span> <span class="s2">"bar </span><span class="si">#{</span><span class="n">cyan</span> <span class="sx">%w[foo bar baz]</span><span class="p">.</span><span class="nf">join</span><span class="p">(</span><span class="s1">', '</span><span class="p">)</span><span class="si">}</span><span class="s2"> with </span><span class="si">#{</span><span class="n">cyan</span> <span class="s1">'qux'</span><span class="si">}</span><span class="s2"> and quux"</span><span class="si">}</span><span class="s2"> and corge"</span><br /><span class="k">end</span><br /><br /><span class="n">it_documents</span> <span class="n">output</span> <span class="k">do</span><br /> <span class="n">expect</span><span class="p">(</span><span class="n">output</span><span class="p">).</span><span class="nf">to</span> <span class="n">eql</span> <span class="s2">"</span><span class="se">\e</span><span class="s2">[34mfoo</span><span class="se">\e</span><span class="s2">[0m</span><span class="se">\e</span><span class="s2">[0m </span><span class="se">\e</span><span class="s2">[32mbar </span><span class="se">\e</span><span class="s2">[36mfoo, bar, baz"</span> <span class="p">\</span><br /> <span class="s2">"</span><span class="se">\e</span><span class="s2">[0m</span><span class="se">\e</span><span class="s2">[32m with </span><span class="se">\e</span><span class="s2">[36mqux</span><span class="se">\e</span><span class="s2">[0m</span><span class="se">\e</span><span class="s2">[32m "</span><span class="p">\</span><br /> <span class="s2">"and quux</span><span class="se">\e</span><span class="s2">[0m</span><span class="se">\e</span><span class="s2">[0m and corge"</span><br /><span class="k">end</span><br />
|
263
|
-
</div>
|
264
|
-
</div>
|
265
|
-
<div class="col border">
|
266
|
-
<div class="p-3 mb-5 code highlight">
|
267
|
-
<div class="ansi-html border m-1 p-4">
|
268
|
-
<span></span><span class="ansi-color-4">foo</span><span class="ansi-color-reset"></span><span class="ansi-color-reset"> </span><span class="ansi-color-2">bar </span><span class="ansi-color-6">foo, bar, baz</span><span class="ansi-color-reset"></span><span class="ansi-color-2"> with </span><span class="ansi-color-6">qux</span><span class="ansi-color-reset"></span><span class="ansi-color-2"> and quux</span><span class="ansi-color-reset"></span><span class="ansi-color-reset"> and corge</span>
|
269
|
-
</div>
|
270
|
-
</div>
|
271
|
-
</div>
|
272
|
-
</div>
|
273
|
-
</div>
|
274
|
-
</div>
|
275
|
-
<div class="modal-footer">
|
276
|
-
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
277
|
-
</div>
|
278
|
-
</div>
|
279
|
-
</div>
|
280
|
-
</div>
|
281
|
-
<ul class="nav nav-tabs" id="html-tabs-c3e2bbb8-9a13-4400-93a1-0e6c9847cba0" role="tablist">
|
282
|
-
<li class="nav-item" role="presentation"><button class="nav-link active" id="code-source-c3e2bbb8-9a13-4400-93a1-0e6c9847cba0-tab" data-bs-toggle="tab" data-bs-target="#code-source-c3e2bbb8-9a13-4400-93a1-0e6c9847cba0" type="button" role="tab" aria-controls="code-source" aria-selected="true">Code</button></li>
|
283
|
-
<li class="nav-item" role="presentation"><button class="nav-link" id="rendered-c3e2bbb8-9a13-4400-93a1-0e6c9847cba0-tab" data-bs-toggle="tab" data-bs-target="#rendered-c3e2bbb8-9a13-4400-93a1-0e6c9847cba0" type="button" role="tab" aria-controls="rendered" aria-selected="false">Output</button></li>
|
284
|
-
</ul>
|
285
|
-
<div class="tab-content" id="html-tab-content-c3e2bbb8-9a13-4400-93a1-0e6c9847cba0">
|
286
|
-
<div class="tab-pane fade show active" id="code-source-c3e2bbb8-9a13-4400-93a1-0e6c9847cba0" role="tabpanel" aria-labelledby="code-source-c3e2bbb8-9a13-4400-93a1-0e6c9847cba0-tab">
|
287
|
-
<div class="p-3 mb-5 code highlight">
|
288
|
-
<span class="nb">require</span> <span class="s1">'paintbrush'</span><br /><br /><span class="kp">extend</span> <span class="no">Paintbrush</span><br /><br /><span class="n">output</span> <span class="o">=</span> <span class="n">paintbrush</span> <span class="k">do</span><br /> <span class="s2">"</span><span class="si">#{</span><span class="n">blue</span> <span class="s1">'foo'</span><span class="si">}</span><span class="s2"> </span><span class="si">#{</span><span class="n">green</span> <span class="s2">"bar </span><span class="si">#{</span><span class="n">cyan</span> <span class="sx">%w[foo bar baz]</span><span class="p">.</span><span class="nf">join</span><span class="p">(</span><span class="s1">', '</span><span class="p">)</span><span class="si">}</span><span class="s2"> with </span><span class="si">#{</span><span class="n">cyan</span> <span class="s1">'qux'</span><span class="si">}</span><span class="s2"> and quux"</span><span class="si">}</span><span class="s2"> and corge"</span><br /><span class="k">end</span><br /><br /><span class="n">it_documents</span> <span class="n">output</span> <span class="k">do</span><br /> <span class="n">expect</span><span class="p">(</span><span class="n">output</span><span class="p">).</span><span class="nf">to</span> <span class="n">eql</span> <span class="s2">"</span><span class="se">\e</span><span class="s2">[34mfoo</span><span class="se">\e</span><span class="s2">[0m</span><span class="se">\e</span><span class="s2">[0m </span><span class="se">\e</span><span class="s2">[32mbar </span><span class="se">\e</span><span class="s2">[36mfoo, bar, baz"</span> <span class="p">\</span><br /> <span class="s2">"</span><span class="se">\e</span><span class="s2">[0m</span><span class="se">\e</span><span class="s2">[32m with </span><span class="se">\e</span><span class="s2">[36mqux</span><span class="se">\e</span><span class="s2">[0m</span><span class="se">\e</span><span class="s2">[32m "</span><span class="p">\</span><br /> <span class="s2">"and quux</span><span class="se">\e</span><span class="s2">[0m</span><span class="se">\e</span><span class="s2">[0m and corge"</span><br /><span class="k">end</span><br />
|
289
|
-
</div>
|
290
|
-
</div>
|
291
|
-
<div class="tab-pane fade" id="rendered-c3e2bbb8-9a13-4400-93a1-0e6c9847cba0" role="tabpanel" aria-labelledby="rendered-c3e2bbb8-9a13-4400-93a1-0e6c9847cba0-tab">
|
292
|
-
<div class="p-3 mb-5 code highlight">
|
293
|
-
<div class="ansi-html border m-1 p-4">
|
294
|
-
<span></span><span class="ansi-color-4">foo</span><span class="ansi-color-reset"></span><span class="ansi-color-reset"> </span><span class="ansi-color-2">bar </span><span class="ansi-color-6">foo, bar, baz</span><span class="ansi-color-reset"></span><span class="ansi-color-2"> with </span><span class="ansi-color-6">qux</span><span class="ansi-color-reset"></span><span class="ansi-color-2"> and quux</span><span class="ansi-color-reset"></span><span class="ansi-color-reset"> and corge</span>
|
295
|
-
</div>
|
296
|
-
</div>
|
297
|
-
</div>
|
298
|
-
</div>
|
299
|
-
</div>
|
300
|
-
|
301
|
-
</div>
|
302
|
-
</div>
|
303
|
-
<hr/>
|
304
|
-
|
305
|
-
</div>
|
306
|
-
|
307
|
-
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.2.3/js/bootstrap.bundle.min.js"
|
308
|
-
integrity="sha512-i9cEfJwUwViEPFKdC1enz4ZRGBj8YQo6QByFTF92YXHi7waCqyexvRD75S5NVTsSiTv7rKWqG9Y5eFxmRsOn0A=="
|
309
|
-
crossorigin="anonymous"
|
310
|
-
referrerpolicy="no-referrer"></script>
|
311
|
-
</body>
|
312
|
-
</html>
|