eskimo 2.2.0 → 3.0.0.pre.1

Sign up to get free protection for your applications and to get access to all the features.
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