bauxite 0.6.18 → 0.6.19

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 (205) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +21 -21
  3. data/README.md +293 -293
  4. data/Rakefile +128 -128
  5. data/bin/bauxite +27 -27
  6. data/doc/Bauxite.html +6 -9
  7. data/doc/Bauxite/Action.html +298 -315
  8. data/doc/Bauxite/ActionModule.html +23 -26
  9. data/doc/Bauxite/Application.html +36 -38
  10. data/doc/Bauxite/Context.html +303 -303
  11. data/doc/Bauxite/Errors.html +6 -9
  12. data/doc/Bauxite/Errors/AssertionError.html +6 -9
  13. data/doc/Bauxite/Errors/FileNotFoundError.html +6 -9
  14. data/doc/Bauxite/Errors/FormatError.html +6 -9
  15. data/doc/Bauxite/Loggers.html +6 -9
  16. data/doc/Bauxite/Loggers/CompositeLogger.html +29 -32
  17. data/doc/Bauxite/Loggers/EchoLogger.html +10 -13
  18. data/doc/Bauxite/Loggers/FileLogger.html +25 -28
  19. data/doc/Bauxite/Loggers/HtmlLogger.html +99 -102
  20. data/doc/Bauxite/Loggers/NullLogger.html +16 -19
  21. data/doc/Bauxite/Loggers/ReportLogger.html +43 -46
  22. data/doc/Bauxite/Loggers/TerminalLogger.html +76 -79
  23. data/doc/Bauxite/Loggers/XtermLogger.html +28 -31
  24. data/doc/Bauxite/Parser.html +87 -89
  25. data/doc/Bauxite/ParserModule.html +19 -22
  26. data/doc/Bauxite/Selector.html +99 -105
  27. data/doc/Bauxite/SelectorModule.html +27 -30
  28. data/doc/README_md.html +117 -103
  29. data/doc/created.rid +58 -58
  30. data/doc/fonts.css +167 -167
  31. data/doc/fonts/Lato-Light.ttf +0 -0
  32. data/doc/fonts/Lato-LightItalic.ttf +0 -0
  33. data/doc/fonts/Lato-Regular.ttf +0 -0
  34. data/doc/fonts/Lato-RegularItalic.ttf +0 -0
  35. data/doc/fonts/SourceCodePro-Bold.ttf +0 -0
  36. data/doc/fonts/SourceCodePro-Regular.ttf +0 -0
  37. data/doc/images/add.png +0 -0
  38. data/doc/images/arrow_up.png +0 -0
  39. data/doc/images/brick.png +0 -0
  40. data/doc/images/brick_link.png +0 -0
  41. data/doc/images/bug.png +0 -0
  42. data/doc/images/bullet_black.png +0 -0
  43. data/doc/images/bullet_toggle_minus.png +0 -0
  44. data/doc/images/bullet_toggle_plus.png +0 -0
  45. data/doc/images/date.png +0 -0
  46. data/doc/images/delete.png +0 -0
  47. data/doc/images/find.png +0 -0
  48. data/doc/images/loadingAnimation.gif +0 -0
  49. data/doc/images/macFFBgHack.png +0 -0
  50. data/doc/images/package.png +0 -0
  51. data/doc/images/page_green.png +0 -0
  52. data/doc/images/page_white_text.png +0 -0
  53. data/doc/images/page_white_width.png +0 -0
  54. data/doc/images/plugin.png +0 -0
  55. data/doc/images/ruby.png +0 -0
  56. data/doc/images/tag_blue.png +0 -0
  57. data/doc/images/tag_green.png +0 -0
  58. data/doc/images/transparent.png +0 -0
  59. data/doc/images/wrench.png +0 -0
  60. data/doc/images/wrench_orange.png +0 -0
  61. data/doc/images/zoom.png +0 -0
  62. data/doc/index.html +117 -103
  63. data/doc/js/darkfish.js +32 -11
  64. data/doc/js/jquery.js +0 -0
  65. data/doc/js/navigation.js +0 -0
  66. data/doc/js/search.js +0 -0
  67. data/doc/js/search_index.js +1 -1
  68. data/doc/js/searcher.js +0 -0
  69. data/doc/rdoc.css +580 -580
  70. data/doc/table_of_contents.html +69 -72
  71. data/lib/bauxite.rb +28 -28
  72. data/lib/bauxite/actions/alias.rb +51 -51
  73. data/lib/bauxite/actions/assert.rb +49 -49
  74. data/lib/bauxite/actions/asserth.rb +60 -60
  75. data/lib/bauxite/actions/assertm.rb +49 -49
  76. data/lib/bauxite/actions/assertv.rb +40 -40
  77. data/lib/bauxite/actions/assertw.rb +47 -47
  78. data/lib/bauxite/actions/break.rb +39 -39
  79. data/lib/bauxite/actions/capture.rb +61 -61
  80. data/lib/bauxite/actions/click.rb +36 -36
  81. data/lib/bauxite/actions/debug.rb +103 -103
  82. data/lib/bauxite/actions/doif.rb +43 -43
  83. data/lib/bauxite/actions/dounless.rb +43 -43
  84. data/lib/bauxite/actions/echo.rb +36 -36
  85. data/lib/bauxite/actions/exec.rb +46 -46
  86. data/lib/bauxite/actions/exit.rb +35 -35
  87. data/lib/bauxite/actions/failif.rb +52 -52
  88. data/lib/bauxite/actions/js.rb +41 -41
  89. data/lib/bauxite/actions/load.rb +49 -49
  90. data/lib/bauxite/actions/open.rb +35 -35
  91. data/lib/bauxite/actions/params.rb +40 -40
  92. data/lib/bauxite/actions/replace.rb +37 -37
  93. data/lib/bauxite/actions/reset.rb +38 -38
  94. data/lib/bauxite/actions/return.rb +68 -68
  95. data/lib/bauxite/actions/ruby.rb +58 -58
  96. data/lib/bauxite/actions/select.rb +48 -48
  97. data/lib/bauxite/actions/set.rb +39 -39
  98. data/lib/bauxite/actions/setif.rb +44 -44
  99. data/lib/bauxite/actions/source.rb +44 -44
  100. data/lib/bauxite/actions/store.rb +38 -38
  101. data/lib/bauxite/actions/submit.rb +37 -37
  102. data/lib/bauxite/actions/test.rb +67 -67
  103. data/lib/bauxite/actions/tryload.rb +71 -71
  104. data/lib/bauxite/actions/wait.rb +38 -38
  105. data/lib/bauxite/actions/write.rb +44 -44
  106. data/lib/bauxite/application.rb +349 -349
  107. data/lib/bauxite/core/action.rb +199 -199
  108. data/lib/bauxite/core/context.rb +791 -791
  109. data/lib/bauxite/core/errors.rb +41 -41
  110. data/lib/bauxite/core/logger.rb +169 -169
  111. data/lib/bauxite/core/parser.rb +85 -85
  112. data/lib/bauxite/core/selector.rb +152 -152
  113. data/lib/bauxite/loggers/composite.rb +91 -91
  114. data/lib/bauxite/loggers/echo.rb +36 -36
  115. data/lib/bauxite/loggers/file.rb +68 -68
  116. data/lib/bauxite/loggers/html.rb +154 -154
  117. data/lib/bauxite/loggers/terminal.rb +134 -134
  118. data/lib/bauxite/loggers/xterm.rb +101 -101
  119. data/lib/bauxite/parsers/csv.rb +43 -43
  120. data/lib/bauxite/parsers/default.rb +42 -42
  121. data/lib/bauxite/parsers/html.rb +79 -79
  122. data/lib/bauxite/selectors/attr.rb +39 -39
  123. data/lib/bauxite/selectors/frame.rb +60 -60
  124. data/lib/bauxite/selectors/json.rb +88 -88
  125. data/lib/bauxite/selectors/sid.rb +38 -38
  126. data/lib/bauxite/selectors/smart.rb +80 -80
  127. data/lib/bauxite/selectors/window.rb +77 -77
  128. data/test/alert.bxt +3 -3
  129. data/test/alert/page.html +4 -4
  130. data/test/alias.bxt +9 -9
  131. data/test/asserth.bxt +2 -2
  132. data/test/assertv.bxt +1 -1
  133. data/test/assertw.bxt +7 -7
  134. data/test/broken.bxt.manual +0 -0
  135. data/test/bug_load_path.bxt.manual +0 -0
  136. data/test/bug_load_path/broken.bxt.manual +0 -0
  137. data/test/bug_load_path/test.bxt +0 -0
  138. data/test/capture.bxt.manual +20 -20
  139. data/test/capture/my_test.bxt +1 -1
  140. data/test/capture/page.html +6 -6
  141. data/test/capture_on_error.bxt.manual +3 -3
  142. data/test/capture_on_error/my_test.bxt +1 -1
  143. data/test/capture_on_error/page.html +2 -2
  144. data/test/debug.bxt.manual +0 -0
  145. data/test/default_selector.bxt.manual +7 -7
  146. data/test/default_selector/page.html +10 -10
  147. data/test/default_selector_var.bxt +1 -1
  148. data/test/delay.bxt +2 -2
  149. data/test/delay/page.html +4 -4
  150. data/test/doif.bxt +6 -6
  151. data/test/dounless.bxt +6 -6
  152. data/test/exec.bxt +6 -6
  153. data/test/exit.bxt +3 -3
  154. data/test/exit/test.bxt +3 -3
  155. data/test/extension.bxt.manual +4 -4
  156. data/test/extension/custom.rb +12 -12
  157. data/test/extension/page.html +4 -4
  158. data/test/failif.bxt +7 -7
  159. data/test/failif/page.html +5 -5
  160. data/test/format.bxt +17 -17
  161. data/test/format/page.html +6 -6
  162. data/test/frame.bxt +6 -6
  163. data/test/frame/child_frame.html +6 -6
  164. data/test/frame/grandchild_frame.html +4 -4
  165. data/test/frame/page.html +4 -4
  166. data/test/js.bxt +4 -4
  167. data/test/json.bxt +19 -19
  168. data/test/json/array.json +3 -3
  169. data/test/json/object.json +13 -13
  170. data/test/load.bxt +18 -18
  171. data/test/load/child.bxt +12 -12
  172. data/test/parsers.bxt +1 -1
  173. data/test/parsers.csv +7 -7
  174. data/test/parsers.html +32 -32
  175. data/test/parsers/page.html +6 -6
  176. data/test/return.bxt +1 -1
  177. data/test/return/f1.bxt +1 -1
  178. data/test/return/f2.bxt +1 -1
  179. data/test/return/f3.bxt +1 -1
  180. data/test/return/f4.bxt +2 -2
  181. data/test/ruby.bxt +1 -1
  182. data/test/ruby/custom.rb +5 -5
  183. data/test/select.bxt +9 -9
  184. data/test/select/page.html +8 -8
  185. data/test/selectors.bxt +7 -7
  186. data/test/selectors/page.html +6 -6
  187. data/test/set_builtin.bxt +5 -0
  188. data/test/set_builtin/page.html +5 -0
  189. data/test/setif.bxt +3 -3
  190. data/test/smart_selector.bxt +17 -17
  191. data/test/smart_selector/page.html +17 -17
  192. data/test/stdin.bxt +0 -0
  193. data/test/submit.bxt +4 -4
  194. data/test/submit/page.html +6 -6
  195. data/test/submit/page2.html +4 -4
  196. data/test/test.bxt.manual +6 -6
  197. data/test/test/test1.bxt +2 -2
  198. data/test/test/test2.bxt +3 -3
  199. data/test/test/test3.bxt +2 -2
  200. data/test/test/test4.bxt +1 -1
  201. data/test/test/test5.bxt +1 -1
  202. data/test/window.bxt +14 -14
  203. data/test/window/page.html +5 -5
  204. data/test/window/popup.html +4 -4
  205. metadata +5 -3
