term_color 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +46 -14
  3. data/lib/term_color/rule.rb +67 -5
  4. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d4ce5c2c4c91c5840b4fed9d6147fe77345dd6ea5533f350c0d5f3e3744cea7b
4
- data.tar.gz: 46eb95a0bd5f3a5357900b4e5897b3385e8f1d3fbc8a9a550139f7c4ffdc93a2
3
+ metadata.gz: a5c5c053cd07cea1249b693d74cd9f0bb063b0c2be81e4ca8ee50c1e43789273
4
+ data.tar.gz: 2db955626d5da3fd4d5299a36487c854c8f2386ce0d332589bc73694551cc256
5
5
  SHA512:
6
- metadata.gz: f78fa2b93f8175663f6c6fec99bf696a7c4dc6f8f3579de727b1bfc6d313705572499d2d159b3613539dbac4694e078fd42e8c44f1bcf3592e33d8bdc98bc8e7
7
- data.tar.gz: 9f2b1fdc0ca6afdb631fc38b9ff331cd5f7913b5f354e10c6b75b8a5d34b2e2653e7fa3847d5aadaeba4bf03f2beb67c7e69a5f1fdd9a8dba1fce37ff71214f8
6
+ metadata.gz: 8755f513658b1233352886f93325de9dc84f393f4509cc46b9cd29815ef81a1ed0c59749f2468d89edf5944aa6b763e3d7a5cbb5ca8cfc3b85e79ebb64c164e8
7
+ data.tar.gz: 7d852dc156d2c00483142547cb24add1d252a42b9ad3e994ace9bf72c41da66d95633ed6ae3876e4209a4d7c09c20a560f4a00a776d299324957b9537001d2bd
data/README.md CHANGED
@@ -93,37 +93,71 @@ r = { fg: :red, bg: :blue }
93
93
  r = { after: { reset: :all} }
