riel 1.1.16 → 1.1.17

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 (50) hide show
  1. data/README.md +2 -37
  2. data/lib/riel/log/log.rb +17 -24
  3. data/lib/riel/log/loggable.rb +13 -15
  4. data/lib/riel/log/logger.rb +34 -66
  5. data/lib/riel/log.rb +0 -63
  6. data/lib/riel/optproc.rb +0 -3
  7. data/lib/riel/string.rb +0 -2
  8. data/lib/riel.rb +1 -1
  9. data/test/riel/log/format_test.rb +48 -0
  10. data/test/riel/optproc_test.rb +1 -30
  11. data/test/riel/{log_stack_test.rb → testlog/log_stack_test.rb} +0 -0
  12. data/test/riel/testlog/log_test.rb +254 -0
  13. data/test/riel/testlog/loggable_test.rb +31 -0
  14. metadata +89 -133
  15. data/lib/riel/ansicolor.rb +0 -91
  16. data/lib/riel/asciitable/cell.rb +0 -82
  17. data/lib/riel/asciitable/column.rb +0 -26
  18. data/lib/riel/asciitable/row.rb +0 -105
  19. data/lib/riel/asciitable/table.rb +0 -295
  20. data/lib/riel/text/ansi/ansi_color.rb +0 -31
  21. data/lib/riel/text/ansi/ansi_colors.rb +0 -16
  22. data/lib/riel/text/ansi/ansi_highlight.rb +0 -69
  23. data/lib/riel/text/ansi/ansi_list.rb +0 -17
  24. data/lib/riel/text/ansi/ansi_palette.rb +0 -48
  25. data/lib/riel/text/ansi/attributes.rb +0 -21
  26. data/lib/riel/text/ansi/backgrounds.rb +0 -13
  27. data/lib/riel/text/ansi/color.rb +0 -62
  28. data/lib/riel/text/ansi/foregrounds.rb +0 -12
  29. data/lib/riel/text/ansi/grey.rb +0 -30
  30. data/lib/riel/text/ansi/grey_palette.rb +0 -36
  31. data/lib/riel/text/ansi/palette.rb +0 -18
  32. data/lib/riel/text/ansi/rgb_color.rb +0 -28
  33. data/lib/riel/text/ansi/rgb_highlighter.rb +0 -73
  34. data/lib/riel/text/ansi/rgb_palette.rb +0 -49
  35. data/lib/riel/text/highlight.rb +0 -130
  36. data/lib/riel/text/highlightable.rb +0 -85
  37. data/lib/riel/text/html_highlight.rb +0 -98
  38. data/lib/riel/text/non_highlight.rb +0 -17
  39. data/lib/riel/text/string.rb +0 -10
  40. data/lib/riel/text.rb +0 -4
  41. data/test/riel/asciitable/table_test.rb +0 -77
  42. data/test/riel/log_test.rb +0 -164
  43. data/test/riel/text/ansi/ansi_highlight_test.rb +0 -116
  44. data/test/riel/text/ansi/ansi_palette_test.rb +0 -65
  45. data/test/riel/text/ansi/grey_palette_test.rb +0 -39
  46. data/test/riel/text/ansi/rgb_highlighter_test.rb +0 -99
  47. data/test/riel/text/ansi/rgb_palette_test.rb +0 -122
  48. data/test/riel/text/highlightable_test.rb +0 -24
  49. data/test/riel/text/string_test.rb +0 -47
  50. data/test/riel/text_test.rb +0 -62
