Class: CGenerator::Accumulator
- Inherits:
-
Object
- Object
- CGenerator::Accumulator
show all
- Defined in:
- lib/cgen/cgen.rb
Overview
should be a mixin? “Cumulative”?
Instance Attribute Summary collapse
-
#name ⇒ Object
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.
-
#parent ⇒ Object
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.
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
#name ⇒ Object
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
|
#parent ⇒ Object
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
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
|
#inspect ⇒ Object
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
|
#separator ⇒ Object
467
|
# File 'lib/cgen/cgen.rb', line 467
def separator; "\n"; end
|
#to_s ⇒ Object
469
470
471
|
# File 'lib/cgen/cgen.rb', line 469
def to_s
output(@pile).join(separator)
end
|