Module: DSLKit::Scope

Included in:
DynamicScope
Defined in:
lib/dslkit/polite.rb

Instance Method Summary collapse

Instance Method Details

#scope(name = :default) ⇒ Object



668
669
670
# File 'lib/dslkit/polite.rb', line 668

def scope(name = :default)
  scope_get(name).dup
end

#scope_block(scope_frame, name = :default) ⇒ Object



656
657
658
659
660
661
662
# File 'lib/dslkit/polite.rb', line 656

def scope_block(scope_frame, name = :default)
  scope_push(scope_frame, name)
  yield
  self
ensure
  scope_pop(name)
end

#scope_get(name = :default) ⇒ Object



664
665
666
# File 'lib/dslkit/polite.rb', line 664

def scope_get(name = :default)
  Thread.current[name] ||= []
end

#scope_pop(name = :default) ⇒ Object



642
643
644
645
646
# File 'lib/dslkit/polite.rb', line 642

def scope_pop(name = :default)
  scope_get(name).pop
  scope_get(name).empty? and Thread.current[name] = nil
  self
end

#scope_push(scope_frame, name = :default) ⇒ Object



637
638
639
640
# File 'lib/dslkit/polite.rb', line 637

def scope_push(scope_frame, name = :default)
  scope_get(name).push scope_frame
  self
end

#scope_reverse(name = :default, &block) ⇒ Object



652
653
654
# File 'lib/dslkit/polite.rb', line 652

def scope_reverse(name = :default, &block)
  scope_get(name).reverse_each(&block)
end

#scope_top(name = :default) ⇒ Object



648
649
650
# File 'lib/dslkit/polite.rb', line 648

def scope_top(name = :default)
  scope_get(name).last
end