@@ -1,135 +1,135 @@
1
- #--
2
- # Copyright (c) 2014 Patricio Zavolinsky
3
- #
4
- # Permission is hereby granted, free of charge, to any person obtaining a copy
5
- # of this software and associated documentation files (the "Software"), to deal
6
- # in the Software without restriction, including without limitation the rights
7
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
- # copies of the Software, and to permit persons to whom the Software is
9
- # furnished to do so, subject to the following conditions:
10
- #
11
- # The above copyright notice and this permission notice shall be included in
12
- # all copies or substantial portions of the Software.
13
- #
14
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
- # SOFTWARE.
21
- #++
22
-
23
- # Terminal logger.
24
- #
25
- # This logger outputs text using basic text formatting for a terminal
26
- # window.
27
- #
28
- class Bauxite::Loggers::TerminalLogger < Bauxite::Loggers::NullLogger
29
- # Constructs a new Terminal logger instance.
30
- def initialize(options)
31
- super(options)
32
- @max_cmd_size = Bauxite::Context::max_action_name_size
33
- end
34
-
35
- # Pretty prints action information and status.
36
- def log_cmd(action)
37
- width = _screen_width
38
- cmd = action.cmd.downcase
39
- color = _cmd_color(cmd)
40
- cmd = cmd.ljust(@max_cmd_size)
41
- max_args_size = width-cmd.size-1-6-1-1
42
-
43
- print "#{_fmt(color, cmd)} "
44
- s = action.args(true).join(' ')
45
- s = s[0...max_args_size-3]+'...' if s.size > max_args_size
46
- print s.ljust(max_args_size)
47
- $stdout.flush
48
-
49
- _save_cursor
50
- color = :green
51
- text = 'OK'
52
- ret = yield
53
- if not ret
54
- color = :yellow
55
- text = 'SKIP'
56
- end
57
- _restore_cursor
58
- puts " #{_block(color, text, 5)}"
59
- $stdout.flush
60
- ret
61
- rescue
62
- _restore_cursor
63
- puts " #{_block(:red, 'ERROR', 5)}"
64
- $stdout.flush
65
- raise
66
- end
67
-
68
- # Returns a colorized debug prompt.
69
- def debug_prompt
70
- _fmt(:white, super)
71
- end
72
-
73
- # Updates action progress.
74
- def progress(value)
75
- if _restore_cursor
76
- print " #{_block(:gray, value.to_s, 5)}"
77
- $stdout.flush
78
- end
79
- end
80
-
81
- # Prints the specified string.
82
- #
83
- # See Bauxite::Loggers::NullLogger#print
84
- #
85
- def log(s, type = :info)
86
- color = :gray
87
- case type
88
- when :error
89
- color = :red
90
- when :warning
91
- color = :yellow
92
- when :debug
93
- color = :purple
94
- end
95
- super _fmt(color, s), type
96
- end
97
-
98
- protected
99
- # Centers +text+ to a fixed size with.
100
- def _fmt(color, text, size = 0)
101
- text.center(size)
102
- end
103
-
104
- # Save the current cursor position,
105
- def _save_cursor
106
- false
107
- end
108
-
109
- # Restores the cursor to the previously saved cursor position.
110
- def _restore_cursor
111
- false
112
- end
113
-
114
- # Prints +text+ centered inside a square-bracketed block.
115
- def _block(color, text, size)
116
- "#{_fmt(:white, '[')}#{_fmt(color, text, size)}#{_fmt(:white, ']')}"
117
- end
118
-
119
- # Get the color of +cmd+.
120
- def _cmd_color(cmd)
121
- case cmd
122
- when 'load'
123
- return :cyan
124
- when 'test'
125
- return :purple
126
- else
127
- return :blue
128
- end
129
- end
130
-
131
- # Returns the terminal screen width.
132
- def _screen_width
133
- 80
134
- end
1
+ #--
2
+ # Copyright (c) 2014 Patricio Zavolinsky
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ # of this software and associated documentation files (the "Software"), to deal
6
+ # in the Software without restriction, including without limitation the rights
7
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ # copies of the Software, and to permit persons to whom the Software is
9
+ # furnished to do so, subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in
12
+ # all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ # SOFTWARE.
21
+ #++
22
+
23
+ # Terminal logger.
24
+ #
25
+ # This logger outputs text using basic text formatting for a terminal
26
+ # window.
27
+ #
28
+ class Bauxite::Loggers::TerminalLogger < Bauxite::Loggers::NullLogger
29
+ # Constructs a new Terminal logger instance.
30
+ def initialize(options)
31
+ super(options)
32
+ @max_cmd_size = Bauxite::Context::max_action_name_size
33
+ end
34
+
35
+ # Pretty prints action information and status.
36
+ def log_cmd(action)
37
+ width = _screen_width
38
+ cmd = action.cmd.downcase
39
+ color = _cmd_color(cmd)
40
+ cmd = cmd.ljust(@max_cmd_size)
41
+ max_args_size = width-cmd.size-1-6-1-1
42
+
43
+ print "#{_fmt(color, cmd)} "
44
+ s = action.args(true).join(' ')
45
+ s = s[0...max_args_size-3]+'...' if s.size > max_args_size
46
+ print s.ljust(max_args_size)
47
+ $stdout.flush
48
+
49
+ _save_cursor
50
+ color = :green
51
+ text = 'OK'
52
+ ret = yield
53
+ if not ret
54
+ color = :yellow
55
+ text = 'SKIP'
56
+ end
57
+ _restore_cursor
58
+ puts " #{_block(color, text, 5)}"
59
+ $stdout.flush
60
+ ret
61
+ rescue
62
+ _restore_cursor
63
+ puts " #{_block(:red, 'ERROR', 5)}"
64
+ $stdout.flush
65
+ raise
66
+ end
67
+
68
+ # Returns a colorized debug prompt.
69
+ def debug_prompt
70
+ _fmt(:white, super)
71
+ end
72
+
73
+ # Updates action progress.
74
+ def progress(value)
75
+ if _restore_cursor
76
+ print " #{_block(:gray, value.to_s, 5)}"
77
+ $stdout.flush
78
+ end
79
+ end
80
+
81
+ # Prints the specified string.
82
+ #
83
+ # See Bauxite::Loggers::NullLogger#print
84
+ #
85
+ def log(s, type = :info)
86
+ color = :gray
87
+ case type
88
+ when :error
89
+ color = :red
90
+ when :warning
91
+ color = :yellow
92
+ when :debug
93
+ color = :purple
94
+ end
95
+ super _fmt(color, s), type
96
+ end
97
+
98
+ protected
99
+ # Centers +text+ to a fixed size with.
100
+ def _fmt(color, text, size = 0)
101
+ text.center(size)
102
+ end
103
+
104
+ # Save the current cursor position,
105
+ def _save_cursor
106
+ false
107
+ end
108
+
109
+ # Restores the cursor to the previously saved cursor position.
110
+ def _restore_cursor
111
+ false
112
+ end
113
+
114
+ # Prints +text+ centered inside a square-bracketed block.
115
+ def _block(color, text, size)
116
+ "#{_fmt(:white, '[')}#{_fmt(color, text, size)}#{_fmt(:white, ']')}"
117
+ end
118
+
119
+ # Get the color of +cmd+.
120
+ def _cmd_color(cmd)
121
+ case cmd
122
+ when 'load'
123
+ return :cyan
124
+ when 'test'
125
+ return :purple
126
+ else
127
+ return :blue
128
+ end
129
+ end
130
+
131
+ # Returns the terminal screen width.
132
+ def _screen_width
133
+ 80
134
+ end
135
135
  end
