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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/lib/eskimo.rb +2 -29
  3. data/lib/eskimo/version.rb +1 -1
  4. metadata +16 -106
  5. data/lib/eskimo/component.rb +0 -37
  6. data/lib/eskimo/components/did_you_mean.rb +0 -34
  7. data/lib/eskimo/components/either.rb +0 -30
  8. data/lib/eskimo/components/gutter.rb +0 -33
  9. data/lib/eskimo/components/highlight.rb +0 -31
  10. data/lib/eskimo/components/highlight_column.rb +0 -61
  11. data/lib/eskimo/components/indent.rb +0 -25
  12. data/lib/eskimo/components/line_break.rb +0 -18
  13. data/lib/eskimo/components/soft_break.rb +0 -16
  14. data/lib/eskimo/components/spacer.rb +0 -33
  15. data/lib/eskimo/components/squeeze.rb +0 -43
  16. data/lib/eskimo/components/strip.rb +0 -15
  17. data/lib/eskimo/components/strip_left.rb +0 -15
  18. data/lib/eskimo/components/strip_right.rb +0 -15
  19. data/lib/eskimo/components/style.rb +0 -25
  20. data/lib/eskimo/components/truncate.rb +0 -31
  21. data/lib/eskimo/components/truncate_rear.rb +0 -25
  22. data/lib/eskimo/components/wrap.rb +0 -26
  23. data/lib/eskimo/constants.rb +0 -7
  24. data/lib/eskimo/renderer.rb +0 -46
  25. data/spec/component_spec.rb +0 -13
  26. data/spec/components/did_you_mean_spec.rb +0 -21
  27. data/spec/components/either_spec.rb +0 -21
  28. data/spec/components/gutter_spec.rb +0 -25
  29. data/spec/components/highlight_column_spec.rb +0 -63
  30. data/spec/components/highlight_spec.rb +0 -25
  31. data/spec/components/indent_spec.rb +0 -15
  32. data/spec/components/line_break_spec.rb +0 -17
  33. data/spec/components/soft_break_spec.rb +0 -17
  34. data/spec/components/spacer_spec.rb +0 -42
  35. data/spec/components/squeeze_spec.rb +0 -61
  36. data/spec/components/strip_left_spec.rb +0 -15
  37. data/spec/components/strip_right_spec.rb +0 -15
  38. data/spec/components/strip_spec.rb +0 -15
  39. data/spec/components/style_spec.rb +0 -25
  40. data/spec/components/truncate_rear_spec.rb +0 -35
  41. data/spec/components/truncate_spec.rb +0 -35
  42. data/spec/components/wrap_spec.rb +0 -15
  43. data/spec/renderer_spec.rb +0 -62
  44. data/spec/spec_helper.rb +0 -42
  45. data/spec/support/component_suite.rb +0 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7d629a2f286509a9570b4c8ec88f6d66e9847b22b72819cbb26adf6a630b2d2f
4
- data.tar.gz: d0c95754c2fd8ef5f1da4eef9cb6414cd39dfd6aa84106ccbd6f97ada48ffdb4
3
+ metadata.gz: 63db1249016831d72313af0aefc2649668c5ac0d770e24d5631104128e2c0f7e
4
+ data.tar.gz: 14029a203ed7add511824bcbd7292fa21d2ff866974681bd3b9b3af25de9d8f3
5
5
  SHA512:
6
- metadata.gz: 9240085b1d7706cefb64ec44554c200c3332cf4c02564ca32a3f76d2c99e6cc05590f2808c81e2c0741b69e09d3b33d5294ade803dcb3c459dd493f4c968a8cb
7
- data.tar.gz: ca2e5206b063d907d55432ba5549aeaba4841750ce1d34fa638d0fb490cb96b72ab7481e5c5436375865fa5afc030b3729b4e5f644928e0f4a70bb36f30da18d
6
+ metadata.gz: 4046ddc0ddd132b3b9d27e896006191eb3aa6f007d31358ee0c78bcd6dbffe62b56b1a5e227031cf537dfc3862d82e4d3d2dc3344246ef65eb71e312021ca973
7
+ data.tar.gz: a4e31cbdc4a850ae81c3e23c7db6c8ccca07ddd768715a3e74349630748b19ef43f99b63fcb107ad1d7e3eda85e69e0c987a189130cd2abcd0a04e7867807489
data/lib/eskimo.rb CHANGED
@@ -1,29 +1,2 @@
1
- require 'did_you_mean'
2
- require 'pastel'
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'
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Eskimo
4
- VERSION = '2.2.0'
4
+ VERSION = '3.0.0.pre.1'
5
5
  end
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: 2.2.0
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-02-26 00:00:00.000000000 Z
11
+ date: 2019-04-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: did_you_mean
14
+ name: eskimo-core
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: '1.3'
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: '1.3'
26
+ version: 3.0.0
27
27
  - !ruby/object:Gem::Dependency
28
- name: pastel
28
+ name: eskimo-ascii
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: '0.7'
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: '0.1'
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: 2.5.1
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: '0'
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: []
@@ -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