class TTY::Pie::DataItem
Encapsulates a single data item
Constants
- LABEL_FORMAT
Attributes
angle[W]
color[RW]
fill[RW]
name[RW]
percent[RW]
value[RW]
Public Class Methods
new(name, value, percent, color, fill)
click to toggle source
Creat a DataItem
@api private
# File lib/tty/pie/data_item.rb, line 26 def initialize(name, value, percent, color, fill) @name = name @value = value @color = color @percent = percent @fill = fill @pastel = Pastel.new(enabled: !!color) end
Public Instance Methods
angle()
click to toggle source
The item start angle
@api private
# File lib/tty/pie/data_item.rb, line 38 def angle percent * FULL_CIRCLE_DEGREES / 100.to_f end
number_to_currency(value, precision: 2, delimiter: ",")
click to toggle source
Convert a number to a currency
@param [Numeric] value @param [Integer] precision @param [String] delimiter
@return [String]
@api private
# File lib/tty/pie/data_item.rb, line 71 def number_to_currency(value, precision: 2, delimiter: ",") whole, part = value.to_s.split(".") unless part.nil? part = format("%.#{precision}f", part.to_f / 10**part.size)[1..-1] end "#{whole.gsub(/(\d)(?=(\d{3})+(?!\d))/, "\\1#{delimiter}")}#{part}" end
to_label(legend)
click to toggle source
Convert a data item into a legend label
@param [Hash] legend
@return [String]
@api private
# File lib/tty/pie/data_item.rb, line 49 def to_label(legend) pattern = legend && legend[:format] || LABEL_FORMAT precision = legend && legend[:precision] || 2 delimiter = legend && legend[:delimiter] || "," label = color ? @pastel.decorate(fill, color) : fill currency = number_to_currency(value, precision: precision, delimiter: delimiter) format(pattern, label: label, name: name, value: value, percent: percent, currency: currency) end