tty 0.0.11 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (265) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +1 -0
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -0
  5. data/.travis.yml +16 -7
  6. data/CHANGELOG.md +6 -0
  7. data/Gemfile +18 -1
  8. data/README.md +55 -28
  9. data/Rakefile +5 -9
  10. data/images/tty.png +0 -0
  11. data/lib/tty.rb +7 -1
  12. data/lib/tty/coercer/boolean.rb +6 -9
  13. data/lib/tty/coercer/float.rb +14 -17
  14. data/lib/tty/coercer/integer.rb +14 -17
  15. data/lib/tty/coercer/range.rb +6 -7
  16. data/lib/tty/logger.rb +23 -9
  17. data/lib/tty/plugins.rb +3 -6
  18. data/lib/tty/plugins/plugin.rb +4 -7
  19. data/lib/tty/shell.rb +20 -12
  20. data/lib/tty/shell/question.rb +41 -48
  21. data/lib/tty/shell/question/modifier.rb +5 -8
  22. data/lib/tty/shell/question/validation.rb +8 -7
  23. data/lib/tty/shell/reader.rb +28 -19
  24. data/lib/tty/shell/response.rb +26 -22
  25. data/lib/tty/shell/statement.rb +13 -9
  26. data/lib/tty/shell/suggestion.rb +17 -13
  27. data/lib/tty/support/coercion.rb +5 -6
  28. data/lib/tty/support/conversion.rb +7 -6
  29. data/lib/tty/support/delegatable.rb +5 -5
  30. data/lib/tty/support/unicode.rb +3 -4
  31. data/lib/tty/support/utils.rb +1 -2
  32. data/lib/tty/system.rb +13 -6
  33. data/lib/tty/system/editor.rb +21 -18
  34. data/lib/tty/system/which.rb +3 -5
  35. data/lib/tty/table.rb +18 -22
  36. data/lib/tty/table/border.rb +2 -4
  37. data/lib/tty/table/border/ascii.rb +3 -2
  38. data/lib/tty/table/border/null.rb +1 -3
  39. data/lib/tty/table/border/row_line.rb +1 -4
  40. data/lib/tty/table/border/unicode.rb +3 -2
  41. data/lib/tty/table/border_dsl.rb +21 -17
  42. data/lib/tty/table/border_options.rb +6 -5
  43. data/lib/tty/table/column_set.rb +11 -7
  44. data/lib/tty/table/columns.rb +19 -16
  45. data/lib/tty/table/error.rb +1 -3
  46. data/lib/tty/table/field.rb +30 -12
  47. data/lib/tty/table/header.rb +18 -9
  48. data/lib/tty/table/indentation.rb +1 -3
  49. data/lib/tty/table/operation/alignment.rb +8 -9
  50. data/lib/tty/table/operation/alignment_set.rb +6 -5
  51. data/lib/tty/table/operation/escape.rb +3 -3
  52. data/lib/tty/table/operation/filter.rb +3 -4
  53. data/lib/tty/table/operation/truncation.rb +3 -3
  54. data/lib/tty/table/operation/wrapped.rb +3 -4
  55. data/lib/tty/table/operations.rb +19 -22
  56. data/lib/tty/table/orientation.rb +5 -5
  57. data/lib/tty/table/orientation/horizontal.rb +9 -6
  58. data/lib/tty/table/orientation/vertical.rb +10 -7
  59. data/lib/tty/table/padder.rb +46 -8
  60. data/lib/tty/table/renderer.rb +21 -14
  61. data/lib/tty/table/renderer/ascii.rb +6 -5
  62. data/lib/tty/table/renderer/basic.rb +18 -19
  63. data/lib/tty/table/renderer/unicode.rb +11 -5
  64. data/lib/tty/table/row.rb +36 -20
  65. data/lib/tty/table/transformation.rb +6 -5
  66. data/lib/tty/table/validatable.rb +32 -17
  67. data/lib/tty/terminal.rb +26 -42
  68. data/lib/tty/terminal/color.rb +10 -12
  69. data/lib/tty/terminal/echo.rb +4 -7
  70. data/lib/tty/terminal/home.rb +3 -10
  71. data/lib/tty/terminal/pager.rb +11 -10
  72. data/lib/tty/terminal/pager/basic.rb +3 -6
  73. data/lib/tty/terminal/pager/system.rb +2 -5
  74. data/lib/tty/text.rb +7 -10
  75. data/lib/tty/text/distance.rb +2 -4
  76. data/lib/tty/text/truncation.rb +1 -3
  77. data/lib/tty/text/wrapping.rb +1 -3
  78. data/lib/tty/vector.rb +3 -5
  79. data/lib/tty/version.rb +2 -2
  80. data/spec/spec_helper.rb +4 -11
  81. data/spec/tty/coercer/boolean/coerce_spec.rb +19 -16
  82. data/spec/tty/coercer/float/coerce_spec.rb +6 -4
  83. data/spec/tty/coercer/integer/coerce_spec.rb +5 -4
  84. data/spec/tty/coercer/range/coerce_spec.rb +12 -11
  85. data/spec/tty/logger/log_spec.rb +23 -0
  86. data/spec/tty/logger/new_spec.rb +14 -14
  87. data/spec/tty/logger/valid_level_spec.rb +6 -6
  88. data/spec/tty/plugins/find_spec.rb +4 -4
  89. data/spec/tty/plugins/load_spec.rb +4 -5
  90. data/spec/tty/plugins/plugin/load_spec.rb +10 -8
  91. data/spec/tty/plugins/plugin/new_spec.rb +7 -7
  92. data/spec/tty/shell/ask_spec.rb +6 -7
  93. data/spec/tty/shell/error_spec.rb +1 -2
  94. data/spec/tty/shell/print_table_spec.rb +1 -2
  95. data/spec/tty/shell/question/argument_spec.rb +1 -1
  96. data/spec/tty/shell/question/character_spec.rb +11 -3
  97. data/spec/tty/shell/question/default_spec.rb +3 -3
  98. data/spec/tty/shell/question/in_spec.rb +1 -1
  99. data/spec/tty/shell/question/initialize_spec.rb +8 -11
  100. data/spec/tty/shell/question/modifier/apply_to_spec.rb +8 -4
  101. data/spec/tty/shell/question/modifier/letter_case_spec.rb +4 -4
  102. data/spec/tty/shell/question/modifier/whitespace_spec.rb +5 -5
  103. data/spec/tty/shell/question/modify_spec.rb +1 -1
  104. data/spec/tty/shell/question/valid_spec.rb +4 -4
  105. data/spec/tty/shell/question/validate_spec.rb +4 -4
  106. data/spec/tty/shell/question/validation/coerce_spec.rb +2 -3
  107. data/spec/tty/shell/question/validation/valid_value_spec.rb +3 -3
  108. data/spec/tty/shell/reader/getc_spec.rb +16 -14
  109. data/spec/tty/shell/response/read_bool_spec.rb +1 -1
  110. data/spec/tty/shell/response/read_char_spec.rb +1 -2
  111. data/spec/tty/shell/response/read_date_spec.rb +1 -1
  112. data/spec/tty/shell/response/read_email_spec.rb +1 -1
  113. data/spec/tty/shell/response/read_multiple_spec.rb +3 -4
  114. data/spec/tty/shell/response/read_number_spec.rb +1 -2
  115. data/spec/tty/shell/response/read_range_spec.rb +2 -2
  116. data/spec/tty/shell/response/read_spec.rb +7 -7
  117. data/spec/tty/shell/response/read_string_spec.rb +2 -2
  118. data/spec/tty/shell/say_spec.rb +1 -1
  119. data/spec/tty/shell/statement/initialize_spec.rb +3 -3
  120. data/spec/tty/shell/suggest_spec.rb +1 -1
  121. data/spec/tty/shell/warn_spec.rb +1 -2
  122. data/spec/tty/support/coercion_spec.rb +10 -10
  123. data/spec/tty/support/conversion_spec.rb +9 -9
  124. data/spec/tty/support/delegatable_spec.rb +7 -5
  125. data/spec/tty/support/equatable_spec.rb +32 -34
  126. data/spec/tty/support/fixtures/classes.rb +4 -2
  127. data/spec/tty/system/editor/available_spec.rb +12 -12
  128. data/spec/tty/system/editor/build_spec.rb +8 -16
  129. data/spec/tty/system/editor/command_spec.rb +3 -2
  130. data/spec/tty/system/editor/executables_spec.rb +3 -3
  131. data/spec/tty/system/editor/invoke_spec.rb +10 -14
  132. data/spec/tty/system/editor/open_spec.rb +9 -7
  133. data/spec/tty/system/platform_spec.rb +32 -13
  134. data/spec/tty/system/which/which_spec.rb +9 -9
  135. data/spec/tty/system/which_spec.rb +4 -4
  136. data/spec/tty/table/access_spec.rb +24 -21
  137. data/spec/tty/table/add_row_spec.rb +2 -2
  138. data/spec/tty/table/border/ascii/rendering_spec.rb +13 -13
  139. data/spec/tty/table/border/new_spec.rb +5 -4
  140. data/spec/tty/table/border/null/rendering_spec.rb +12 -12
  141. data/spec/tty/table/border/options/from_spec.rb +2 -3
  142. data/spec/tty/table/border/options/new_spec.rb +4 -5
  143. data/spec/tty/table/border/unicode/rendering_spec.rb +10 -10
  144. data/spec/tty/table/border_options/new_spec.rb +20 -0
  145. data/spec/tty/table/border_options/update_spec.rb +18 -0
  146. data/spec/tty/table/column_set/extract_widths_spec.rb +1 -1
  147. data/spec/tty/table/column_set/total_width_spec.rb +2 -2
  148. data/spec/tty/table/column_set/widths_from_spec.rb +1 -2
  149. data/spec/tty/table/columns/enforce_spec.rb +2 -2
  150. data/spec/tty/table/columns/widths_spec.rb +2 -0
  151. data/spec/tty/table/data_spec.rb +3 -3
  152. data/spec/tty/table/each_spec.rb +9 -11
  153. data/spec/tty/table/each_with_index_spec.rb +8 -9
  154. data/spec/tty/table/empty_spec.rb +3 -3
  155. data/spec/tty/table/eql_spec.rb +6 -6
  156. data/spec/tty/table/field/equality_spec.rb +11 -11
  157. data/spec/tty/table/field/length_spec.rb +4 -4
  158. data/spec/tty/table/field/lines_spec.rb +3 -3
  159. data/spec/tty/table/field/new_spec.rb +7 -7
  160. data/spec/tty/table/field/width_spec.rb +6 -4
  161. data/spec/tty/table/filter_spec.rb +3 -3
  162. data/spec/tty/table/header/call_spec.rb +3 -3
  163. data/spec/tty/table/header/height_spec.rb +1 -1
  164. data/spec/tty/table/header/new_spec.rb +5 -5
  165. data/spec/tty/table/header/set_spec.rb +9 -4
  166. data/spec/tty/table/header/to_ary_spec.rb +4 -4
  167. data/spec/tty/table/header_spec.rb +3 -4
  168. data/spec/tty/table/indentation/insert_indent_spec.rb +1 -1
  169. data/spec/tty/table/initialize_spec.rb +13 -13
  170. data/spec/tty/table/operation/alignment/format_spec.rb +5 -5
  171. data/spec/tty/table/operation/alignment/new_spec.rb +4 -4
  172. data/spec/tty/table/operation/alignment_set/call_spec.rb +11 -11
  173. data/spec/tty/table/operation/alignment_set/each_spec.rb +3 -3
  174. data/spec/tty/table/operation/alignment_set/new_spec.rb +6 -6
  175. data/spec/tty/table/operation/alignment_set/to_ary_spec.rb +4 -4
  176. data/spec/tty/table/operation/escape/call_spec.rb +1 -1
  177. data/spec/tty/table/operation/filter/call_spec.rb +1 -1
  178. data/spec/tty/table/operation/truncation/call_spec.rb +1 -1
  179. data/spec/tty/table/operation/truncation/truncate_spec.rb +4 -4
  180. data/spec/tty/table/operation/wrapped/call_spec.rb +1 -1
  181. data/spec/tty/table/operation/wrapped/wrap_spec.rb +3 -3
  182. data/spec/tty/table/operations/new_spec.rb +1 -1
  183. data/spec/tty/table/options_spec.rb +8 -8
  184. data/spec/tty/table/orientation_spec.rb +15 -13
  185. data/spec/tty/table/padder/parse_spec.rb +1 -1
  186. data/spec/tty/table/padder/to_s_spec.rb +14 -0
  187. data/spec/tty/table/padding_spec.rb +1 -1
  188. data/spec/tty/table/properties_spec.rb +9 -8
  189. data/spec/tty/table/render_spec.rb +8 -5
  190. data/spec/tty/table/render_with_spec.rb +5 -4
  191. data/spec/tty/table/renderer/ascii/indentation_spec.rb +1 -1
  192. data/spec/tty/table/renderer/ascii/padding_spec.rb +1 -1
  193. data/spec/tty/table/renderer/ascii/render_spec.rb +7 -7
  194. data/spec/tty/table/renderer/ascii/resizing_spec.rb +1 -1
  195. data/spec/tty/table/renderer/ascii/separator_spec.rb +2 -2
  196. data/spec/tty/table/renderer/basic/alignment_spec.rb +5 -5
  197. data/spec/tty/table/renderer/basic/coloring_spec.rb +1 -1
  198. data/spec/tty/table/renderer/basic/extract_column_widths_spec.rb +6 -6
  199. data/spec/tty/table/renderer/basic/filter_spec.rb +4 -4
  200. data/spec/tty/table/renderer/basic/indentation_spec.rb +5 -3
  201. data/spec/tty/table/renderer/basic/multiline_content_spec.rb +10 -10
  202. data/spec/tty/table/renderer/basic/new_spec.rb +2 -2
  203. data/spec/tty/table/renderer/basic/options_spec.rb +9 -9
  204. data/spec/tty/table/renderer/basic/padding_spec.rb +1 -1
  205. data/spec/tty/table/renderer/basic/render_spec.rb +8 -8
  206. data/spec/tty/table/renderer/basic/resizing_spec.rb +1 -1
  207. data/spec/tty/table/renderer/basic/separator_spec.rb +2 -2
  208. data/spec/tty/table/renderer/basic/truncation_spec.rb +4 -4
  209. data/spec/tty/table/renderer/basic/wrapping_spec.rb +4 -4
  210. data/spec/tty/table/renderer/border_spec.rb +21 -21
  211. data/spec/tty/table/renderer/render_spec.rb +7 -7
  212. data/spec/tty/table/renderer/select_spec.rb +4 -4
  213. data/spec/tty/table/renderer/style_spec.rb +19 -19
  214. data/spec/tty/table/renderer/unicode/indentation_spec.rb +1 -1
  215. data/spec/tty/table/renderer/unicode/padding_spec.rb +1 -1
  216. data/spec/tty/table/renderer/unicode/render_spec.rb +6 -6
  217. data/spec/tty/table/renderer/unicode/separator_spec.rb +2 -2
  218. data/spec/tty/table/renderer_spec.rb +1 -1
  219. data/spec/tty/table/rotate_spec.rb +27 -27
  220. data/spec/tty/table/row/access_spec.rb +3 -3
  221. data/spec/tty/table/row/call_spec.rb +4 -4
  222. data/spec/tty/table/row/data_spec.rb +5 -5
  223. data/spec/tty/table/row/each_spec.rb +1 -1
  224. data/spec/tty/table/row/equality_spec.rb +16 -16
  225. data/spec/tty/table/row/height_spec.rb +1 -1
  226. data/spec/tty/table/row/new_spec.rb +11 -11
  227. data/spec/tty/table/row/to_ary_spec.rb +3 -3
  228. data/spec/tty/table/to_s_spec.rb +8 -8
  229. data/spec/tty/table/validatable/validate_options_spec.rb +5 -5
  230. data/spec/tty/table/validatable_spec.rb +14 -1
  231. data/spec/tty/terminal/color/code_spec.rb +3 -3
  232. data/spec/tty/terminal/color/remove_spec.rb +8 -9
  233. data/spec/tty/terminal/color/set_spec.rb +5 -6
  234. data/spec/tty/terminal/color_spec.rb +3 -5
  235. data/spec/tty/terminal/echo_spec.rb +3 -4
  236. data/spec/tty/terminal/home_spec.rb +12 -14
  237. data/spec/tty/terminal/page_spec.rb +5 -4
  238. data/spec/tty/terminal/pager/available_spec.rb +11 -11
  239. data/spec/tty/terminal/pager/basic/page_spec.rb +8 -8
  240. data/spec/tty/terminal/pager/command_spec.rb +2 -2
  241. data/spec/tty/terminal/pager/executables_spec.rb +3 -3
  242. data/spec/tty/terminal/pager/page_spec.rb +8 -10
  243. data/spec/tty/terminal/pager/system/page_spec.rb +8 -8
  244. data/spec/tty/terminal/size_spec.rb +39 -36
  245. data/spec/tty/text/distance/distance_spec.rb +13 -13
  246. data/spec/tty/text/distance/initialize_spec.rb +4 -4
  247. data/spec/tty/text/distance_spec.rb +2 -2
  248. data/spec/tty/text/truncate_spec.rb +2 -3
  249. data/spec/tty/text/truncation/initialize_spec.rb +9 -9
  250. data/spec/tty/text/truncation/truncate_spec.rb +14 -14
  251. data/spec/tty/text/wrap_spec.rb +2 -3
  252. data/spec/tty/text/wrapping/initialize_spec.rb +7 -7
  253. data/spec/tty/text/wrapping/wrap_spec.rb +11 -11
  254. data/spec/tty/tty_spec.rb +22 -0
  255. data/spec/tty/vector/new_spec.rb +7 -7
  256. data/tasks/console.rake +10 -0
  257. data/tasks/coverage.rake +11 -0
  258. data/tasks/metrics/cane.rake +2 -0
  259. data/tasks/metrics/flog.rake +2 -0
  260. data/tasks/metrics/heckle.rake +15 -0
  261. data/tasks/metrics/reek.rake +2 -0
  262. data/tasks/spec.rake +29 -0
  263. data/tty.gemspec +5 -12
  264. metadata +34 -91
  265. data/.rvmrc +0 -34
