Class: CGenerator::Accumulator

Inherits:
Object
  • Object
show all
Defined in:
lib/cgen/cgen.rb

Overview

should be a mixin? “Cumulative”?

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, parent = nil) ⇒ Accumulator

Returns a new instance of Accumulator.



432
433
434
435
# File 'lib/cgen/cgen.rb', line 432

def initialize name, parent = nil
  @name = name; @parent = parent
  @pile = []
end

Instance Attribute Details

#nameObject (readonly)

should delegate Accs into two objects with two inheritance hierarchies, one for adding items, one for generating strings OR: two hierarchies of modules that get included into Template subclasses



430
431
432
# File 'lib/cgen/cgen.rb', line 430

def name
  @name
end

#parentObject (readonly)

should delegate Accs into two objects with two inheritance hierarchies, one for adding items, one for generating strings OR: two hierarchies of modules that get included into Template subclasses



430
431
432
# File 'lib/cgen/cgen.rb', line 430

def parent
  @parent
end

Instance Method Details

#accept?(item) ⇒ Boolean

Returns:

  • (Boolean)


437
438
439
# File 'lib/cgen/cgen.rb', line 437

def accept? item
  true
end

#add(*items) ⇒ Object



449
450
451
452
453
# File 'lib/cgen/cgen.rb', line 449

def add(*items)
  for item in items
    add_one item
  end
end

#add_one(item) ⇒ Object



445
446
447
# File 'lib/cgen/cgen.rb', line 445

def add_one item
  add_one_really item if accept? item
end

#add_one_really(item) ⇒ Object



441
442
443
# File 'lib/cgen/cgen.rb', line 441

def add_one_really item
  @pile << item
end

#inspectObject



473
474
475
476
477
478
# File 'lib/cgen/cgen.rb', line 473

def inspect
  eol = "\n" if @pile.size > 0
  s = "s" if @pile.size != 1
  %{<#{self.class} "#{@name}": #{@pile.size} item#{s}>#{eol}} +
  @pile.collect { |item| inspect_one item }.join("\n").tabto(2)
end

#inspect_one(item) ⇒ Object



480
481
482
# File 'lib/cgen/cgen.rb', line 480

def inspect_one item
  item.inspect
end

#output(items) ⇒ Object



459
460
461
462
463
464
465
# File 'lib/cgen/cgen.rb', line 459

def output items
  items.collect { |item|
    output_one item
  }.select { |item|
    item && item != ""
  }
end

#output_one(item) ⇒ Object



455
456
457
# File 'lib/cgen/cgen.rb', line 455

def output_one item
  item
end

#separatorObject



467
# File 'lib/cgen/cgen.rb', line 467

def separator; "\n"; end

#to_sObject



469
470
471
# File 'lib/cgen/cgen.rb', line 469

def to_s
  output(@pile).join(separator)
end