Class/Module Index [+]

Quicksearch

Scruffy::Helpers::LayerContainer

Scruffy::Helpers::LayerContainer

Author

Brasten Sager

Date

August 16th, 2006

Adds some common functionality to any object which needs to act as a container for graph layers. The best example of this is the Scruffy::Graph object itself, but this module is also used by Scruffy::Layer::Stacked.

Public Instance Methods

<<(*args, &block) click to toggle source

Adds a Layer to the Graph/Container. Accepts either a list of arguments used to build a new layer, or a Scruffy::Layers::Base-derived object. When passing a list of arguments, all arguments are optional, but the arguments specified must be provided in a particular order: type (Symbol), title (String), points (Array), options (Hash).

Both add and #<< can be used.

graph.add(:line, [100, 200, 150])     # Create and add an untitled line graph

graph << (:line, "John's Sales", [150, 100])    # Create and add a titled line graph

graph << Scruffy::Layers::Bar.new({...})   # Adds Bar layer to graph
# File lib/scruffy/helpers/layer_container.rb, line 27
def <<(*args, &block)
  if args[0].kind_of?(Scruffy::Layers::Base)
    layers << args[0]
  else
    type = args.first.is_a?(Symbol) ? args.shift : @default_type
    title = args.shift if args.first.is_a?(String)
    
    # Layer handles PointContainer mixin, don't do it here
    points = [Array, Hash].include?(args.first.class) ? args.shift : []
    options = args.first.is_a?(Hash) ? args.shift : {}
    
    title ||= ''
    
    raise ArgumentError, 
            'You must specify a graph type (:area, :bar, :line, etc) if you do not have a default type specified.' if type.nil?
          
    class_name = "Scruffy::Layers::#{to_camelcase(type.to_s)}"
    layer_class = Kernel::module_eval(class_name)
    options = {:points => points, :title => title}.merge options
    layer = layer_class.new(options, &block)
    layers << layer
  end
  layer
end
Also aliased as: add
add(*args, &block) click to toggle source
Alias for: <<
layers() click to toggle source

Layer Reader

# File lib/scruffy/helpers/layer_container.rb, line 61
def layers
  @layers ||= []
end
layers=(val) click to toggle source

Layer Writer

# File lib/scruffy/helpers/layer_container.rb, line 56
def layers=(val)
  @layers = val
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.