@@ -1,8 +1,7 @@
1
- # -*- encoding: utf-8 -*-
1
+ # encoding: utf-8
2
2
 
3
3
  module TTY
4
4
  class Terminal
5
-
6
5
  # Return default width of terminal
7
6
  #
8
7
  # @example
@@ -23,45 +22,30 @@ module TTY
23
22
  # @api public
24
23
  attr_reader :default_height
25
24
 
25
+ # Return access to color terminal
26
+ #
27
+ # @return [TTY::Terminal::Color]
28
+ #
26
29
  # @api public
27
30
  attr_reader :color
28
31
 
29
32
  # Output pager
30
33
  #
31
- # @return [Pager]
34
+ # @return [TTY::Terminal::Pager]
32
35
  #
33
36
  # @api public
34
37
  attr_reader :pager
35
38
 
36
- def initialize
39
+ # Initialize a Terminal
40
+ #
41
+ # @api public
42
+ def initialize(options = {})
37
43
  @color = TTY::Terminal::Color.new(self.color?)
38
44
  @echo = TTY::Terminal::Echo.new
39
45
  @pager = TTY::Terminal::Pager
40
- @default_width = 80
41
- @default_height = 24
42
- end
43
-
44
- # Set default width of terminal
45
- #
46
- # @param [Integer] width
47
- #
48
- # @return [Integer]
49
- #
50
- # @api public
51
- def default_width=(width)
52
- @default_width = width
53
- end
54
-
55
- # Set default height of terminal
56
- #
57
- # @example
58
- # default_height = TTY::Terminal.default_height
59
- #
60
- # @return [Integer]
61
- #
62
- # @api public
63
- def default_height=(height)
64
- @default_height = height
46
+ @home = Home.new
47
+ @default_width = options.fetch(:default_width) { 80 }
48
+ @default_height = options.fetch(:default_height) { 24 }
65
49
  end
66
50
 
67
51
  # Determine current width
@@ -72,9 +56,9 @@ module TTY
72
56
  def width
73
57
  env_tty_columns = ENV['TTY_COLUMNS']
74
58
  if env_tty_columns =~ /^\d+$/
75
- result = env_tty_columns.to_i
59
+ env_tty_columns.to_i
76
60
  else
77
- result = TTY::System.unix? ? dynamic_width : default_width
61
+ TTY::System.unix? ? dynamic_width : default_width
78
62
  end
79
63
  rescue
80
64
  default_width
@@ -82,16 +66,18 @@ module TTY
82
66
 
83
67
  # Determine current height
84
68
  #
69
+ # @return [Integer] height
70
+ #
85
71
  # @api public
86
72
  def height
87
73
  env_tty_lines = ENV['TTY_LINES']
88
74
  if env_tty_lines =~ /^\d+$/
89
- result = env_tty_lines.to_i
75
+ env_tty_lines.to_i
90
76
  else
91
- result = TTY::System.unix? ? dynamic_height : self.default_height
77
+ TTY::System.unix? ? dynamic_height : default_height
92
78
  end
93
79
  rescue
94
- self.default_height
80
+ default_height
95
81
  end
96
82
 
97
83
  # Calculate dynamic width of the terminal
@@ -118,7 +104,7 @@ module TTY
118
104
  #
119
105
  # @api public
120
106
  def dynamic_width_stty
121
- %x{stty size 2>/dev/null}.split[1].to_i
107
+ %x(tty size 2>/dev/null).split[1].to_i
122
108
  end
123
109
 
124
110
  # Detect terminal height with stty utility
@@ -127,7 +113,7 @@ module TTY
127
113
  #
128
114
  # @api public
129
115
  def dynamic_height_stty
130
- %x{stty size 2>/dev/null}.split[0].to_i
116
+ %x(tty size 2>/dev/null).split[0].to_i
131
117
  end
132
118
 
133
119
  # Detect terminal width with tput utility
@@ -136,7 +122,7 @@ module TTY
136
122
  #
137
123
  # @api public
138
124
  def dynamic_width_tput
139
- %x{tput cols 2>/dev/null}.to_i
125
+ %x(tput cols 2>/dev/null).to_i
140
126
  end
141
127
 
142
128
  # Detect terminal height with tput utility
@@ -145,7 +131,7 @@ module TTY
145
131
  #
146
132
  # @api public
147
133
  def dynamic_height_tput
148
- %x{tput lines 2>/dev/null}.to_i
134
+ %x(tput lines 2>/dev/null).to_i
149
135
  end
