tty 0.0.11 → 0.1.0

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 (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 Table
5
-
6
5
  # A class responsible for indenting table representation
7
6
  class Indentation
8
7
 
@@ -48,7 +47,6 @@ module TTY
48
47
  line = line.is_a?(Array) ? line[0] : line
49
48
  line.insert(0, indentation) if line
50
49
  end
51
-
52
50
  end # Indentation
53
51
  end # Table
54
52
  end # TTY
@@ -1,10 +1,11 @@
1
- # -*- encoding: utf-8 -*-
1
+ # encoding: utf-8
2
2
 
3
3
  module TTY
4
4
  class Table
5
5
  module Operation
6
-
7
6
  # A class representing an alignment of cell data.
7
+ #
8
+ # @api private
8
9
  class Alignment
9
10
  include TTY::Coercion
10
11
 
@@ -27,7 +28,7 @@ module TTY
27
28
  # raise if the alignment is not supported type
28
29
  #
29
30
  # @api private
30
- def initialize(type=nil)
31
+ def initialize(type = nil)
31
32
  @type = coerce_to((type || LEFT), Symbol, :to_sym)
32
33
  assert_valid_type
33
34
  end
@@ -41,9 +42,8 @@ module TTY
41
42
  #
42
43
  # @api private
43
44
  def assert_valid_type
44
- unless supported.include? type
45
- raise TypeError, "Alignment must be one of: #{supported.join(' ')}"
46
- end
45
+ return if supported.include?(type)
46
+ fail TypeError, "Alignment must be one of: #{supported.join(' ')}"
47
47
  end
48
48
 
49
49
  # List supported alignment types
@@ -67,7 +67,7 @@ module TTY
67
67
  # @return [String] aligned
68
68
  #
69
69
  # @api public
70
- def format(field, column_width, space='')
70
+ def format(field, column_width, space = '')
71
71
  case type
72
72
  when :left
73
73
  "%-#{column_width}s#{space}" % field.to_s
@@ -78,7 +78,7 @@ module TTY
78
78
  end
79
79
  end
80
80
 
81
- private
81
+ private
82
82
 
83
83
  # Center aligns field
84
84
  #
@@ -101,7 +101,6 @@ module TTY
101
101
  "#{field}#{space}"
102
102
  end
103
103
  end
104
-
105
104
  end # Alignment
106
105
  end # Operation
107
106
  end # Table
@@ -1,15 +1,17 @@
1
- # -*- encoding: utf-8 -*-
1
+ # encoding: utf-8
2
2
 
3
3
  module TTY
4
4
  class Table
5
5
  module Operation
6
-
7
6
  # A class which responsiblity is to align table rows and header.
8
7
  class AlignmentSet < Vector
9
8
 
10
9
  attr_reader :widths
11
10
 
12
- def initialize(aligns, widths=nil)
11
+ # Initialize an AlignmentSet
12
+ #
13
+ # @api private
14
+ def initialize(aligns, widths = nil)
13
15
  @elements = convert_to_array(aligns)
14
16
  @widths = widths
15
17
  end
@@ -48,7 +50,7 @@ module TTY
48
50
  align_field(field, col)
49
51
  end
50
52
 
51
- private
53
+ private
52
54
 
53
55
  # Align each field in a row
54
56
  #
@@ -68,7 +70,6 @@ module TTY
68
70
  alignment = Alignment.new(field.align || self[col])
69
71
  field.value = alignment.format(field, column_width)
70
72
  end
71
-
72
73
  end # AlignmentSet
73
74
  end # Operation
74
75
  end # Table
@@ -1,10 +1,11 @@
1
- # -*- encoding: utf-8 -*-
1
+ # encoding: utf-8
2
2
 
3
3
  module TTY
4
4
  class Table
5
5
  module Operation
6
-
7
6
  # A class responsible for escaping special chars in a table field
7
+ #
8
+ # @api private
8
9
  class Escape
9
10
 
10
11
  # Escape special characters in a table field
@@ -23,7 +24,6 @@ module TTY
23
24
  val.dump.gsub('"', '')
24
25
  end
25
26
  end
26
-
27
27
  end # Escape
28
28
  end # Operation
29
29
  end # Table
@@ -1,12 +1,12 @@
1
- # -*- encoding: utf-8 -*-
1
+ # encoding: utf-8
2
2
 
3
3
  module TTY
4
4
  class Table
5
5
  module Operation
6
-
7
6
  # A class responsible for transforming table field
7
+ #
8
+ # @api private
8
9
  class Filter
9
-
10
10
  # Initialize a Filter
11
11
  #
12
12
  # @api public
@@ -28,7 +28,6 @@ module TTY
28
28
  def call(field, row, col)
29
29
  field.value = @filter.call(field.value, row, col)
30
30
  end
31
-
32
31
  end # Filter
33
32
  end # Operation
34
33
  end # Table
@@ -1,10 +1,11 @@
1
- # -*- encoding: utf-8 -*-
1
+ # encoding: utf-8
2
2
 
3
3
  module TTY
4
4
  class Table
5
5
  module Operation
6
-
7
6
  # A class responsible for shortening text.
7
+ #
8
+ # @api private
8
9
  class Truncation
9
10
 
10
11
  attr_reader :widths
@@ -48,7 +49,6 @@ module TTY
48
49
  def truncate(string, width)
49
50
  TTY::Text.truncate(string, width)
50
51
  end
51
-
52
52
  end # Truncation
53
53
  end # Operation
54
54
  end # Table
@@ -1,10 +1,11 @@
1
- # -*- encoding: utf-8 -*-
1
+ # encoding: utf-8
2
2
 
3
3
  module TTY
4
4
  class Table
5
5
  module Operation
6
-
7
6
  # A class responsible for wrapping text.
7
+ #
8
+ # @api private
8
9
  class Wrapped
9
10
 
10
11
  attr_reader :widths
@@ -51,9 +52,7 @@ module TTY
51
52
  def wrap(string, width)
52
53
  TTY::Text.wrap(string, width, padding: padding)
53
54
  end
54
-
55
55
  end # Wrapped
56
56
  end # Operation
57
57
  end # Table
58
58
  end # TTY
59
-
@@ -1,17 +1,24 @@
1
- # -*- encoding: utf-8 -*-
1
+ # encoding: utf-8
2
2
 
3
3
  module TTY
4
4
  class Table
5
-
6
- # A class holding table field operations
5
+ # A class holding table field operations.
6
+ #
7
+ # @api private
7
8
  class Operations
8
-
9
9
  # The table
10
10
  #
11
11
  # @api private
12
12
  attr_reader :table
13
13
  private :table
14
14
 
15
+ # Available operations
16
+ #
17
+ # @return [Hash]
18
+ #
19
+ # @api public
20
+ attr_reader :operations
21
+
15
22
  # Initialize Operations
16
23
  #
17
24
  # @param [TTY::Table] table
@@ -20,23 +27,14 @@ module TTY
20
27
  # @return [Object]
21
28
  #
22
29
  # @api public
23
- def initialize(table, renderer=nil)
24
- @table = table
25
- @renderer = renderer # will be available to each operation
26
- end
27
-
28
- # Available operations
29
- #
30
- # @return [Hash]
31
- #
32
- # @api public
33
- def operations
34
- @operations ||= Hash.new { |hash, key| hash[key] = [] }
30
+ def initialize(table)
31
+ @table = table
32
+ @operations = Hash.new { |hash, key| hash[key] = [] }
35
33
  end
36
34
 
37
35
  # Add operation
38
36
  #
39
- # @param [Symbol] type
37
+ # @param [Symbol] operation_type
40
38
  # the operation type
41
39
  # @param [Object] object
42
40
  # the callable object
@@ -44,8 +42,8 @@ module TTY
44
42
  # @return [Hash]
45
43
  #
46
44
  # @api public
47
- def add(type, object)
48
- operations[type] << object
45
+ def add(operation_type, object)
46
+ operations[operation_type] << object
49
47
  end
50
48
 
51
49
  # Apply operations to a table row
@@ -59,14 +57,13 @@ module TTY
59
57
  #
60
58
  # @api public
61
59
  def run_operations(*args)
62
- types = args
60
+ operation_types = args
63
61
  table.each_with_index do |val, row, col|
64
- types.each do |type|
62
+ operation_types.each do |type|
65
63
  operations[type].each { |op| op.call(val, row, col) }
66
64
  end
67
65
  end
68
66
  end
69
-
70
67
  end # Operations
71
68
  end # Table
72
69
  end # TTY
@@ -1,11 +1,11 @@
1
- # -*- encoding: utf-8 -*-
1
+ # encoding: utf-8
2
2
 
3
3
  module TTY
4
4
  class Table
5
-
6
5
  # A class representing table orientation
6
+ #
7
+ # @api private
7
8
  class Orientation
8
-
9
9
  # The name for the orientation
10
10
  #
11
11
  # @api public
@@ -30,7 +30,8 @@ module TTY
30
30
  when /v|ert(ical)?/i
31
31
  Vertical.new :vertical
32
32
  else
33
- raise InvalidOrientationError, "orientation must be one of :horizontal, :vertical"
33
+ fail InvalidOrientationError,
34
+ 'orientation must be one of :horizontal, :vertical'
34
35
  end
35
36
  end
36
37
 
@@ -51,7 +52,6 @@ module TTY
51
52
  def horizontal?
52
53
  name == :horizontal
53
54
  end
54
-
55
55
  end # Orientation
56
56
  end # Table
57
57
  end # TTY
@@ -1,21 +1,25 @@
1
- # -*- encoding: utf-8 -*-
1
+ # encoding: utf-8
2
2
 
3
3
  module TTY
4
4
  class Table
5
-
6
5
  # A class representing table orientation
7
6
  class Orientation
8
-
9
7
  # A class responsible for horizontal table transformation
10
8
  class Horizontal < Orientation
11
-
9
+ # Rotate table horizontally
10
+ #
11
+ # @param [Table] table
12
+ #
13
+ # @return [nil]
14
+ #
15
+ # @api public
12
16
  def transform(table)
13
17
  table.rotate_horizontal
14
18
  end
15
19
 
16
20
  # Slice vertical table data into horizontal
17
21
  #
18
- # @param [TTY::Table] table
22
+ # @param [Table] table
19
23
  #
20
24
  # @api public
21
25
  def slice(table)
@@ -38,7 +42,6 @@ module TTY
38
42
  end
39
43
  [head, body]
40
44
  end
41
-
42
45
  end # Horizontal
43
46
  end # Orientation
44
47
  end # Table
@@ -1,21 +1,25 @@
1
- # -*- encoding: utf-8 -*-
1
+ # encoding: utf-8
2
2
 
3
3
  module TTY
4
4
  class Table
5
-
6
5
  # A class representing table orientation
7
6
  class Orientation
8
-
9
7
  # A class responsible for vertical table transformation
10
8
  class Vertical < Orientation
11
-
9
+ # Rotate table vertically
10
+ #
11
+ # @param [Table] table
12
+ #
13
+ # @return [nil]
14
+ #
15
+ # @api public
12
16
  def transform(table)
13
17
  table.rotate_vertical
14
18
  end
15
19
 
16
20
  # Slice horizontal table data into vertical
17
21
  #
18
- # @param [TTY::Table] table
22
+ # @param [Table] table
19
23
  #
20
24
  # @api public
21
25
  def slice(table)
@@ -24,11 +28,10 @@ module TTY
24
28
 
25
29
  head = header ? header : (0..row_size).map { |n| (n + 1).to_s }
26
30
 
27
- (0...row_size).inject([]) do |array, index|
31
+ (0...row_size).reduce([]) do |array, index|
28
32
  array + head.zip(table.rows[index]).map { |row| table.to_row(row) }
29
33
  end
30
34
  end
31
-
32
35
  end # Vertical
33
36
  end # Orientation
34
37
  end # Table
@@ -1,12 +1,18 @@
1
- # -*- encoding: utf-8 -*-
1
+ # encoding: utf-8
2
2
 
3
3
  module TTY
4
4
  class Table
5
-
6
5
  # A class responsible for processing table field padding
6
+ #
7
+ # Used internally by {Table::Renderer}
8
+ #
9
+ # @api private
7
10
  class Padder
8
11
  include TTY::Equatable
9
12
 
13
+ # Padding for the table cells
14
+ #
15
+ # @return [Array[Integer]]
10
16
  attr_reader :padding
11
17
 
12
18
  # Initialize a Padder
@@ -18,15 +24,32 @@ module TTY
18
24
 
19
25
  # Parse padding options
20
26
  #
27
+ # Turn possible values into 4 element array
28
+ #
29
+ # @example
30
+ # padder = TTY::Table::Padder.parse(5)
31
+ # padder.padding # => [5, 5, 5, 5]
32
+ #
21
33
  # @param [Object] value
22
34
  #
23
35
  # @return [TTY::Padder]
36
+ # the new padder with padding values
24
37
  #
25
38
  # @api public
26
39
  def self.parse(value = nil)
27
- return value if value.kind_of?(self)
40
+ return value if value.is_a?(self)
28
41
 
29
- padding = if value.class <= Numeric
42
+ new(convert_to_ary(value))
43
+ end
44
+
45
+ # Convert value to 4 element array
46
+ #
47
+ # @return [Array[Integer]]
48
+ # the 4 element padding array
49
+ #
50
+ # @api private
51
+ def self.convert_to_ary(value)
52
+ if value.class <= Numeric
30
53
  [value, value, value, value]
31
54
  elsif value.nil?
32
55
  []
@@ -35,9 +58,8 @@ module TTY
35
58
  elsif value.size == 4
36
59
  value
37
60
  else
38
- raise ArgumentError, 'Wrong :padding parameter, must be an array'
61
+ fail ArgumentError, 'Wrong :padding parameter, must be an array'
39
62
  end
40
- new(padding)
41
63
  end
42
64
 
43
65
  # Top padding
@@ -53,6 +75,8 @@ module TTY
53
75
  #
54
76
  # @param [Integer] val
55
77
  #
78
+ # @return [nil]
79
+ #
56
80
  # @api public
57
81
  def top=(value)
58
82
  @padding[0] = value
@@ -89,6 +113,8 @@ module TTY
89
113
  #
90
114
  # @param [Integer] value
91
115
  #
116
+ # @return [nil]
117
+ #
92
118
  # @api public
93
119
  def bottom=(value)
94
120
  @padding[2] = value
@@ -107,6 +133,8 @@ module TTY
107
133
  #
108
134
  # @param [Integer] value
109
135
  #
136
+ # @return [nil]
137
+ #
110
138
  # @api public
111
139
  def left=(value)
112
140
  @padding[3] = value
@@ -114,6 +142,8 @@ module TTY
114
142
 
115
143
  # Check if padding is set
116
144
  #
145
+ # @return [Boolean]
146
+ #
117
147
  # @api public
118
148
  def empty?
119
149
  padding.empty?
@@ -125,7 +155,7 @@ module TTY
125
155
  #
126
156
  # @api public
127
157
  def vertical?
128
- top.nonzero? or bottom.nonzero?
158
+ top.nonzero? || bottom.nonzero?
129
159
  end
130
160
 
131
161
  # Check if horizontal padding is applied
@@ -134,9 +164,17 @@ module TTY
134
164
  #
135
165
  # @api public
136
166
  def horizontal?
137
- left.nonzero? or right.nonzero?
167
+ left.nonzero? || right.nonzero?
138
168
  end
139
169
 
170
+ # String represenation of this padder with padding values
171
+ #
172
+ # @return [String]
173
+ #
174
+ # @api public
175
+ def to_s
176
+ inspect
177
+ end
140
178
  end # Padder
141
179
  end # Table
142
180
  end # TTY