Codebase list libterm-extendedcolor-perl / HEAD
HEAD

Tree @HEAD (Download .tar.gz)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
NAME
    Term::ExtendedColor - Color screen output using 256 colors

SYNOPSIS
        use Term::ExtendedColor qw(:all);

        # Or use the 'attributes' tag to only import the functions for setting
        # attributes.
        # This will import the following functions:

        # fg(), bg(), bold(), underline(), inverse(), italic(), clear()
        use Term::ExtendedColor ':attributes';

        ## Foreground colors

        my $red_text = fg('red2', 'this is in red');
        my $spring   = fg('springgreen3', 'this is green');

        ## Background colors

        print bg('red5', "Default foreground text on dark red background"), "\n";
        my $red_on_green = fg('red3', bg('green12', 'Red text on green background'));
        print "$red_on_green\n";

        ## Fall-through attributes

        Term::ExtendedColor::autoreset(0);
        my $bold  = fg('bold', 'This is bold');
        my $red   = fg('red2', 'This is red... and bold');
        my $green = bg('green28', 'This is bold red on green background');

        # Make sure to clear all attributes when autoreset turned OFF,
        # or else the users shell will be messed up

        my $clear = clear();
        print "$bold\n";
        print "$red\n";
        print "$green $clear\n";

        ## Non-color attributes

        # Turn on autoreset again
        Term::ExtendedColor::autoreset(1);

        for(qw(italic underline blink reverse bold)) {
          print fg($_, $_), "\n";
        }

        # For convenience

        my $bolded = bold("Bold text!");
        my $italic = italic("Text in italics!");

        ## Remove all attributes from input data
        my @colored;
        push(@colored, fg('bold', fg('red2', 'Bold and red')));
        push(@colored, fg('green13', fg('italic', 'Green, italic')));

        print "$_\n" for @colored;
        print "$_\n" for uncolor(@colored);

DESCRIPTION
    Term::ExtendedColor provides functions for sending so called extended
    escape sequences to the terminal. This ought to be used with a 256-color
    compatible terminal; see the NOTES section for a matrix of terminal
    emulators currently supporting this.

EXPORTS
    None by default.

    Two tags are provided for convience:

      # Import all functions
      use Term::ExtendedColor qw(:all);

      # Import functions for setting attributes
      # fg(), bg(), bold(), italic(), underline(), inverse(), clear()
      use Term::ExtendedColor qw(:attributes);

FUNCTIONS
  fg($color, $string)
      my $green = fg('green2', 'green foreground');
      my @blue  = fg('blue4',  ['takes arrayrefs as well']);

      my $x_color = fg('mediumorchid1', 'Using mappings from the X11 rgb.txt');

      my $arbitary_color = fg(4, 'This is colored in the fifth ANSI color');

      my $raw_seq = fg('38;5;197;48;5;53;1;3;4;5;7', 'this works too');

    Set foreground colors and attributes.

    See "COLORS AND ATTRIBUTES" for valid first arguments. Additionally,
    colors can be specified using their index value:

      my $yellow = fg(220, 'Yellow');

    If the internal $AUTORESET variable is non-zero (default), every element
    in the list of strings will be wrapped in escape sequences in such a way
    that the requested attributes will be set before the string and reset to
    defaults after the string.

    Fall-through attributes can be enabled by setting $AUTORESET to a false
    value.

      Term::ExtendedColor::autoreset( 0 );
      my $red   = fg('red1', 'Red');
      my $green = fg('green1', 'Green');

      print "Text after $red is red until $green\n";
      print "Text is still green, ", bold('and now bold as well!');

      # If you exit now without resetting the colors and attributes, chances are
      # your prompt will be messed up.

      clear(); # All back to normal

    If an invalid attribute is passed, the original data will be returned
    unmodified.

    If no attribute is passed, thrown an exception.

  bg($color, $string)
      my $green_bg = bg('green4', 'green background');
      my @blue_bg  = bg('blue6',  ['blue background']);

    Like "fg()", but sets background colors.

  uncolor($string) | uncolour($string)
      my $stripped = uncolor($colored_data);
      my @no_color = uncolor(\@colored);
      my @no_color = uncolor(@colored);

    Remove all attribute and color escape sequences from the input.

    See uncolor for a command-line utility using this function.

  get_colors() | get_colours()
      my $colors = get_colors();

    Returns a hash reference with all available attributes and colors.

  clear()
    When called in scalar context, returns the escape sequence that resets
    all attributes to their defaults.

    When called in void context, prints it directly.

  autoreset()
    Turn autoreset on/off. Enabled by default.

      Term::ExtendedColor::autoreset( 0 ); # Turn off autoreset

  bold(\@data)
    Convenience function that might be used in place of "fg('bold',
    \@data)";

    When called without arguments, returns a a string that turns off the
    bold attribute.

  italic(\@data)
    Convenience function that might be used in place of "fg('italic',
    \@data)";

    When called without arguments, returns a a string that turns off the
    italics attribute.

  underline(\@data)
    Convenience function that might be used in place of "fg('underline',
    \@data)";

    When called without arguments, returns a a string that turns off the
    underline attribute.

  inverse(\@data)
    Reverse video / inverse. Convenience function that might be used in
    place of "fg('inverse', \@data)";

    When called without arguments, returns a a string that turns off the
    inverse attribute.