150
136
 
151
137
  # Check if terminal supports color
@@ -154,7 +140,7 @@ module TTY
154
140
  #
155
141
  # @api public
156
142
  def color?
157
- %x{tput colors 2>/dev/null}.to_i > 2
143
+ %x(tput colors 2>/dev/null).to_i > 2
158
144
  end
159
145
 
160
146
  # Switch echo on
@@ -176,7 +162,7 @@ module TTY
176
162
  # @param [Boolean] is_on
177
163
  #
178
164
  # @api public
179
- def echo(is_on=true, &block)
165
+ def echo(is_on = true, &block)
180
166
  @echo.echo(is_on, &block)
181
167
  end
182
168
 
@@ -186,7 +172,6 @@ module TTY
186
172
  #
187
173
  # @api public
188
174
  def home
189
- @home ||= Home.new
190
175
  @home.home
191
176
  end
192
177
 
@@ -199,6 +184,5 @@ module TTY
199
184
  def page(text)
200
185
  @pager.page(text)
201
186
  end
202
-
203
187
  end # Terminal
204
188
  end # TTY
@@ -1,11 +1,9 @@
1
- # -*- encoding: utf-8 -*-
1
+ # encoding: utf-8
2
2
 
3
3
  module TTY
4
4
  class Terminal
5
-
6
5
  # A class responsible for coloring strings.
7
6
  class Color
8
-
9
7
  # Embed in a String to clear all previous ANSI sequences.
10
8
  CLEAR = "\e[0m"
11
9
  # The start of an ANSI bold sequence.
@@ -13,7 +11,7 @@ module TTY
13
11
  # The start of an ANSI underlined sequence.
14
12
  UNDERLINE = "\e[4m"
15
13
 
16
- STYLES = %w[ BOLD CLEAR UNDERLINE ].freeze
14
+ STYLES = %w( BOLD CLEAR UNDERLINE ).freeze
17
15
 
18
16
  # Escape codes for text color.
19
17
  BLACK = "\e[30m"
@@ -60,7 +58,7 @@ module TTY
60
58
  # Initialize a Terminal Color
61
59
  #
62
60
  # @api public
63
- def initialize(enabled=false)
61
+ def initialize(enabled = false)
64
62
  @enabled = enabled
65
63
  end
66
64
 
@@ -73,6 +71,8 @@ module TTY
73
71
 
74
72
  # Check if coloring is on
75
73
  #
74
+ # @return [Boolean]
75
+ #
76
76
  # @api public
77
77
  def enabled?
78
78
  @enabled
@@ -134,7 +134,7 @@ module TTY
134
134
  #
135
135
  # @api public
136
136
  def names
137
- (STYLES + BACKGROUND_COLORS + TEXT_COLORS).map { |color| color.to_s.downcase }
137
+ (STYLES + BACKGROUND_COLORS + TEXT_COLORS).map { |col| col.to_s.downcase }
138
138
  end
139
139
 
140
140
  protected
@@ -148,12 +148,10 @@ module TTY
148
148
 