94
94
  ```
95
95
 
96
- ### Rule Options/Actions
96
+ ## Rule Parts/Actions
97
97
 
98
- #### Colors
98
+ Option parts / actions available to rule definitions.
99
99
 
100
- ##### Attributes
100
+ ### Colors
101
+
102
+ #### Attributes
101
103
 
102
104
  - `fg` - Change foreground color
103
105
  - `bg` - Change background color
104
106
 
105
- ##### Values
107
+ #### Values
108
+
109
+ _If images don't show up, try viewing on [Github](https://github.com/vdtdev/term_color/blob/master/README.md)_
110
+
111
+ ##### Standard Named Colors
112
+
113
+ Color values can be color-name symbols as defined in {TermColor::Rule::Colors Rule::Colors} (`:black, :red, :yellow, :blue, :magenta, :cyan, :white, :bright_black, :bright_red, :bright_yellow, :bright_blue, :bright_magenta, :bright_cyan, :bright_white`)
106
114
 
107
- ###### Standard Named Colors
115
+ ```ruby
116
+ rs = TermColor.create_rule_set({
117
+ named: { fg: :yellow, bg: :blue }
118
+ })
119
+ rs.print "Before {%namedHello!%}\n"
120
+ ```
108
121
 
109
- Color values can be color-name symbols as defined in {TermColor::Rule::Colors} (`:black, :red, :yellow, :blue, :magenta, :cyan, :white`)
122
+ ![](./docs/colors_named.png)
123
+ ![](./file/docs/colors_named.png)
110
124
 
111
- ###### XTerm 256 Color Values
125
+ ##### XTerm 256 Color Values
112
126
 
113
127
  To use XTerm 256 Color Mode values, include the color code integer inside a single item array. (E.g. for code `208`, use `[208]`)
114
128
 
115
- ###### XTerm 16m Color Values
129
+ ```ruby
130
+ rs = TermColor.create_rule_set({
131
+ x256: { fg: [226], bg: [56] }
132
+ })
133
+ rs.print "Before {%x256Hello!%}\n"
134
+ ```
135
+
136
+ ![](./docs/colors_256.png)
137
+ ![](./file/docs/colors_256.png)
138
+
139
+ ##### XTerm 16m Color Values
116
140
 
117
141
  To use XTerm 16m Color Mode RGB colors, include the red, green and blue color values in an ordered array (E.g. for 80 red, 80 green, 255 blue, use `[80,80,255]`)
118
142
 
119
- #### Styles
143
+ ```ruby
144
+ rs = TermColor.create_rule_set({
145
+ x16: { fg: [255,250,11], bg: [15,15,200] }
146
+ })
147
+ rs.print "Before {%x16Hello!%}\n"
148
+ ```
149
+
150
+ ![](./docs/colors_16m.png)
151
+ ![](./file/docs/colors_16m.png)
120
152
 
121
- ##### Actions
153
+ ### Styles
154
+
155
+ #### Actions
122
156
 
123
157
  - `enable` - Style(s) to enable (Can be single item or array)
124
158
  - `disable` - Style(s) to disable (Can be single item or array)
125
159
 
126
- ##### Values
160
+ #### Values
127
161
 
128
162
  (See symbols in {TermColor::Rule::Styles})
129
163
 
@@ -135,7 +169,7 @@ To use XTerm 16m Color Mode RGB colors, include the red, green and blue color va
135
169
  - `:hidden`
136
170
  - `:strikethrough`
137
171
 
138
- #### Reset / Keep
172
+ ### Reset / Keep
139
173
 
140
174
  _(Only valid in `after` section)_
141
175
 
@@ -154,8 +188,6 @@ Quick way of resetting one or more style rules. `reset`/`keep` can be given a si
154
188
  - `:style` - Reset all styling
155
189
  - `:all` - Reset all colors and styling
156
190
 
157
- [If example images are missing, view readme on github](https://github.com/vdtdev/term_color/blob/master/README.md)
158
-
159
191
  ## Examples
160
192
 
161
193
  _If images don't show up, try viewing on [Github](https://github.com/vdtdev/term_color/blob/master/README.md)_
@@ -39,10 +39,18 @@ module TermColor
39
39
  blue: 4,
40
40
  magenta: 5,
41
41
  cyan: 6,
42
- white: 7
42
+ white: 7,
43
+ bright_black: 60,
44
+ bright_red: 61,
45
+ bright_green: 62,
46
+ bright_yellow: 63,
47
+ bright_blue: 64,
48
+ bright_magenta: 65,
49
+ bright_cyan: 66,
50
+ bright_white: 67
43
51
  }.freeze
44
52
 
45
- ##
53
+ ##
46
54
  # Numerical modifiers used with Color Values
47
55
  # to target foreground or background.
48
56
  #
@@ -240,6 +248,30 @@ module TermColor
240
248
  codes = codes.flatten.compact.uniq
241
249
  end
242
250
 
251
+ ##
252
+ # Resolve named color, allowing fg target colors
253
+ # to use names prefixed with `light_` (e.g. `:light_blue`)
254
+ # def resolve_named_color(color, target = :fg)
255
+ # sym = color.to_sym
256
+ # unless target == :fg
257
+ # # strip out any light_ prefix if not targetting :fg
258
+ # sym = (sym.to_s.gsub('light_','')).to_sym
259
+ # end
260
+ # if Colors.has_key?(sym)
261
+ # # Name found, return value + fg target
262
+ # return [Colors[sym].to_i]
263
+ # end
264
+ # pre,name = sym.to_s.split("_")
265
+ # if pre == 'light' && !name.nil? && Colors.has_key?(name.to_sym)
266
+ # # Named color with 'light_' prefix
267
+ # # Return color code along with Proc to format with "1;val"
268
+ # return [Colors[name.to_sym].to_i, Proc.new {|c| "1;#{c}" }]
269
+ # end
270
+
271
+ # # Give back 0 if not resolved
272
+ # return 0
273
+ # end
274
+
243
275
  def resolve_color(color, target = :fg)
244
276
  if color.is_a?(Array)
245
277
  color = color[0..2]
@@ -253,7 +285,7 @@ module TermColor
253
285
  end
254
286
  color = Colors[color.to_sym].to_i
255
287
  end
256
- (color + ColorTargets[target.to_sym].to_i)
288
+ color + ColorTargets[target.to_sym].to_i
257
289
  end
258
290
 
259
291
  def resolve_style(style, state = :enable)
@@ -339,6 +371,15 @@ module TermColor
339
371
  return parts.merge({evaluated: true})
340
372
  end
341
373
 
374
+ ##
375
+ # Normalize a rule's part, making sure all possible keys
376
+ # exist with at least `nil` values, and values that can be arrays
377
+ # are at least empty arrays, or arrays containing singular value
378
+ # @param [Hash] hash Input part to normalize
379
+ # @param [Symbol] part Which part to normalize {TermColor::Rule::PartOps}
380
+ # @param [Boolean] clean If true, strip out all values that are nil
381
+ # or empty arrays (default `false`)
382
+ # @return [Hash] Copy of input hash after normalization is applied
342
383
  def normalize_part(hash,part,clean=false)
343
384
  h = hash.dup
344
385
  PartOps[part].each do |o|
@@ -356,6 +397,17 @@ module TermColor
356
397
  return h
357
398
  end
358
399
 
400
+ ##
401
+ # Combine an 'override' version of a rule's after part with a
402
+ # default 'after' part, resulting in the original default 'after' part
403
+ # with any adjustments needed to apply rules from override
404
+ # @param [Hash] inside 'Inside' part of rule, used to expand
405
+ # `reset: :style` into specific `disable`
406
+ # @param [Hash] override Override version of after to apply to given
407
+ # default
408
+ # @param [Hash] after Default 'after' part to be overridden
409
+ # @return [Hash] Overridden version of after rules
410
+ # @see normalize_part
359
411
  def override_after(inside, override, after)
360
412
  c_ovr = normalize_part(override, :after)
361
413
  c_aft = normalize_part(after, :after)
@@ -414,9 +466,18 @@ module TermColor
414
466
  return normalize_part(result, :after, true)
415
467
  end
416
468
 
469
+ ##
470
+ # Build after rule automatically based on inside portion of
471
+ # rule, treating given existing explict 'after' rules as overrides
472
+ # @param [Hash] inside Inside portion of rule to generate after for
473
+ # @param [Hash] after Explicitly defined after section of source rule,
474
+ # combined with result by treating as overrides
475
+ # @return [Hash] Generated 'after' rules
417
476
  def build_auto_after(inside, after={})
418
477
  c_inside = normalize_part(inside, :inside)
419
- n_after = normalize_part({}, :after)
478
+ # n_after = normalize_part({}, :after)
479
+ # TODO: Test to make sure the below fixed line doesn't break stuff :)
480
+ n_after = normalize_part(after, :after)
420
481
 
421
482
  if c_inside[:enable].length > 0
422
483
  n_after[:reset] += [:style]
@@ -428,7 +489,8 @@ module TermColor
428
489
  end
429
490
  end
430
491
 
431
- override_after(inside, after, n_after)
492
+ # Combine override after section
493
+ rules = override_after(inside, after, n_after)
432
494
  end
433
495
 
434
496
  ##
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: term_color
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wade H.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-20 00:00:00.000000000 Z
11
+ date: 2020-04-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -46,7 +46,7 @@ licenses:
46
46
  - MIT
47
47
  metadata:
48
48
  source_code_uri: https://github.com/vdtdev/term_color
49
- documentation_uri: https://rubydoc.info/gems/term_color/0.1.0
49
+ documentation_uri: https://rubydoc.info/gems/term_color/0.1.1
50
50
  post_install_message:
51
51
  rdoc_options: []
52
52
  require_paths: