Class: Lite::Utils::MdCode::Instance

Inherits:
Object
  • Object
show all
Defined in:
lib/lite/utils/md_code/instance.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(snippets, usage) ⇒ Instance

Returns a new instance of Instance.



17
18
19
# File 'lib/lite/utils/md_code/instance.rb', line 17

def initialize(snippets, usage)
  super(snippets.freeze, usage)
end

Class Method Details

.instance(snippets) ⇒ Object



13
14
15
# File 'lib/lite/utils/md_code/instance.rb', line 13

def self.instance(snippets)
  new snippets, {}
end

Instance Method Details

#consume(key, deplete) ⇒ Object

Raises:



29
30
31
32
33
34
35
36
37
# File 'lib/lite/utils/md_code/instance.rb', line 29

def consume(key, deplete)
  raise Error, "Snippet not defined: #{key}" unless snippets.key?(key)
  raise Error, "Key already used: #{key}" if usage[key] == :depleted

  case usage[key]
  when nil, :consumed then usage[key] = deplete ? :depleted : :consumed
  end
  snippets[key]
end

#ensure_consumed!Object

Raises:



39
40
41
42
43
# File 'lib/lite/utils/md_code/instance.rb', line 39

def ensure_consumed!
  unconsumed = snippets.keys - usage.keys

  raise Error, "Some snippets haven't been consumed: #{unconsumed.join(', ')}" unless unconsumed.empty?
end

#snippet(key) ⇒ Object



25
26
27
# File 'lib/lite/utils/md_code/instance.rb', line 25

def snippet(key)
  consume key, false
end

#snippet!(key) ⇒ Object



21
22
23
# File 'lib/lite/utils/md_code/instance.rb', line 21

def snippet!(key)
  consume key, true
end