149
149
  # @api private
150
150
  def validate(*colors)
151
- unless colors.all? { |color| names.include?(color.to_s) }
152
- raise ArgumentError, "Bad color or unintialized constant, valid colors are: #{names.join(', ')}."
153
- end
151
+ return if colors.all? { |color| names.include?(color.to_s) }
152
+ raise ArgumentError, 'Bad color or unintialized constant, ' \
153
+ " valid colors are: #{names.join(', ')}."
154
154
  end
155
-
156
155
  end # Color
157
-
158
- end
156
+ end # Terminal
159
157
  end # TTY
@@ -1,11 +1,9 @@
1
- # -*- encoding: utf-8 -*-
1
+ # encoding: utf-8
2
2
 
3
3
  module TTY
4
4
  class Terminal
5
-
6
5
  # A class responsible for toggling echo.
7
6
  class Echo
8
-
9
7
  # Turn echo on
10
8
  #
11
9
  # @api public
@@ -26,16 +24,15 @@ module TTY
26
24
  def echo(is_on=true, &block)
27
25
  value = nil
28
26
  begin
29
- self.off unless is_on
27
+ off unless is_on
30
28
  value = block.call if block_given?
31
- self.on
29
+ on
32
30
  return value
33
31
  rescue NoMethodError, Interrupt
34
- self.on
32
+ on
35
33
  exit
36
34
  end
37
35
  end
38
-
39
36
  end # Echo
40
37
  end # Terminal
41
38
  end # TTY
@@ -1,11 +1,9 @@
1
- # -*- encoding: utf-8 -*-
1
+ # encoding: utf-8
2
2
 
3
3
  module TTY
4
4
  class Terminal
5
-
6
5
  # A class responsible for locating user home
7
6
  class Home
8
-
9
7
  # Find user home
10
8
  #
11
9
  # @api public
@@ -17,15 +15,10 @@ module TTY
17
15
  require 'etc'
18
16
  File.expand_path("~#{Etc.getlogin}")
19
17
  rescue
20
- if TTY::System.windows?
21
- "C:/"
22
- else
23
- "/"
24
- end
18
+ TTY::System.windows? ? 'C:/' : '/'
25
19
  end
26
20
  end
27
21
  end
28
-
29
- end #Home
22
+ end # Home
30
23
  end # Terminal
31
24
  end # TTY
@@ -1,8 +1,7 @@
1
- # -*- encoding: utf-8 -*-
1
+ # encoding: utf-8
2
2
 
3
3
  module TTY
4
4
  class Terminal
5
-
6
5
  # A class responsible for paging text inside terminal
7
6
  class Pager
8
7
 
@@ -10,14 +9,16 @@ module TTY
10
9
 
11
10
  attr_reader :text
12
11
 
12
+ @command = nil
13
+
13
14
  # Initialize a Pager
14
15
  #
15
16
  # @param [String] text
16
17
  # the text to page
17
18
  #
18
19
  # @api public
19
- def initialize(text=nil)
20
- @text = text
20
+ def initialize(text = nil)
21
+ @text = text
21
22
  @enabled = true
22
23
  end
23
24
 
@@ -36,8 +37,8 @@ module TTY
36
37
  #
37
38
  # @api private
38
39
  def self.executables
39
- [ ENV['GIT_PAGER'], `git config --get-all core.pager`.split.first,
40
- ENV['PAGER'], 'less -isr', 'more', 'cat', 'pager' ]
40
+ [ENV['GIT_PAGER'], `git config --get-all core.pager`.split.first,
41
+ ENV['PAGER'], 'less -isr', 'more', 'cat', 'pager']
41
42
  end
42
43
 
43
44
  # Find first available system command for paging
@@ -48,7 +49,7 @@ module TTY
48
49
  #
49
50
  # @api public
50
51
  def self.available(*commands)
51
- commands = commands.empty? ? self.executables : commands
52
+ commands = commands.empty? ? executables : commands
52
53
  commands.compact.uniq.find { |cmd| System.exists?(cmd) }
53
54
  end
54
55
 
@@ -59,7 +60,8 @@ module TTY
59
60
  !!available
60
61
  end
61
62
 
62
- # Finds command to execute pager from shell commands unless configured is provided.
63
+ # Finds command to execute pager from shell commands
64
+ # unless configured is provided.
63
65
  #
64
66
  # @param [Array[String]] commands
