eskimo 2.2.0 → 3.0.0.pre.1
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/lib/eskimo.rb +2 -29
- data/lib/eskimo/version.rb +1 -1
- metadata +16 -106
- data/lib/eskimo/component.rb +0 -37
- data/lib/eskimo/components/did_you_mean.rb +0 -34
- data/lib/eskimo/components/either.rb +0 -30
- data/lib/eskimo/components/gutter.rb +0 -33
- data/lib/eskimo/components/highlight.rb +0 -31
- data/lib/eskimo/components/highlight_column.rb +0 -61
- data/lib/eskimo/components/indent.rb +0 -25
- data/lib/eskimo/components/line_break.rb +0 -18
- data/lib/eskimo/components/soft_break.rb +0 -16
- data/lib/eskimo/components/spacer.rb +0 -33
- data/lib/eskimo/components/squeeze.rb +0 -43
- data/lib/eskimo/components/strip.rb +0 -15
- data/lib/eskimo/components/strip_left.rb +0 -15
- data/lib/eskimo/components/strip_right.rb +0 -15
- data/lib/eskimo/components/style.rb +0 -25
- data/lib/eskimo/components/truncate.rb +0 -31
- data/lib/eskimo/components/truncate_rear.rb +0 -25
- data/lib/eskimo/components/wrap.rb +0 -26
- data/lib/eskimo/constants.rb +0 -7
- data/lib/eskimo/renderer.rb +0 -46
- data/spec/component_spec.rb +0 -13
- data/spec/components/did_you_mean_spec.rb +0 -21
- data/spec/components/either_spec.rb +0 -21
- data/spec/components/gutter_spec.rb +0 -25
- data/spec/components/highlight_column_spec.rb +0 -63
- data/spec/components/highlight_spec.rb +0 -25
- data/spec/components/indent_spec.rb +0 -15
- data/spec/components/line_break_spec.rb +0 -17
- data/spec/components/soft_break_spec.rb +0 -17
- data/spec/components/spacer_spec.rb +0 -42
- data/spec/components/squeeze_spec.rb +0 -61
- data/spec/components/strip_left_spec.rb +0 -15
- data/spec/components/strip_right_spec.rb +0 -15
- data/spec/components/strip_spec.rb +0 -15
- data/spec/components/style_spec.rb +0 -25
- data/spec/components/truncate_rear_spec.rb +0 -35
- data/spec/components/truncate_spec.rb +0 -35
- data/spec/components/wrap_spec.rb +0 -15
- data/spec/renderer_spec.rb +0 -62
- data/spec/spec_helper.rb +0 -42
- data/spec/support/component_suite.rb +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 63db1249016831d72313af0aefc2649668c5ac0d770e24d5631104128e2c0f7e
|
4
|
+
data.tar.gz: 14029a203ed7add511824bcbd7292fa21d2ff866974681bd3b9b3af25de9d8f3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4046ddc0ddd132b3b9d27e896006191eb3aa6f007d31358ee0c78bcd6dbffe62b56b1a5e227031cf537dfc3862d82e4d3d2dc3344246ef65eb71e312021ca973
|
7
|
+
data.tar.gz: a4e31cbdc4a850ae81c3e23c7db6c8ccca07ddd768715a3e74349630748b19ef43f99b63fcb107ad1d7e3eda85e69e0c987a189130cd2abcd0a04e7867807489
|
data/lib/eskimo.rb
CHANGED
@@ -1,29 +1,2 @@
|
|
1
|
-
require '
|
2
|
-
require '
|
3
|
-
require 'strings'
|
4
|
-
require 'tty-screen'
|
5
|
-
|
6
|
-
require 'eskimo/version'
|
7
|
-
|
8
|
-
require 'eskimo/constants'
|
9
|
-
|
10
|
-
require 'eskimo/component'
|
11
|
-
require 'eskimo/renderer'
|
12
|
-
|
13
|
-
require 'eskimo/components/did_you_mean'
|
14
|
-
require 'eskimo/components/either'
|
15
|
-
require 'eskimo/components/gutter'
|
16
|
-
require 'eskimo/components/highlight'
|
17
|
-
require 'eskimo/components/highlight_column'
|
18
|
-
require 'eskimo/components/indent'
|
19
|
-
require 'eskimo/components/line_break'
|
20
|
-
require 'eskimo/components/soft_break'
|
21
|
-
require 'eskimo/components/spacer'
|
22
|
-
require 'eskimo/components/squeeze'
|
23
|
-
require 'eskimo/components/strip'
|
24
|
-
require 'eskimo/components/strip_left'
|
25
|
-
require 'eskimo/components/strip_right'
|
26
|
-
require 'eskimo/components/style'
|
27
|
-
require 'eskimo/components/truncate'
|
28
|
-
require 'eskimo/components/truncate_rear'
|
29
|
-
require 'eskimo/components/wrap'
|
1
|
+
require 'eskimo/core'
|
2
|
+
require 'eskimo/ascii'
|
data/lib/eskimo/version.rb
CHANGED
metadata
CHANGED
@@ -1,71 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eskimo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0.pre.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ahmad Amireh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-04-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: eskimo-core
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 3.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 3.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: eskimo-ascii
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 3.0.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0.7'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: strings
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0.1'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
38
|
+
- - '='
|
53
39
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: tty-screen
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0.6'
|
62
|
-
type: :runtime
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0.6'
|
40
|
+
version: 3.0.0
|
69
41
|
- !ruby/object:Gem::Dependency
|
70
42
|
name: rspec
|
71
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -101,48 +73,7 @@ extensions: []
|
|
101
73
|
extra_rdoc_files: []
|
102
74
|
files:
|
103
75
|
- lib/eskimo.rb
|
104
|
-
- lib/eskimo/component.rb
|
105
|
-
- lib/eskimo/components/did_you_mean.rb
|
106
|
-
- lib/eskimo/components/either.rb
|
107
|
-
- lib/eskimo/components/gutter.rb
|
108
|
-
- lib/eskimo/components/highlight.rb
|
109
|
-
- lib/eskimo/components/highlight_column.rb
|
110
|
-
- lib/eskimo/components/indent.rb
|
111
|
-
- lib/eskimo/components/line_break.rb
|
112
|
-
- lib/eskimo/components/soft_break.rb
|
113
|
-
- lib/eskimo/components/spacer.rb
|
114
|
-
- lib/eskimo/components/squeeze.rb
|
115
|
-
- lib/eskimo/components/strip.rb
|
116
|
-
- lib/eskimo/components/strip_left.rb
|
117
|
-
- lib/eskimo/components/strip_right.rb
|
118
|
-
- lib/eskimo/components/style.rb
|
119
|
-
- lib/eskimo/components/truncate.rb
|
120
|
-
- lib/eskimo/components/truncate_rear.rb
|
121
|
-
- lib/eskimo/components/wrap.rb
|
122
|
-
- lib/eskimo/constants.rb
|
123
|
-
- lib/eskimo/renderer.rb
|
124
76
|
- lib/eskimo/version.rb
|
125
|
-
- spec/component_spec.rb
|
126
|
-
- spec/components/did_you_mean_spec.rb
|
127
|
-
- spec/components/either_spec.rb
|
128
|
-
- spec/components/gutter_spec.rb
|
129
|
-
- spec/components/highlight_column_spec.rb
|
130
|
-
- spec/components/highlight_spec.rb
|
131
|
-
- spec/components/indent_spec.rb
|
132
|
-
- spec/components/line_break_spec.rb
|
133
|
-
- spec/components/soft_break_spec.rb
|
134
|
-
- spec/components/spacer_spec.rb
|
135
|
-
- spec/components/squeeze_spec.rb
|
136
|
-
- spec/components/strip_left_spec.rb
|
137
|
-
- spec/components/strip_right_spec.rb
|
138
|
-
- spec/components/strip_spec.rb
|
139
|
-
- spec/components/style_spec.rb
|
140
|
-
- spec/components/truncate_rear_spec.rb
|
141
|
-
- spec/components/truncate_spec.rb
|
142
|
-
- spec/components/wrap_spec.rb
|
143
|
-
- spec/renderer_spec.rb
|
144
|
-
- spec/spec_helper.rb
|
145
|
-
- spec/support/component_suite.rb
|
146
77
|
homepage: https://github.com/amireh/eskimo
|
147
78
|
licenses:
|
148
79
|
- MIT
|
@@ -155,37 +86,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
155
86
|
requirements:
|
156
87
|
- - ">="
|
157
88
|
- !ruby/object:Gem::Version
|
158
|
-
version:
|
89
|
+
version: '0'
|
159
90
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
160
91
|
requirements:
|
161
|
-
- - "
|
92
|
+
- - ">"
|
162
93
|
- !ruby/object:Gem::Version
|
163
|
-
version:
|
94
|
+
version: 1.3.1
|
164
95
|
requirements: []
|
165
96
|
rubyforge_project:
|
166
97
|
rubygems_version: 2.7.6
|
167
98
|
signing_key:
|
168
99
|
specification_version: 4
|
169
100
|
summary: Declarative text formatting
|
170
|
-
test_files:
|
171
|
-
- spec/component_spec.rb
|
172
|
-
- spec/renderer_spec.rb
|
173
|
-
- spec/components/style_spec.rb
|
174
|
-
- spec/components/strip_spec.rb
|
175
|
-
- spec/components/gutter_spec.rb
|
176
|
-
- spec/components/truncate_spec.rb
|
177
|
-
- spec/components/line_break_spec.rb
|
178
|
-
- spec/components/squeeze_spec.rb
|
179
|
-
- spec/components/strip_left_spec.rb
|
180
|
-
- spec/components/highlight_spec.rb
|
181
|
-
- spec/components/strip_right_spec.rb
|
182
|
-
- spec/components/highlight_column_spec.rb
|
183
|
-
- spec/components/either_spec.rb
|
184
|
-
- spec/components/truncate_rear_spec.rb
|
185
|
-
- spec/components/did_you_mean_spec.rb
|
186
|
-
- spec/components/wrap_spec.rb
|
187
|
-
- spec/components/spacer_spec.rb
|
188
|
-
- spec/components/indent_spec.rb
|
189
|
-
- spec/components/soft_break_spec.rb
|
190
|
-
- spec/spec_helper.rb
|
191
|
-
- spec/support/component_suite.rb
|
101
|
+
test_files: []
|
data/lib/eskimo/component.rb
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Eskimo
|
4
|
-
# A base component class that renders child components defined in a block into
|
5
|
-
# a String for further formatting.
|
6
|
-
#
|
7
|
-
# class MyComponent < Eskimo::Component
|
8
|
-
# def render(**)
|
9
|
-
# text = super
|
10
|
-
# text.is_a?(String) # => true
|
11
|
-
# end
|
12
|
-
# end
|
13
|
-
#
|
14
|
-
# Use of this class is optional. What's happening under the hood is:
|
15
|
-
#
|
16
|
-
# 1. Component maintains a reference to the Proc passed to {#initialize}. That
|
17
|
-
# Proc can potentially return a list of child components to render.
|
18
|
-
#
|
19
|
-
# 2. {Component#render} (called via "super" from sub-classes) invokes the
|
20
|
-
# `render` prop provided by {Renderer#apply} with the tracked children
|
21
|
-
# which converts them to a String and returns them.
|
22
|
-
class Component
|
23
|
-
def initialize(*, **, &children_gen)
|
24
|
-
@children = children_gen
|
25
|
-
end
|
26
|
-
|
27
|
-
def render(render:, **)
|
28
|
-
render[@children]
|
29
|
-
end
|
30
|
-
|
31
|
-
protected
|
32
|
-
|
33
|
-
def pastel
|
34
|
-
@pastel ||= Pastel.new
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Eskimo
|
4
|
-
module Components
|
5
|
-
# Present the user with the closest possible correction, if any.
|
6
|
-
#
|
7
|
-
# DidYouMean.new(dictionary: [ 'abc', 'bca' ], item: 'abd')
|
8
|
-
# # => "hint: Did you mean? abc"
|
9
|
-
#
|
10
|
-
# DidYouMean.new(dictionary: [ 'abc', 'bca' ], item: 'asdfasdf')
|
11
|
-
# # => ""
|
12
|
-
#
|
13
|
-
# See https://github.com/yuki24/did_you_mean#using-the-didyoumeanspellchecker
|
14
|
-
class DidYouMean < Component
|
15
|
-
attr_reader :corrections, :separator
|
16
|
-
|
17
|
-
def initialize(dictionary:, item:, separator: " or ", &children)
|
18
|
-
@corrections = ::DidYouMean::SpellChecker.new(
|
19
|
-
dictionary: dictionary
|
20
|
-
).correct(item)
|
21
|
-
|
22
|
-
@separator = separator
|
23
|
-
|
24
|
-
super
|
25
|
-
end
|
26
|
-
|
27
|
-
def render(**)
|
28
|
-
if corrections.any?
|
29
|
-
"Did you mean? #{corrections.join(separator)}"
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Eskimo
|
4
|
-
module Components
|
5
|
-
# Render a fallback component in case the first one evaluates to an empty
|
6
|
-
# String.
|
7
|
-
#
|
8
|
-
# Either.new(->(**) { false }, "Fallback here")
|
9
|
-
# # => "Fallback here"
|
10
|
-
#
|
11
|
-
# Either.new(->(**) { "Hi!" }, "Fallback here")
|
12
|
-
# # => "Hi!"
|
13
|
-
#
|
14
|
-
class Either
|
15
|
-
attr_reader :children
|
16
|
-
|
17
|
-
def initialize(primary, fallback)
|
18
|
-
@children = [ primary, fallback ]
|
19
|
-
end
|
20
|
-
|
21
|
-
def render(render:, **)
|
22
|
-
for child in children do
|
23
|
-
rendered = render[child]
|
24
|
-
|
25
|
-
return rendered unless rendered.empty?
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Eskimo
|
4
|
-
module Components
|
5
|
-
# Prepend each line with a character or symbol.
|
6
|
-
#
|
7
|
-
# Gutter.new(char: '| ') do
|
8
|
-
# [ "Hello", "\n", "World!" ]
|
9
|
-
# end
|
10
|
-
# # => "| Hello"
|
11
|
-
# # "| World!"
|
12
|
-
class Gutter < Component
|
13
|
-
attr_reader :char, :spacing
|
14
|
-
|
15
|
-
def initialize(char:, spacing: 0, &children)
|
16
|
-
@char = char
|
17
|
-
@spacing = spacing
|
18
|
-
|
19
|
-
super
|
20
|
-
end
|
21
|
-
|
22
|
-
def render(**)
|
23
|
-
spacer = Array.new(spacing, char)
|
24
|
-
|
25
|
-
[
|
26
|
-
*spacer,
|
27
|
-
super.lines.map { |s| s.prepend(char) }.join,
|
28
|
-
*spacer
|
29
|
-
].join("\n")
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Eskimo
|
4
|
-
module Components
|
5
|
-
# Highlight a substring with ASCII arrows.
|
6
|
-
#
|
7
|
-
# Highlight.new(pattern: /lol/) do
|
8
|
-
# "- include: lol://file.yml"
|
9
|
-
# end
|
10
|
-
# # => "- include: lol://file.yml"
|
11
|
-
# # ^^^
|
12
|
-
#
|
13
|
-
class Highlight < Component
|
14
|
-
attr_reader :pastel, :pattern, :style
|
15
|
-
|
16
|
-
def initialize(pattern:, style: [:red, :bold, :underline], &children)
|
17
|
-
@pastel = Pastel.new
|
18
|
-
@pattern = pattern
|
19
|
-
@style = style
|
20
|
-
|
21
|
-
super(&children)
|
22
|
-
end
|
23
|
-
|
24
|
-
def render(**)
|
25
|
-
super.sub(pattern) do |substring|
|
26
|
-
pastel.decorate(substring, *style)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,61 +0,0 @@
|
|
1
|
-
module Eskimo
|
2
|
-
module Components
|
3
|
-
# Highlight a particular character of a string with an ASCII arrow.
|
4
|
-
#
|
5
|
-
# HighlightColumn.new(line: 0, column: 14) do
|
6
|
-
# "- include: lol://wut.yml"
|
7
|
-
# end
|
8
|
-
# => "- include: lol://wut.yml"
|
9
|
-
# " ^ "
|
10
|
-
# " here "
|
11
|
-
class HighlightColumn < Component
|
12
|
-
def initialize(
|
13
|
-
column:,
|
14
|
-
line:,
|
15
|
-
markers: ['^', 'here'],
|
16
|
-
style: [:bold, :red],
|
17
|
-
&children
|
18
|
-
)
|
19
|
-
pastel = Pastel.new
|
20
|
-
|
21
|
-
@colorize = ->(str) { pastel.decorate(str, *style) }
|
22
|
-
@column = column
|
23
|
-
@line = line
|
24
|
-
@marker_padding = ' ' * @column
|
25
|
-
@markers = markers
|
26
|
-
|
27
|
-
super
|
28
|
-
end
|
29
|
-
|
30
|
-
def render(**)
|
31
|
-
lines = super.lines
|
32
|
-
line = lines[@line]
|
33
|
-
|
34
|
-
unless line.nil? || line[@column].nil?
|
35
|
-
lines[@line] = transform_line!(line, @column, &@colorize)
|
36
|
-
end
|
37
|
-
|
38
|
-
lines.join
|
39
|
-
end
|
40
|
-
|
41
|
-
protected
|
42
|
-
|
43
|
-
def create_markers()
|
44
|
-
buf = ''
|
45
|
-
|
46
|
-
for marker in @markers do
|
47
|
-
buf << @marker_padding + @colorize[marker] + "\n"
|
48
|
-
end
|
49
|
-
|
50
|
-
buf
|
51
|
-
end
|
52
|
-
|
53
|
-
def transform_line!(line, column, &fn)
|
54
|
-
line[column] = fn[line[column]]
|
55
|
-
line << "\n" unless line.end_with?("\n")
|
56
|
-
line << create_markers
|
57
|
-
line
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|