@@ -1,13 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # -*- ruby -*-
3
-
4
- require 'riel/text/ansi/ansi_colors'
5
-
6
- module Text
7
- class Backgrounds < Colors
8
- def initialize
9
- on_colors = COLORS.collect { |color| "on_#{color}" }
10
- super on_colors, 40
11
- end
12
- end
13
- end
@@ -1,62 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # -*- ruby -*-
3
-
4
- module Text
5
- class Color
6
- BOLD = "\e[1m"
7
- RESET = "\x1b[0m"
8
-
9
- # \e1 == \x1b
10
-
11
- attr_reader :value
12
-
13
- def initialize value, type
14
- @value = value
15
- @type = type
16
- end
17
-
18
- def to_s
19
- @type == :fg ? fg : bg
20
- end
21
-
22
- def fg
23
- str 38
24
- end
25
-
26
- def bg
27
- str 48
28
- end
29
-
30
- def str num
31
- "\x1b[#{num};5;#{value}m"
32
- end
33
-
34
- def bold
35
- BOLD
36
- end
37
-
38
- def reset
39
- RESET
40
- end
41
-
42
- def print_fg
43
- write fg
44
- end
45
-
46
- def print_bg
47
- write bg
48
- end
49
-
50
- def to_str
51
- sprintf "%03d", @value
52
- end
53
-
54
- private
55
- def write fgbg
56
- print fgbg
57
- print to_str
58
- print reset
59
- print ' '
60
- end
61
- end
62
- end
@@ -1,12 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # -*- ruby -*-
3
-
4
- require 'riel/text/ansi/ansi_colors'
5
-
6
- module Text
7
- class Foregrounds < Colors
8
- def initialize
9
- super COLORS, 30
10
- end
11
- end
12
- end
@@ -1,30 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # -*- ruby -*-
3
-
4
- require 'riel/text/ansi/color'
5
-
6
- module Text
7
- class Grey < Color
8
- def initialize value
9
- super value, nil
10
- end
11
-
12
- def to_s
13
- "\e[#{value}m"
14
- end
15
-
16
- def print_fg
17
- print fg
18
- print to_str
19
- print reset
20
- print ' '
21
- end
22
-
23
- def print_bg
24
- print bg
25
- print to_str
26
- print reset
27
- print ' '
28
- end
29
- end
30
- end
@@ -1,36 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # -*- ruby -*-
3
-
4
- require 'riel/text/ansi/grey'
5
- require 'riel/text/ansi/palette'
6
- require 'singleton'
7
-
8
- module Text
9
- class GreyPalette < Palette
10
- include Singleton
11
-
12
- GREY_RG = (0 .. 23)
13
-
14
- def each &blk
15
- count = 0
16
- GREY_RG.each do |grey|
17
- code = 232 + grey
18
- color = Grey.new code
19
- blk.call color
20
- count += 1
21
- puts if count > 0 && (count % 6) == 0
22
- end
23
- puts
24
- end
25
-
26
- def print_foregrounds
27
- puts "grey foreground colors"
28
- write_foregrounds
29
- end
30
-
31
- def print_backgrounds
32
- puts "grey background colors"
33
- write_backgrounds
34
- end
35
- end
36
- end
@@ -1,18 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # -*- ruby -*-
3
-
4
- module Text
5
- class Palette
6
- def write_foregrounds
7
- each do |color|
8
- color.print_fg
9
- end
10
- end
11
-
12
- def write_backgrounds
13
- each do |color|
14
- color.print_bg
15
- end
16
- end
17
- end
18
- end
@@ -1,28 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # -*- ruby -*-
3
-
4
- require 'riel/text/ansi/color'
5
-
6
- module Text
7
- class RGBColor < Color
8
- attr_reader :red
9
- attr_reader :green
10
- attr_reader :blue
11
-
12
- def initialize red, green, blue, type = :fg
13
- super((red * 36) + (green * 6) + blue + 16, type)
14
-
15
- @red = red
16
- @green = green
17
- @blue = blue
18
- end
19
-
20
- def to_str
21
- sprintf "%d%d%d", @red, @green, @blue
22
- end
23
-
24
- def value
25
- (@red * 36) + (@green * 6) + @blue + 16
26
- end
27
- end
28
- end
@@ -1,73 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # -*- ruby -*-
3
-
4
- require 'riel/text/ansi/rgb_color'
5
- require 'singleton'
6
-
7
- module Text
8
- # Highlights using extended (RGB) ANSI escape sequences.
9
- module RGBHighlighter
10
- RGB_RE = Regexp.new '(on_?)?(\d)(\d)(\d)'
11
-
12
- def initialize
13
- @aliases = Hash.new
14
- end
15
-
16
- def to_rgb_codes str
17
- codes = str.scan(RGB_RE).collect do |bg, r, g, b|
18
- to_rgb_code r.to_i, g.to_i, b.to_i, bg ? :bg : :fg
19
- end
20
- codes.join ''
21
- end
22
-
23
- def to_rgb_code red, green, blue, fgbg = :fg
24
- color = RGBColor.new red, green, blue
25
- color.send fgbg
26
- end
27
-
28
- def to_rgb str, red, green, blue, meth
29
- color = RGBColor.new red, green, blue
30
- color.send(meth) + str + color.reset
31
- end
32
-
33
- def rgb str, red, green, blue
34
- to_rgb str, red, green, blue, :fg
35
- end
36
-
37
- def on_rgb str, red, green, blue
38
- to_rgb str, red, green, blue, :bg
39
- end
40
-
41
- def rrggbb red, green, blue
42
- [ red, green, blue ].collect { |x| (x * 6 / 255.0).to_i }
43
- end
44
-
45
- def add_alias name, red, green, blue
46
- type = name.to_s[0 .. 2] == 'on_' ? :bg : :fg
47
- color = RGBColor.new red, green, blue, type
48
- @aliases[name] = color
49
- end
50
-
51
- def has_alias? name
52
- @aliases.include? name
53
- end
54
-
55
- def respond_to? meth
56
- has_alias?(meth) || super
57
- end
58
-
59
- def method_missing(meth, *args, &blk)
60
- if has_alias? meth
61
- methdecl = Array.new
62
- methdecl << "def #{meth}(str, &blk);"
63
- methdecl << " color = @aliases[:#{meth}];"
64
- methdecl << " color.to_s + str + color.reset;"
65
- methdecl << "end"
66
- self.class.class_eval methdecl.join("\n")
67
- send meth, *args, &blk
68
- else
69
- super
70
- end
71
- end
72
- end
73
- end
@@ -1,49 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # -*- ruby -*-
3
-
4
- require 'riel/text/ansi/rgb_color'
5
- require 'riel/text/ansi/palette'
6
- require 'singleton'
7
-
8
- module Text
9
- class RGBPalette < Palette
10
- include Singleton
11
-
12
- def each &blk
13
- rgbrg = (0 .. 5)
14
-
15
- count = 0
16
- rgbrg.each do |red|
17
- rgbrg.each do |green|
18
- rgbrg.each do |blue|
19
- blk.call RGBColor.new(red, green, blue)
20
- count += 1
21
- puts if count > 0 && (count % 6) == 0
22
- end
23
- end
24
- puts
25
- end
26
- end
27
-
28
- def print_foregrounds
29
- puts "rgb foreground colors"
30
- write_foregrounds
31
- end
32
-
33
- def print_backgrounds
34
- puts "rgb background colors"
35
- write_backgrounds
36
- end
37
-
38
- def print_combinations
39
- puts "all combinations"
40
- each do |rgbbg|
41
- puts "bg: #{rgbbg.to_str}"
42
- each do |rgbfg|
43
- print rgbbg.bg
44
- rgbfg.print_fg
45
- end
46
- end
47
- end
48
- end
49
- end
@@ -1,130 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # -*- ruby -*-
3
-
4
- module Text
5
- # Highlights text using either ANSI terminal codes, or HTML.
6
-
7
- # Note that the foreground and background sections can have modifiers
8
- # (attributes).
9
- #
10
- # Examples:
11
- # black
12
- # blue on white
13
- # bold green on yellow
14
- # underscore bold magenta on cyan
15
- # underscore red on cyan
16
-
17
- class Highlighter
18
- VERSION = "1.0.4"
19
-
20
- COLORS = %w{ black red green yellow blue magenta cyan white }
21
- DECORATIONS = %w{ none reset bold underscore underline blink negative concealed }
22
-
23
- BACKGROUND_COLORS = COLORS.collect { |color| "on_#{color}" }
24
- FOREGROUND_COLORS = COLORS
25
-
26
- COLORS_RE = Regexp.new('(?: ' +
27
- # background will be in capture 0
28
- 'on(?:\s+|_) ( ' + COLORS.join(' | ') + ' ) | ' +
29
- # foreground will be in capture 1
30
- '( ' + (COLORS + DECORATIONS).join(' | ') + ' ) ' +
31
- ')', Regexp::EXTENDED);
32
-
33
- DEFAULT_COLORS = [
34
- "black on yellow",
35
- "black on green",
36
- "black on magenta",
37
- "yellow on black",
38
- "magenta on black",
39
- "green on black",
40
- "cyan on black",
41
- "blue on yellow",
42
- "blue on magenta",
43
- "blue on green",
44
- "blue on cyan",
45
- "yellow on blue",
46
- "magenta on blue",
47
- "green on blue",
48
- "cyan on blue",
49
- ]
50
-
51
- attr_reader :colors
52
-
53
- def parse_colors str
54
- str.scan(Regexp.new(COLORS_RE)).collect do |color|
55
- color[0] ? "on_" + color[0] : color[1]
56
- end
57
- end
58
-
59
- # returns a list of all color combinations.
60
- def self.all_colors
61
- all_colors = Array.new
62
- ([ nil ] + DECORATIONS).each do |dec|
63
- ([ nil ] + FOREGROUND_COLORS).each do |fg|
64
- ([ nil ] + BACKGROUND_COLORS).each do |bg|
65
- name = [ dec, fg, bg ].compact.join("_")
66
- all_colors << name if name && name.length > 0
67
- end
68
- end
69
- end
70
- all_colors
71
- end
72
-
73
- def highlight str
74
- # implemented by subclasses
75
- end
76
-
77
- # Colorizes the given object. If a block is passed, its return value is used
78
- # and the stream is reset. If a String is provided as the object, it is
79
- # colorized and the stream is reset. Otherwise, only the code for the given
80
- # color name is returned.
81
-
82
- def color colorstr, obj = nil, &blk
83
- colornames = parse_colors colorstr
84
- result = names_to_code colornames
85
-
86
- if blk
87
- result << blk.call
88
- elsif obj.respond_to? :to_s
89
- result << obj.to_s
90
- end
91
- result << names_to_code("reset")
92
- result
93
- end
94
-
95
- # returns the code for the given color string, which is in the format:
96
- # foreground* [on background]?
97
- #
98
- # Note that the foreground and background sections can have modifiers
99
- # (attributes).
100
- #
101
- # Examples:
102
- # black
103
- # blue on white
104
- # bold green on yellow
105
- # underscore bold magenta on cyan
106
- # underscore red on cyan
107
- def code str
108
- fg, bg = str.split(/\s*\bon_?\s*/)
109
- (fg ? foreground(fg) : "") + (bg ? background(bg) : "")
110
- end
111
-
112
- # Returns the code for the given background color(s).
113
- def background bgcolor
114
- names_to_code "on_" + bgcolor
115
- end
116
-
117
- # Returns the code for the given foreground color(s).
118
- def foreground fgcolor
119
- fgcolor.split(/\s+/).collect { |fg| names_to_code fg }.join("")
120
- end
121
-
122
- # Returns a highlighted (colored) version of the string, applying the regular
123
- # expressions in the array, which are paired with the desired color.
124
- def gsub str, re, color
125
- str.gsub(re) do |match|
126
- self.color color, match
127
- end
128
- end
129
- end
130
- end
@@ -1,85 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # -*- ruby -*-
3
-
4
- require 'riel/text/highlight'
5
- require 'riel/text/ansi/ansi_highlight'
6
- require 'riel/text/html_highlight'
7
- require 'riel/text/non_highlight'
8
-
9
- module Text
10
- # An object that can be highlighted. This is used by the String class.
11
- module Highlightable
12
- # The highlighter for the class in which this module is included.
13
- @@highlighter = ANSIHighlighter.instance
14
-
15
- # this dynamically adds methods for individual colors.
16
- def method_missing(meth, *args, &blk)
17
- if has_color? meth.to_s
18
- methdecl = Array.new
19
- methdecl << "def #{meth}(&blk);"
20
- methdecl << " @@highlighter.color(\"#{meth}\", self, &blk);"
21
- methdecl << "end"
22
- self.class.class_eval methdecl.join("\n")
23
- send meth, *args, &blk
24
- elsif @@highlighter.has_alias? meth
25
- methdecl = Array.new
26
- methdecl << "def #{meth}(&blk);"
27
- methdecl << " @@highlighter.#{meth}(self, &blk);"
28
- methdecl << "end"
29
- self.class.class_eval methdecl.join("\n")
30
- send meth, *args, &blk
31
- else
32
- super
33
- end
34
- end
35
-
36
- def respond_to? meth
37
- has_color?(meth.to_s) || ANSIHighlighter.instance.has_alias?(meth) || super
38
- end
39
-
40
- def has_color? color
41
- Highlighter::all_colors.include? color
42
- end
43
-
44
- # Sets the highlighter for this class. This can be either by type or by
45
- # String.
46
- def highlighter= hl
47
- @@highlighter = case hl
48
- when Highlighter
49
- hl
50
- when :none, "NONE", nil
51
- NonHighlighter.new
52
- when :html, "HTML"
53
- HTMLHighlighter.new
54
- when :ansi, "ANSI"
55
- ANSIHighlighter.instance
56
- else
57
- NonHighlighter.new
58
- end
59
-
60
- end
61
-
62
- def rgb red, green, blue
63
- @@highlighter.rgb self, red, green, blue
64
- end
65
-
66
- def on_rgb red, green, blue
67
- @@highlighter.on_rgb self, red, green, blue
68
- end
69
-
70
- def grey value
71
- @@highlighter.grey self, value
72
- end
73
-
74
- def on_grey value
75
- @@highlighter.on_grey self, value
76
- end
77
-
78
- alias_method :gray, :grey
79
- alias_method :on_gray, :on_grey
80
-
81
- def self.add_to cls
82
- cls.send :include, Highlightable
83
- end
84
- end
85
- end
@@ -1,98 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # -*- ruby -*-
3
-
4
- require 'riel/text/highlight'
5
-
6
- module Text
7
- # Highlights using HTML. Fonts are highlighted using <span> tags, not <font>.
8
- # Also note that negative is translated to white on black.
9
- # According to http://www.w3.org/TR/REC-CSS2/syndata.html#value-def-color,
10
- # valid color keywords are: aqua, black, blue, fuchsia, gray, green, lime,
11
- # maroon, navy, olive, purple, red, silver, teal, white, and yellow.
12
- # Thus, no magenta or cyan.
13
-
14
- class HTMLHighlighter < Highlighter
15
- def initialize
16
- # we need to know what we're resetting from (bold, font, underlined ...)
17
- @stack = []
18
- end
19
-
20
- # Returns the start tag for the given name.
21
-
22
- def start_style name
23
- case name
24
- when "negative"
25
- "<span style=\"color: white; background-color: black\">"
26
- when /on_(\w+)/
27
- colval = color_value $1
28
- "<span style=\"background-color: #{colval}\">"
29
- else
30
- colval = color_value name
31
- "<span style=\"color: #{colval}\">"
32
- end
33
- end
34
-
35
- # Returns the end tag ("</span>").
36
-
37
- def end_style
38
- "</span>"
39
- end
40
-
41
- def color_value cname
42
- case cname
43
- when "cyan"
44
- "#00FFFF"
45
- when "magenta"
46
- "#FF00FF"
47
- else
48
- cname
49
- end
50
- end
51
-
52
- # Returns the code for the given name.
53
- def names_to_code names
54
- str = ""
55
-
56
- names = [ names ] unless names.kind_of? Array
57
-
58
- names.each do |name|
59
- @stack << name
60
-
61
- case name
62
- when "none", "reset"
63
- @stack.pop
64
- if @stack.length > 0
65
- begin
66
- prev = @stack.pop
67
- case prev
68
- when "bold"
69
- str << "</b>"
70
- when "underscore", "underline"
71
- str << "</u>"
72
- when "blink"
73
- str << "</blink>"
74
- when "concealed"
75
- str << " -->"
76
- else
77
- str << end_style
78
- end
79
- end while @stack.length > 0
80
- end
81
- str
82
- when "bold"
83
- str << "<b>"
84
- when "underscore", "underline"
85
- str << "<u>"
86
- when "blink"
87
- str << "<blink>"
88
- when "concealed"
89
- str << "<!-- "
90
- else
91
- str << start_style(name)
92
- end
93
- end
94
-
95
- str
96
- end
97
- end
98
- end
@@ -1,17 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # -*- ruby -*-
3
-
4
- require 'riel/text/highlight'
5
-
6
- module Text
7
- # Does no highlighting.
8
- class NonHighlighter < Highlighter
9
- def initialize
10
- super nil
11
- end
12
-
13
- def names_to_code colorname
14
- ""
15
- end
16
- end
17
- end
@@ -1,10 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # -*- ruby -*-
3
-
4
- # String can be extended to support highlighting.
5
- class String
6
- def self.highlight
7
- require 'riel/text/highlightable'
8
- Text::Highlightable.add_to String
9
- end
10
- end
data/lib/riel/text.rb DELETED
@@ -1,4 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # -*- ruby -*-
3
-
4
- require 'riel/text/string'