65
67
  #
@@ -67,7 +69,7 @@ module TTY
67
69
  #
68
70
  # @api private
69
71
  def self.command(*commands)
70
- @command = if (@command && commands.empty?)
72
+ @command = if @command && commands.empty?
71
73
  @command
72
74
  else
73
75
  available(*commands)
@@ -89,7 +91,6 @@ module TTY
89
91
  BasicPager.new(text).page
90
92
  end
91
93
  end
92
-
93
94
  end # Pager
94
95
  end # Terminal
95
96
  end # TTY
@@ -1,14 +1,12 @@
1
- # -*- encoding: utf-8 -*-
1
+ # encoding: utf-8
2
2
 
3
3
  module TTY
4
4
  class Terminal
5
-
6
5
  # A class responsible for paging text
7
6
  class BasicPager < Pager
8
-
9
7
  PROMPT_HEIGHT = 3
10
8
 
11
- PAGE_BREAK = "--- Press enter/return to continue (or q to quit) ---"
9
+ PAGE_BREAK = '--- Press enter/return to continue (or q to quit) ---'
12
10
 
13
11
  # Use ruby to page output text
14
12
  #
@@ -37,7 +35,7 @@ module TTY
37
35
  question = TTY.shell.ask "\n#{PAGE_BREAK}"
38
36
  return false if question.read_string[/q/i]
39
37
  end
40
- return true
38
+ true
41
39
  end
42
40
 
43
41
  # Determine current page size
@@ -46,7 +44,6 @@ module TTY
46
44
  def page_size
47
45
  @page_size ||= TTY.terminal.height - PROMPT_HEIGHT
48
46
  end
49
-
50
47
  end # BasicPager
51
48
  end # Terminal
52
49
  end # TTY
@@ -1,11 +1,9 @@
1
- # -*- encoding: utf-8 -*-
1
+ # encoding: utf-8
2
2
 
3
3
  module TTY
4
4
  class Terminal
5
-
6
5
  # A class responsible for paging text
7
6
  class SystemPager < Pager
8
-
9
7
  # Use system command to page output text
10
8
  #
11
9
  # @api public
@@ -24,7 +22,7 @@ module TTY
24
22
  begin
25
23
  Kernel.exec(Pager.command)
26
24
  rescue
27
- Kernel.exec "/bin/sh", "-c", command
25
+ Kernel.exec '/bin/sh', '-c', command
28
26
  end
29
27
  else
30
28
  # child process
@@ -33,7 +31,6 @@ module TTY
33
31
  read_io.close
34
32
  end
35
33
  end
36
-
37
34
  end # SystemPager
38
35
  end # Terminal
39
36
  end # TTY
@@ -1,13 +1,11 @@
1
- # -*- encoding: utf-8 -*-
1
+ # encoding: utf-8
2
2
 
3
3
  module TTY
4
-
5
4
  # A class responsible for text manipulations
6
5
  class Text
6
+ SPACE = ' '
7
7
 
8
- SPACE = " ".freeze
9
-
10
- NEWLINE = "\n".freeze
8
+ NEWLINE = "\n"
11
9
 
12
10
  DEFAULT_WIDTH = 80.freeze
13
11
 
@@ -24,9 +22,9 @@ module TTY
24
22
  # the second string for comparison
25
23
  #
26
24
  # @example
27
- # distance("which", "witch")
28
- # # => 2
25
+ # distance("which", "witch") # => 2
29
26
  #
27
+ # @api public
30
28
  def self.distance(first, second, *args)
31
29
  Distance.new(first, second, *args).distance
32
30
  end
@@ -50,10 +48,10 @@ module TTY
50
48
  # wrap("Some longish text", 8)
51
49
  # # => "Some\nlongish\ntext"
52
50
  #
53
- # wrap("Some longish text", :length => 8)
51
+ # wrap("Some longish text", length: 8)
54
52
  # # => "Some\nlongish\ntext"
55
53
  #
56
- # wrap("Some longish text", 8, :indent => 4)
54
+ # wrap("Some longish text", 8, indent: 4)
57
55
  # # => > Some
58
56
  # > longish
59
57
  # > text
@@ -96,6 +94,5 @@ module TTY
96
94
  def self.truncate(text, *args)
97
95
  Truncation.new(text, *args).truncate
98
96
  end
99
-
100
97
  end # Text
101
98
  end # TTY