NOTES
    The codes generated by this module complies to the extension of the ANSI
    colors standard first implemented in xterm in 1999. The first 16 color
    indexes (0 - 15) is the regular ANSI colors, while index 16 - 255 is the
    extension. Not all terminal emulators support this extension, though
    I've had a hard time finding one that doesn't. :)

      Terminal    256 colors
      ----------------------
      aterm               no
      eterm              yes
      gnome-terminal     yes
      konsole            yes
      lxterminal         yes
      mrxvt              yes
      roxterm            yes
      rxvt                no
      rxvt-unicode       yes *
      sakura             yes
      terminal           yes
      terminator         yes
      vte                yes
      xterm              yes
      iTerm2             yes
      Terminal.app        no

      GNU Screen         yes
      tmux               yes
      TTY/VC              no

    * Previously needed a patch. Full support was added in version 9.09.

    There's no way to give these extended colors meaningful names.

    Our first thought was to map them against some standard color names,
    like those in the HTML 4.0 specification or the SVG one. They didn't
    match.

    Therefore, they are named by their base color (red, green, magenta) plus
    index; The first index (always 1) is the brightest shade of that
    particular color, while the last index is the darkest.

    It's also possible to use some X color names, as defined in "rgb.txt".
    Do note that the color values do not match exactly; it's just an
    approximation.

    A full list of available colors can be retrieved with "get_colors()".
    See "COLORS AND ATTRIBUTES" for full list. All mapped colors can also be
    retrieved programmatically with "get_colors()".

COLORS AND ATTRIBUTES
  Attributes
      reset, clear, normal        reset all attributes
      bold, bright                bold or bright, depending on implementation
      faint                       decreased intensity (not widely supported)
      italic, cursive             italic or cursive
      underline, underscore       underline
      blink                       slow blink
      blink_ms                    rapid blink (only supported in MS DOS)
      reverse, inverse, negative  reverse video
      conceal                     conceal, or hide (not widely supported)

  Standard color map
      FIRST       LAST

      red1        red5
      blue1       blue17
      cyan1       cyan24
      gray1       gray24
      green1      green28
      orange1     orange5
      purple1     purple30
      yellow1     yellow18
      magenta1    magenta26

  X color names
      aquamarine1
      aquamarine3
      blueviolet
      cadetblue1
      cadetblue2
      chartreuse1
      chartreuse2
      chartreuse3
      chartreuse4
      cornflowerblue
      cornsilk1
      darkblue
      darkcyan
      darkgoldenrod
      darkgreen
      darkkhaki
      darkmagenta1
      darkmagenta2
      darkolivegreen1
      darkolivegreen2
      darkolivegreen3
      darkolivegreen4
      darkolivegreen5
      darkorange3
      darkorange4
      darkorange1
      darkred1
      darkred2
      darkseagreen1
      darkseagreen2
      darkseagreen3
      darkseagreen4
      darkslategray1
      darkslategray2
      darkslategray3
      darkturquoise
      darkviolet
      deeppink1
      deeppink2
      deeppink3
      deeppink4
      deepskyblue1
      deepskyblue2
      deepskyblue3
      deepskyblue4
      deepskyblue4
      dodgerblue1
      dodgerblue2
      dodgerblue3
      gold1
      gold3
      greenyellow
      grey0
      grey100
      grey11
      grey15
      grey19
      grey23
      grey27
      grey30
      grey3
      grey35
      grey37
      grey39
      grey42
      grey46
      grey50
      grey53
      grey54
      grey58
      grey62
      grey63
      grey66
      grey69
      grey70
      grey74
      grey7
      grey78
      grey82
      grey84
      grey85
      grey89
      grey93
      honeydew2
      hotpink2
      hotpink3
      hotpink
      indianred1
      indianred
      khaki1
      khaki3
      lightcoral
      lightcyan1
      lightcyan3
      lightgoldenrod1
      lightgoldenrod2
      lightgoldenrod3
      lightgreen
      lightpink1
      lightpink3
      lightpink4
      lightsalmon1
      lightsalmon3
      lightsalmon3
      lightseagreen
      lightskyblue1
      lightskyblue3
      lightskyblue3
      lightslateblue
      lightslategrey
      lightsteelblue1
      lightsteelblue3
      lightsteelblue
      lightyellow3
      mediumorchid1
      mediumorchid3
      mediumorchid
      mediumpurple1
      mediumpurple2
      mediumpurple3
      mediumpurple4
      mediumpurple
      mediumspringgreen
      mediumturquoise
      mediumvioletred
      mistyrose1
      mistyrose3
      navajowhite1
      navajowhite3
      navyblue
      orangered1
      orchid1
      orchid2
      orchid
      palegreen1
      palegreen3
      paleturquoise1
      paleturquoise4
      palevioletred1
      pink1
      pink3
      plum1
      plum2
      plum3
      plum4
      purple
      rosybrown
      royalblue1
      salmon1
      sandybrown
      seagreen1
      seagreen2
      seagreen3
      skyblue1
      skyblue2
      skyblue3
      slateblue1
      slateblue3
      springgreen1
      springgreen2
      springgreen3
      springgreen4
      steelblue1
      steelblue3
      steelblue
      tan
      thistle1
      thistle3
      turquoise2
      turquoise4
      violet
      wheat1
      wheat4

    In addition, it's also possible to pass raw color;attr strings like so:

        my $foo = fg('48;5;89;38;5;197;1;3;4;7', 'foo');

    Even though the fg() function is used, we set the following attributes:

      background => 89
      foreground => 197
      bold
      italic
      underline
      reverse

SEE ALSO
    Term::ExtendedColor::Xresources Term::ExtendedColor::TTY Term::ANSIColor

AUTHOR
      Magnus Woldrich
      CPAN ID: WOLDRICH
      m@japh.se
      http://github.com/trapd00r
      http://japh.se

CONTRIBUTORS
    Varadinsky <https://github.com/Varadinsky>

COPYRIGHT
    Copyright 2010, 2011, 2018, 2019- the Term::ExtendedColor "AUTHOR" and
    "CONTRIBUTORS" as listed above.

LICENSE
    This library is free software; you may redistribute it and/or modify it
    under the same terms as Perl itself.