yummi 0.2.2 → 0.3.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.
@@ -31,11 +31,11 @@ opt = OptionParser::new
31
31
  # sets the title
32
32
  @table.title = 'Cash Flow'
33
33
  # formats booleans using Yes or No
34
- @table.format :eletronic, :using => Yummi::Formatter.yes_or_no
34
+ @table.format :eletronic, :using => Yummi::Formatters.yes_or_no
35
35
  # shows values without minus signal and rounded
36
36
  @table.format :value, :using => lambda { |value| "%.2f" % value.abs }
37
37
  # shows totals rounded
38
- @table.format :total, :using => Yummi::Formatter.round(2)
38
+ @table.format :total, :using => Yummi::Formatters.round(2)
39
39
  # table data
40
40
  @table.data = [['Initial', 0, 0, false],
41
41
  ['Deposit', 100.58, 100.58, true, "QAWSEDRFTGH535"],
@@ -47,7 +47,7 @@ opt = OptionParser::new
47
47
  opt.on '--color TYPE', 'Specify the color type (zebra,full,none)' do |type|
48
48
  case type
49
49
  when 'zebra'
50
- @table.row_colorizer Yummi::Colorizer.stripe :brown, :purple
50
+ @table.row_colorizer Yummi::Colorizers.stripe :brown, :purple
51
51
  when 'full'
52
52
  # colorize all values from the Description column to purple
53
53
  @table.colorize :description, :with => :purple
@@ -61,11 +61,11 @@ opt.on '--color TYPE', 'Specify the color type (zebra,full,none)' do |type|
61
61
  red_to_negative = lambda { |value| :red if value < 0 }
62
62
  green_to_positive = lambda { |value| :green if value > 0 }
63
63
  brown_to_zero = lambda { |value| :brown if value == 0 }
64
- colorizer = Yummi::Colorizer.join(red_to_negative, green_to_positive, brown_to_zero)
64
+ colorizer = Yummi::Colorizers.join(red_to_negative, green_to_positive, brown_to_zero)
65
65
  @table.colorize :value, :using => colorizer
66
66
  @table.colorize :total, :using => colorizer
67
67
  # colorize rows that Value is greater than Total
68
- @table.row_colorizer do |i, data|
68
+ @table.row_colorizer do |data| # or |data, index| if you need the index
69
69
  :white if data[:value] > data[:total]
70
70
  end
71
71
  when 'none'
@@ -34,14 +34,14 @@ opt = OptionParser::new
34
34
  # sets the title
35
35
  @table.title = 'File List'
36
36
  # formats size for easily reading
37
- @table.format :size, :using => Yummi::Formatter.unit(:byte)
37
+ @table.format :size, :using => Yummi::Formatters.byte
38
38
 
39
39
  opt.on '--color TYPE', 'Specify the color type (zebra,file,none)' do |type|
40
40
  case type
41
41
  when 'zebra'
42
- @table.row_colorizer Yummi::Colorizer.stripe :intense_gray, :intense_white
42
+ @table.row_colorizer Yummi::Colorizers.stripe :intense_gray, :intense_white
43
43
  when 'file'
44
- @table.row_colorizer do |i, data|
44
+ @table.row_colorizer do |data| # or |data, index| if you need the index
45
45
  data[:directory] ? :intense_gray : :intense_white
46
46
  end
47
47
  when 'none'
@@ -25,8 +25,8 @@ require_relative '../lib/yummi'
25
25
 
26
26
  logger = Logger::new STDOUT
27
27
  logger.level = Logger::DEBUG
28
- logger.formatter = Yummi::Formatter::LogFormatter.new do |severity, time, program_name, message|
29
- message << $/
28
+ logger.formatter = Yummi::Formatter::LogFormatter.new do |severity, message|
29
+ "[#{Yummi::Aligner.left severity, 5}] #{message}"
30
30
  end
31
31
 
32
32
  logger.debug __FILE__
@@ -31,18 +31,18 @@ opt = OptionParser::new
31
31
  # sets the title
32
32
  @table.title = 'Server Runtime Info'
33
33
  # formats memory info for easily reading
34
- @table.format :max_memory, :using => Yummi::Formatter.unit(:byte)
35
- @table.format :free_memory, :using => Yummi::Formatter.unit(:byte)
34
+ @table.format :max_memory, :using => Yummi::Formatters.byte
35
+ @table.format :free_memory, :using => Yummi::Formatters.byte
36
36
 
37
37
  # colorizer for memory
38
- memory_colorizer = Yummi::Colorizer.by_data_eval do |free_memory, max_memory|
38
+ memory_colorizer = Yummi::Colorizers.by_data_eval do |free_memory, max_memory|
39
39
  free_memory.to_f / max_memory
40
40
  end
41
41
  memory_colorizer.use(:red) { |value| value > 0.1 and value < 0.3 }
42
42
  memory_colorizer.use(:intense_red) { |value| value <= 0.1 }
43
43
 
44
44
  # colorizer for threads
45
- thread_colorizer = Yummi::Colorizer.by_data_eval do |max_threads, in_use_threads|
45
+ thread_colorizer = Yummi::Colorizers.by_data_eval do |max_threads, in_use_threads|
46
46
  in_use_threads.to_f / max_threads
47
47
  end
48
48
  thread_colorizer.use(:brown) { |value| value > 0.7 and value < 0.9 }
@@ -51,7 +51,7 @@ thread_colorizer.use(:intense_cyan) { |value| value >= 0.9 }
51
51
  opt.on '--color TYPE', 'Specify the color type (zebra,row,cell,none)' do |type|
52
52
  case type
53
53
  when 'zebra'
54
- @table.row_colorizer Yummi::Colorizer.stripe :brown, :purple
54
+ @table.row_colorizer Yummi::Colorizers.stripe :brown, :purple
55
55
  when 'row'
56
56
  @table.row_colorizer memory_colorizer
57
57
  @table.row_colorizer thread_colorizer
@@ -21,9 +21,6 @@
21
21
  # THE SOFTWARE.
22
22
 
23
23
  require_relative "yummi/version"
24
- require_relative "yummi/table"
25
- require_relative "yummi/text_box"
26
- require_relative "yummi/logger"
27
24
 
28
25
  module Yummi
29
26
  # Base for colorizing
@@ -205,14 +202,50 @@ module Yummi
205
202
 
206
203
  end
207
204
 
208
- # A module with useful colorizers
205
+ #
206
+ # A module that defines a colorizer capable component.
207
+ #
208
+ # Include this module in any component that returns a color in response for :call:.
209
+ #
209
210
  module Colorizer
210
211
 
212
+ #
213
+ # Colorizes a string by passing the arguments to the :call: method to get the proper
214
+ # color.
215
+ #
216
+ # === Args
217
+ #
218
+ # An array of arguments that will be passed to :call: method to get the color. By
219
+ # convention, the first argument must be the object to colorize (to_s is called on it
220
+ # for getting the text to colorize).
221
+ #
222
+ def colorize *args
223
+ color = call *args
224
+ Yummi.colorize args.first.to_s, color
225
+ end
226
+
227
+ end
228
+
229
+ #
230
+ # Adds the #Colorizer module to the given block, so you can use it to colorize texts.
231
+ #
232
+ # === Example
233
+ #
234
+ # colorizer = Yummi.to_colorize { |value| value % 2 == 0 ? :green : :blue }
235
+ # 10.times { |n| puts colorizer.colorize n }
236
+ #
237
+ def self.to_colorize &block
238
+ block.extend Colorizer
239
+ end
240
+
241
+ # A module with useful colorizers
242
+ module Colorizers
243
+
211
244
  # Joins the given colorizers to work as one
212
245
  def self.join *colorizers
213
246
  join = Yummi::GroupedComponent::new
214
247
  colorizers.each { |c| join << c }
215
- join
248
+ join.extend Colorizer
216
249
  end
217
250
 
218
251
  # Returns a new instance of #DataEvalColorizer
@@ -232,6 +265,7 @@ module Yummi
232
265
 
233
266
  # A colorizer that cycles through colors to create a striped effect
234
267
  class StripeColorizer
268
+ include Yummi::Colorizer
235
269
 
236
270
  # Creates a new colorizer using the given colors
237
271
  def initialize *colors
@@ -263,6 +297,7 @@ module Yummi
263
297
  # table.using_row.colorize :current, :using => colorizer
264
298
  #
265
299
  class EvalColorizer
300
+ include Yummi::Colorizer
266
301
 
267
302
  def initialize &block
268
303
  @block = block
@@ -312,70 +347,85 @@ module Yummi
312
347
  # table.using_row.colorize :current, :using => colorizer
313
348
  #
314
349
  class DataEvalColorizer < EvalColorizer
315
- include Yummi::BlockHandler
350
+ include Yummi::BlockHandler, Yummi::Colorizer
316
351
 
317
352
  def resolve_value *args
318
- block_call args.last, &@block # by convention, the last arg is data
353
+ block_call args.first, &@block # by convention, the first arg is data
319
354
  end
320
355
 
321
356
  end
322
357
 
323
358
  end
324
359
 
325
- # A module with useful formatters
326
- module Formatter
327
-
328
- # A module for formatting units in a way that makes the value easy to read
329
- module Unit
330
- # Holds the information about the units that are supported in #format
331
- UNITS = {
332
- :byte => {:range => %w{B KB MB GB TB}, :step => 1024}
333
- }
360
+ # A module used to create an alias method in a formatter block
361
+ module FormatterBlock
334
362
 
335
- #
336
- # Formats the value using the given unit.
337
- #
338
- # === Args
339
- #
340
- # +unit+::
341
- # A unit defined in #UNITS or a definition
342
- # +value+::
343
- # The value to format
344
- # +params+::
345
- # Additional parameters:
346
- # * precision: the number of fractional digits to display (defaults to 1)
347
- #
348
- def self.format unit, value, params = {}
349
- unit = UNITS[unit] if unit.is_a? Symbol
350
- params[:precision] ||= 1
351
- result = value
352
- units = unit[:range]
353
- units.each_index do |i|
354
- minimun = (unit[:step] ** i)
355
- result = "%.#{params[:precision]}f #{units[i]}" % (value.to_f / minimun) if value >= minimun
356
- end
357
- result
358
- end
363
+ # Calls the :call: method
364
+ def format value
365
+ call value
359
366
  end
360
367
 
361
- # Formats boolean values using 'Yes' or 'No'
368
+ end
369
+
370
+ # Extends the given block with #FormatterBlock
371
+ def self.to_format &block
372
+ block.extend FormatterBlock
373
+ end
374
+
375
+ # A module with useful formatters
376
+ module Formatters
377
+
378
+ # A formatter for boolean values that uses 'Yes' or 'No'
362
379
  def self.yes_or_no
363
- lambda do |value|
380
+ Yummi::to_format do |value|
364
381
  value ? "Yes" : "No"
365
382
  end
366
383
  end
367
384
 
368
- # Formats a float value by rounding to the given decinal digits
385
+ # A formatter to float values that uses the precision to round the value
369
386
  def self.round precision
370
- lambda do |value|
387
+ Yummi::to_format do |value|
371
388
  "%.#{precision}f" % value
372
389
  end
373
390
  end
374
391
 
375
- # see #Unit#format
376
- def self.unit unit, params = {}
377
- lambda do |value|
378
- Unit.format unit, value, params
392
+ # Defines the modes to format a byte value
393
+ BYTE_MODES = {
394
+ :iec => {
395
+ :range => %w{B KiB MiB GiB TiB PiB EiB ZiB YiB},
396
+ :step => 1024
397
+ },
398
+ :si => {
399
+ :range => %w{B KB MB GB TB PB EB ZB YB},
400
+ :step => 1000
401
+ }
402
+ }
403
+
404
+ #
405
+ # Formats a byte value to ensure easily reading
406
+ #
407
+ # === Hash Args
408
+ #
409
+ # +precision+::
410
+ # How many decimal digits should be displayed. (Defaults to 1)
411
+ # +mode+::
412
+ # Which mode should be used to display unit symbols. (Defaults to :iec)
413
+ #
414
+ # See #BYTE_MODES
415
+ #
416
+ def self.byte params = {}
417
+ Yummi::to_format do |value|
418
+ value = value.to_i if value.is_a? String
419
+ mode = (params[:mode] or :iec)
420
+ range = BYTE_MODES[mode][:range]
421
+ step = BYTE_MODES[mode][:step]
422
+ params[:precision] ||= 1
423
+ result = value
424
+ range.each_index do |i|
425
+ minimun = (step ** i)
426
+ result = "%.#{params[:precision]}f #{range[i]}" % (value.to_f / minimun) if value >= minimun
427
+ end
428
+ result
379
429
  end
380
430
  end
381
431
 
@@ -441,3 +491,7 @@ module Yummi
441
491
  end
442
492
 
443
493
  require_relative 'yummi/no_colors' if RUBY_PLATFORM['mingw'] #Windows
494
+
495
+ require_relative 'yummi/table'
496
+ require_relative 'yummi/text_box'
497
+ require_relative 'yummi/logger'
@@ -30,7 +30,7 @@ module Yummi
30
30
  # A colorful log formatter
31
31
  #
32
32
  class LogFormatter < Logger::Formatter
33
-
33
+ include Yummi::BlockHandler
34
34
  #
35
35
  # Colors for each severity:
36
36
  #
@@ -53,7 +53,8 @@ module Yummi
53
53
  # * +FATAL+: red (intense)
54
54
  # * +ANY+: gray (intense)
55
55
  #
56
- # If a block is passed, it will be used to format the message
56
+ # If a block is passed, it will be used to format the message. The block can use
57
+ # the following variables: severity, time, program_name and message.
57
58
  #
58
59
  def initialize &block
59
60
  @colors = {
@@ -76,8 +77,17 @@ module Yummi
76
77
 
77
78
  # Formats the message, override this method instead of #call
78
79
  def output severity, time, program_name, message
79
- return @format_block.call severity, time, program_name, message if @format_block
80
- super_call severity, time, program_name, message
80
+ if @format_block
81
+ context = {
82
+ :severity => severity,
83
+ :time => time,
84
+ :program_name => program_name,
85
+ :message => message
86
+ }
87
+ block_call(context, &@format_block) << $/
88
+ else
89
+ super_call severity, time, program_name, message
90
+ end
81
91
  end
82
92
 
83
93
  end
@@ -335,7 +335,7 @@ module Yummi
335
335
  end
336
336
  if @row_colorizer
337
337
  row_data = IndexedData::new @aliases, row
338
- row_color = @row_colorizer.call row_index, row_data
338
+ row_color = @row_colorizer.call row_data, row_index
339
339
  _colors.collect! { row_color } if row_color
340
340
  end
341
341
  color_map << _colors
@@ -21,5 +21,5 @@
21
21
  # THE SOFTWARE.
22
22
 
23
23
  module Yummi
24
- VERSION = "0.2.2"
24
+ VERSION = "0.3.0"
25
25
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yummi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-16 00:00:00.000000000Z
12
+ date: 2012-05-17 00:00:00.000000000Z
13
13
  dependencies: []
14
14
  description: A tool to colorize your console application.
15
15
  email: