59 lines
1.6 KiB
Ruby
59 lines
1.6 KiB
Ruby
module Rubella
|
|
module Weighting
|
|
|
|
|
|
# The Rubella::Weighting object processes the given input data to an valid
|
|
# output processable Array.
|
|
# These arrays contain a subarray for every unit of time. And these Array
|
|
# contain the buckets within the values for the output objects.
|
|
# The Weighting of the print intensitiy is done here, so that the output
|
|
# objects job is simply to print the stuff.
|
|
#
|
|
class Base
|
|
attr_reader :buckets
|
|
# :steps
|
|
|
|
# Constructor
|
|
# Creates a new Rubella::Weighting::xy object.
|
|
#
|
|
# @param buckets int must be one of 1, 2, 5, 10, 20, 50 default is 10
|
|
# @return Rubella::Weighting::Base
|
|
# @raise ArgumentError
|
|
#
|
|
def initialize(buckets = 10)
|
|
self.buckets = buckets
|
|
end
|
|
|
|
# Sets the buckets, if the value is valid
|
|
#
|
|
# @param buckets int The amount of buckets
|
|
# @raise ArgumentError
|
|
#
|
|
def buckets= buckets
|
|
# Must be divideable by 100
|
|
if([1, 2, 5, 10, 20, 50].index(buckets) == nil)
|
|
raise ArgumentError.new "Amount of buckets must be 1, 2, 5, 10, 20 "+
|
|
"or 50"
|
|
end
|
|
|
|
@steps = 100/buckets
|
|
@buckets = buckets
|
|
end
|
|
|
|
# Creates a output readable list.
|
|
# This list is Array within a subarrays, which contain the buckets for
|
|
# every time value unit.
|
|
#
|
|
# @param input Rubella::Input An input object
|
|
# @return Rubella::Storage
|
|
#
|
|
def parse input
|
|
raise NotImplementedError.new "Please override 'parse' in your "+
|
|
"concrete implementation"
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
end
|