@@ -1,102 +1,102 @@
1
- #--
2
- # Copyright (c) 2014 Patricio Zavolinsky
3
- #
4
- # Permission is hereby granted, free of charge, to any person obtaining a copy
5
- # of this software and associated documentation files (the "Software"), to deal
6
- # in the Software without restriction, including without limitation the rights
7
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
- # copies of the Software, and to permit persons to whom the Software is
9
- # furnished to do so, subject to the following conditions:
10
- #
11
- # The above copyright notice and this permission notice shall be included in
12
- # all copies or substantial portions of the Software.
13
- #
14
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
- # SOFTWARE.
21
- #++
22
-
23
- require_relative 'terminal'
24
-
25
- # XTerm logger.
26
- #
27
- # This logger outputs colorized lines using xterm (VT100/2) escape
28
- # sequences.
29
- #
30
- # XTerm logger options include:
31
- # [<tt>nc</tt>, <tt>color</tt>] If set to 'no', prints text without using
32
- # colors. Note that positional escape sequences
33
- # will still be used to show progress. To disable
34
- # escape sequences completely, consider using the
35
- # Bauxite::Loggers::TerminalLogger logger
36
- # instead.
37
- #
38
- class Bauxite::Loggers::XtermLogger < Bauxite::Loggers::TerminalLogger
39
-
40
- protected
41
- COLORS = { # :nodoc:
42
- :black => '0;30',
43
- :dark_blue => '0;34',
44
- :dark_green => '0;32',
45
- :dark_cyan => '0;36',
46
- :dark_red => '0;31',
47
- :dark_purple => '0;35',
48
- :dark_brown => '0;33',
49
- :dark_gray => '1;30',
50
- :gray => '0;37',
51
- :blue => '1;34',
52
- :green => '1;32',
53
- :cyan => '1;36',
54
- :red => '1;31',
55
- :purple => '1;35',
56
- :yellow => '1;33',
57
- :white => '1;37'
58
- }
59
-
60
- def _fmt(color, text, size = 0)
61
- text = super(color, text, size)
62
- if @options[:nc] or @options[:color] == 'no'
63
- text
64
- else
65
- "\033[#{COLORS[color]}m#{text}\033[0m"
66
- end
67
- end
68
-
69
- def _save_cursor
70
- print "\033[s"
71
- true
72
- end
73
-
74
- def _restore_cursor
75
- print "\033[u"
76
- true
77
- end
78
-
79
- #--
80
- # Adapted from:
81
- # https://github.com/jimweirich/rake/blob/master/lib/rake/application.rb
82
- # See Rake::Application#terminal_width
83
- #++
84
- def _screen_width
85
- if RbConfig::CONFIG['host_os'] =~
86
- /(aix|darwin|linux|(net|free|open)bsd|cygwin|solaris|irix|hpux)/i
87
- (_dynamic_width_stty.nonzero? || _dynamic_width_tput)
88
- else
89
- super
90
- end
91
- rescue Exception => e
92
- super
93
- end
94
-
95
- private
96
- def _dynamic_width_stty
97
- %x{stty size 2>/dev/null}.split[1].to_i
98
- end
99
- def _dynamic_width_tput
100
- %x{tput cols 2>/dev/null}.to_i
101
- end
1
+ #--
2
+ # Copyright (c) 2014 Patricio Zavolinsky
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ # of this software and associated documentation files (the "Software"), to deal
6
+ # in the Software without restriction, including without limitation the rights
7
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ # copies of the Software, and to permit persons to whom the Software is
9
+ # furnished to do so, subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in
12
+ # all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ # SOFTWARE.
21
+ #++
22
+
23
+ require_relative 'terminal'
24
+
25
+ # XTerm logger.
26
+ #
27
+ # This logger outputs colorized lines using xterm (VT100/2) escape
28
+ # sequences.
29
+ #
30
+ # XTerm logger options include:
31
+ # [<tt>nc</tt>, <tt>color</tt>] If set to 'no', prints text without using
32
+ # colors. Note that positional escape sequences
33
+ # will still be used to show progress. To disable
34
+ # escape sequences completely, consider using the
35
+ # Bauxite::Loggers::TerminalLogger logger
36
+ # instead.
37
+ #
38
+ class Bauxite::Loggers::XtermLogger < Bauxite::Loggers::TerminalLogger
39
+
40
+ protected
41
+ COLORS = { # :nodoc:
42
+ :black => '0;30',
43
+ :dark_blue => '0;34',
44
+ :dark_green => '0;32',
45
+ :dark_cyan => '0;36',
46
+ :dark_red => '0;31',
47
+ :dark_purple => '0;35',
48
+ :dark_brown => '0;33',
49
+ :dark_gray => '1;30',
50
+ :gray => '0;37',
51
+ :blue => '1;34',
52
+ :green => '1;32',
53
+ :cyan => '1;36',
54
+ :red => '1;31',
55
+ :purple => '1;35',
56
+ :yellow => '1;33',
57
+ :white => '1;37'
58
+ }
59
+
60
+ def _fmt(color, text, size = 0)
61
+ text = super(color, text, size)
62
+ if @options[:nc] or @options[:color] == 'no'
63
+ text
64
+ else
65
+ "\033[#{COLORS[color]}m#{text}\033[0m"
66
+ end
67
+ end
68
+
69
+ def _save_cursor
70
+ print "\033[s"
71
+ true
72
+ end
73
+
74
+ def _restore_cursor
75
+ print "\033[u"
76
+ true
77
+ end
78
+
79
+ #--
80
+ # Adapted from:
81
+ # https://github.com/jimweirich/rake/blob/master/lib/rake/application.rb
82
+ # See Rake::Application#terminal_width
83
+ #++
84
+ def _screen_width
85
+ if RbConfig::CONFIG['host_os'] =~
86
+ /(aix|darwin|linux|(net|free|open)bsd|cygwin|solaris|irix|hpux)/i
87
+ (_dynamic_width_stty.nonzero? || _dynamic_width_tput)
88
+ else
89
+ super
90
+ end
91
+ rescue Exception => e
92
+ super
93
+ end
94
+
95
+ private
96
+ def _dynamic_width_stty
97
+ %x{stty size 2>/dev/null}.split[1].to_i
98
+ end
99
+ def _dynamic_width_tput
100
+ %x{tput cols 2>/dev/null}.to_i
101
+ end
102
102
  end