lscolors 1.0.1 → 1.0.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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.rdoc +13 -6
  3. data/lib/lscolors.rb +148 -141
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c46cbe7b00077892a8e9717ded9c7854c71be270
4
- data.tar.gz: 344fe45308c87f843867630b6a1104ad857ce5a1
3
+ metadata.gz: ce0d0a9417d7943c4914bb1e0ecf597255a46c74
4
+ data.tar.gz: 78a443cb981cb8a7a8a60f4bdb0c0b9890cee6f3
5
5
  SHA512:
6
- metadata.gz: a9b85772b5b59074333808fded5d851b2cd76dace03cf421c3b59789788b8cbae2361ad1cdc9e00f773ebe0a6964855d7700000882e72cf4c9e8b876a1822f4e
7
- data.tar.gz: 5ad0fb258238e5e79c3d5da023f8284340d1150e828d2d243afdac489b280e42f3b11f96945c1bb911352afc14a06ce9e1039b60dc4cdfbb6317b1c8e5c9e48d
6
+ metadata.gz: 5ffb89026c34dc585094d59b97ccf9a8e2901f0fb1388897b2cf57ee7c6d1f29b8f088e17cec83e635ef2e00dd480cb1ea7fdc6ca78003f9cc0b5120caf85092
7
+ data.tar.gz: 4ae82b94672758012e2806c3747c0a65c34ac54ee6f5a92a5d775931b90edf451db78fc0a941bd9093ea390496d9d56462d6809ef852a0c24f46bba03effd6f9
@@ -3,11 +3,15 @@
3
3
  {<img src="http://inch-ci.org/github/Winterbraid/lscolors_ruby.svg?branch=master" alt="Inline docs" />}[http://inch-ci.org/github/Winterbraid/lscolors_ruby]
4
4
  {<img src="https://codeclimate.com/github/Winterbraid/lscolors_ruby/badges/gpa.svg" />}[https://codeclimate.com/github/Winterbraid/lscolors_ruby]
5
5
 
6
+ Source code:: https://github.com/Winterbraid/lscolors_ruby
7
+ Gem:: https://rubygems.org/gems/lscolors
8
+ Documentation:: http://www.rubydoc.info/gems/lscolors/frames
9
+
6
10
  Allows loading color definitions from JSON, previewing, and printing a
7
11
  +LS_COLORS+ compatible config string.
8
12
 
9
13
  To use the configuration, do the following in your terminal:
10
- export LS_COLORS=`ruby -rlscolors -e 'print LsColors'`
14
+ export LS_COLORS=`ruby -rlscolors -e 'print LsColors::Colors'`
11
15
  You will probably want to add the above line to your shell's +rc+ file.
12
16
 
13
17
  By default, LsColors will try to load a file called +.lscolors_ruby.rc+
@@ -15,24 +19,27 @@ from the user's home directory. That file can also be created by running
15
19
  +LsColors.save+ without any parameters.
16
20
 
17
21
  ==Example use
22
+ require lscolors
23
+
24
+ include LsColors
18
25
 
19
26
  # Output the LS_COLORS configuration string
20
- LsColors.to_s
27
+ Colors.to_s
21
28
 
22
29
  # Preview the current settings
23
- puts LsColors.preview
30
+ puts Colors.preview
24
31
 
25
32
  # Save the settings to a file
26
- LsColors.save 'test.json'
33
+ Colors.save 'test.json'
27
34
 
28
35
  # Display all available colors and their numbers
29
- puts LsColors.test
36
+ puts Colors.test
30
37
 
31
38
  ==Troubleshooting
32
39
 
33
40
  LsColors assumes a 256-color compatible terminal. Use the following code
34
41
  to test your terminal's capability (this can also help you get color numbers):
35
- puts LsColors.test
42
+ puts LsColors::Colors.test
36
43
 
37
44
  If your terminal does not seem to support 256 colors, try adding the following
38
45
  line to your shell's +rc+ file:
@@ -3,7 +3,7 @@ require 'json'
3
3
  # {include:file:README.rdoc}
4
4
  module LsColors
5
5
  # Current software version.
6
- VERSION = '1.0.1'
6
+ VERSION = '1.0.2'
7
7
 
8
8
  # Date of the current version.
9
9
  DATE = '2014-10-30'
@@ -11,142 +11,67 @@ module LsColors
11
11
  # A short description.
12
12
  ABOUT = 'Manipulate LS_COLORS settings.'
13
13
 
14
- # The default configuration file. This will be loaded at startup if present.
15
- RC_FILE = Dir.home << '/.lscolors_ruby.rc'
16
-
17
- # The string that begins a terminal-compatible color definition.
18
- COLOR_HEAD = "\x1b["
19
-
20
- # The prefix for the foreground color (256 colors).
21
- COLOR_FG = '38;5;'
22
-
23
- # The prefix for the background color (256 colors).
24
- COLOR_BG = '48;5;'
25
-
26
- # The string that ends a terminal-compatible color definition.
27
- COLOR_TAIL = 'm'
28
-
29
- # This string resets color and style to default.
30
- COLOR_RESET = "\x1b[0m"
31
-
32
- # The style codes recognized by the terminal.
33
- STYLES = {
34
- bold: '01',
35
- under: '04',
36
- blink: '05',
37
- reverse: '07',
38
- conceal: '08'
39
- }
40
-
41
- # Explanation of system-related file codes, for previewing and learning
42
- # purposes.
43
- CODE_DESCRIPTIONS = {
44
- di: 'directory',
45
- fi: 'file',
46
- ln: 'symlink',
47
- pi: 'fifo',
48
- so: 'socket',
49
- bd: 'block',
50
- or: 'orphan',
51
- mi: 'missing',
52
- ex: 'executable'
53
- }
54
-
55
- # The fallback color sheet.
56
- DEFAULTS = {
57
- system: [
58
- ['di', 33, :bold], ['ln', 45], ['mh', 15, 5],
59
- ['pi', 11, 1], ['so', 13], ['do', 5], ['bd', 11, 232], ['cd', 3, 232],
60
- ['or', 45, 9], ['mi', 15, 232, :blink], ['su', 15, 196],
61
- ['sg', 16, 11], ['ca', 226, 196], ['tw', 16, 10], ['ow', 21, 10],
62
- ['st', 15, 21], ['ex', 35, :bold]
63
- ],
64
- extensions: [
65
- ['sh pl py swf bat exe', 35],
66
- ['rb rbw rdoc gemspec gem', 197],
67
- ['png jpg jpeg gif bmp tiff xcf', 111],
68
- ['mp4 mkv avi ogm mov mpeg flv wmv', 171],
69
- ['mp3 mp2 ogg flac wav wma ape mid midi', 168],
70
- ['gb gba nds 3ds bin iso dat grp pak', 202],
71
- ['rar zip tar gz tgz 7z bz2', 215],
72
- ['txt odt doc docx pdf djvu', 247],
73
- ['bak old log', 241]
74
- ]
75
- }
76
-
77
- class << self
78
- # Loads or initializes settings. The parameter can be either a Hash or a
79
- # String (in the latter case it will be interpreted as the file name of
80
- # a JSON file). If missing, the method will look for a JSON file specified
81
- # by {RC_FILE}, and if absent, the {DEFAULTS} will be loaded.
82
- #
83
- # @param [String, Hash] object
84
- # @return [Hash] the parsed settings.
85
- def load(object = nil)
86
- return @colors = object if object.is_a? Hash
87
-
88
- if object.is_a? String
89
- return @colors = JSON.parse(File.read(object), symbolize_names: true)
90
- elsif File.exist? RC_FILE
91
- return @colors = JSON.parse(File.read(RC_FILE), symbolize_names: true)
92
- end
93
-
94
- @colors = DEFAULTS
95
- end
96
-
97
- # Will preview the current settings as a string of colorized system files
98
- # and extensions. Use +print+ or +puts+ to see the effect (a 256-color
99
- # terminal is required).
100
- #
101
- # @return [String]
102
- def preview
103
- "#{preview_system}\n#{preview_extensions}"
104
- end
105
-
106
- # Save the current settings to a file. Without parameters, {RC_FILE} will be
107
- # created and/or saved. {RC_FILE} will be loaded automatically from now on,
108
- # so it can be modified directly in order to configure the color settings.
109
- #
110
- # @param [String] file the file name to save to.
111
- # @return [0]
112
- def save(file = RC_FILE)
113
- File.write(file, JSON.pretty_generate(@colors))
114
- 0
115
- end
116
-
117
- # Test the terminal color capability.
118
- #
119
- # @return [String]
120
- def test
121
- colors = `tput colors`.to_i
122
- fail "256 colors not supported! (#{colors})" if colors < 256
123
-
124
- "System colors (0-15):\n#{test_system}\n" \
125
- "Color cube (16-231):\n#{test_cube}\n" \
126
- "Grayscale colors (232-255):\n#{test_grayscale}\n"
127
- end
128
-
129
- # Will output the +LS_COLORS+ compatible configuration string.
130
- #
131
- # @return [String]
132
- def to_s
133
- output = 'rs=0:'
134
-
135
- @colors[:system].each do |c|
136
- output << "#{c.first}=#{color_setting(c)}:"
137
- end
138
-
139
- @colors[:extensions].each do |c|
140
- c.first.split.sort.each do |ext|
141
- output << "*.#{ext}=#{color_setting(c)}:"
142
- end
143
- end
144
-
145
- output
146
- end
147
- alias_method :inspect, :to_s
148
-
149
- private
14
+ # Methods and data for manipulating terminal colors.
15
+ module ColorManipulation
16
+ # The string that begins a terminal-compatible color definition.
17
+ COLOR_HEAD = "\x1b["
18
+
19
+ # The prefix for the foreground color (256 colors).
20
+ COLOR_FG = '38;5;'
21
+
22
+ # The prefix for the background color (256 colors).
23
+ COLOR_BG = '48;5;'
24
+
25
+ # The string that ends a terminal-compatible color definition.
26
+ COLOR_TAIL = 'm'
27
+
28
+ # This string resets color and style to default.
29
+ COLOR_RESET = "\x1b[0m"
30
+
31
+ # The style codes recognized by the terminal.
32
+ STYLES = {
33
+ bold: '01',
34
+ under: '04',
35
+ blink: '05',
36
+ reverse: '07',
37
+ conceal: '08'
38
+ }
39
+
40
+ # Explanation of system-related file codes, for previewing and learning
41
+ # purposes.
42
+ CODE_DESCRIPTIONS = {
43
+ di: 'directory',
44
+ fi: 'file',
45
+ ln: 'symlink',
46
+ pi: 'fifo',
47
+ so: 'socket',
48
+ bd: 'block',
49
+ or: 'orphan',
50
+ mi: 'missing',
51
+ ex: 'executable'
52
+ }
53
+
54
+ # The fallback color sheet.
55
+ DEFAULTS = {
56
+ system: [
57
+ ['di', 33, :bold], ['ln', 45], ['mh', 15, 5],
58
+ ['pi', 11, 1], ['so', 13], ['do', 5], ['bd', 11, 232], ['cd', 3, 232],
59
+ ['or', 45, 9], ['mi', 15, 232, :blink], ['su', 15, 196],
60
+ ['sg', 16, 11], ['ca', 226, 196], ['tw', 16, 10], ['ow', 21, 10],
61
+ ['st', 15, 21], ['ex', 35, :bold]
62
+ ],
63
+ extensions: [
64
+ ['sh pl py swf bat exe', 35],
65
+ ['rb rbw rdoc gemspec gem', 197],
66
+ ['png jpg jpeg gif bmp tiff xcf', 111],
67
+ ['mp4 mkv avi ogm mov mpeg flv wmv', 171],
68
+ ['mp3 mp2 ogg flac wav wma ape mid midi', 168],
69
+ ['gb gba nds 3ds bin iso dat grp pak', 202],
70
+ ['rar zip tar gz tgz 7z bz2', 215],
71
+ ['txt odt doc docx pdf djvu', 247],
72
+ ['bak old log', 241]
73
+ ]
74
+ }
150
75
 
151
76
  # Test the 16 system colors.
152
77
  #
@@ -161,9 +86,9 @@ module LsColors
161
86
  def test_cube
162
87
  output = (0..17).map do |row|
163
88
  column = 16 + (row * 6) + (36 * (row / 6))
164
- test_array(
165
- ((column..column + 5).to_a + (column + 36..column + 41).to_a)
166
- )
89
+ cube_1 = (column..column + 5).to_a
90
+ cube_2 = (column + 36..column + 41).to_a
91
+ test_array(cube_1 + cube_2)
167
92
  end
168
93
 
169
94
  output.join
@@ -250,6 +175,88 @@ module LsColors
250
175
  string
251
176
  end
252
177
  end
178
+
179
+ # Load, modify, and output configuration.
180
+ module Colors
181
+ extend ColorManipulation
182
+
183
+ # The default configuration file. This will be loaded at startup if present.
184
+ RC_FILE = Dir.home << '/.lscolors_ruby.rc'
185
+
186
+ class << self
187
+ # Loads or initializes settings. The parameter can be either a Hash or a
188
+ # String (in the latter case it will be interpreted as the file name of
189
+ # a JSON file). If missing, the method will look for a JSON file specified
190
+ # by {RC_FILE}, and if absent, the {DEFAULTS} will be loaded.
191
+ #
192
+ # @param [String, Hash] object
193
+ # @return [Hash] the parsed settings.
194
+ def load(object = nil)
195
+ return @colors = object if object.is_a? Hash
196
+
197
+ if object.is_a? String
198
+ return @colors = JSON.parse(File.read(object), symbolize_names: true)
199
+ elsif File.exist? RC_FILE
200
+ return @colors = JSON.parse(File.read(RC_FILE), symbolize_names: true)
201
+ end
202
+
203
+ @colors = DEFAULTS
204
+ end
205
+
206
+ # Will preview the current settings as a string of colorized system files
207
+ # and extensions. Use +print+ or +puts+ to see the effect (a 256-color
208
+ # terminal is required).
209
+ #
210
+ # @return [String]
211
+ def preview
212
+ "#{preview_system}\n#{preview_extensions}"
213
+ end
214
+
215
+ # Save the current settings to a file. Without parameters, {RC_FILE} will
216
+ # be created and/or saved. {RC_FILE} will be loaded automatically from
217
+ # now on, so it can be modified directly in order to configure the color
218
+ # settings.
219
+ #
220
+ # @param [String] file the file name to save to.
221
+ # @return [0]
222
+ def save(file = RC_FILE)
223
+ File.write(file, JSON.pretty_generate(@colors))
224
+ 0
225
+ end
226
+
227
+ # Test the terminal color capability.
228
+ #
229
+ # @return [String]
230
+ def test
231
+ colors = `tput colors`.to_i
232
+ fail "256 colors not supported! (#{colors})" if colors < 256
233
+
234
+ "System colors (0-15):\n#{test_system}\n" \
235
+ "Color cube (16-231):\n#{test_cube}\n" \
236
+ "Grayscale colors (232-255):\n#{test_grayscale}\n"
237
+ end
238
+
239
+ # Will output the +LS_COLORS+ compatible configuration string.
240
+ #
241
+ # @return [String]
242
+ def to_s
243
+ output = 'rs=0:'
244
+
245
+ @colors[:system].each do |c|
246
+ output << "#{c.first}=#{color_setting(c)}:"
247
+ end
248
+
249
+ @colors[:extensions].each do |c|
250
+ c.first.split.sort.each do |ext|
251
+ output << "*.#{ext}=#{color_setting(c)}:"
252
+ end
253
+ end
254
+
255
+ output
256
+ end
257
+ alias_method :inspect, :to_s
258
+ end
259
+ end
253
260
  end
254
261
 
255
- LsColors.load
262
+ LsColors::Colors.load
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lscolors
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Winterbraid