Class: Ellipses::Server::Symbols

Inherits:
Object
  • Object
show all
Defined in:
lib/ellipses/server/symbols.rb

Constant Summary collapse

CircularReferenceError =
Class.new Error
MissingSymbolError =
Class.new Error
BogusLeafError =
Class.new Error
EmptyPayloadError =
Class.new Error

Instance Method Summary collapse

Constructor Details

#initialize(meta) ⇒ Symbols

Returns a new instance of Symbols.



78
79
80
81
82
83
# File 'lib/ellipses/server/symbols.rb', line 78

def initialize(meta)
  @meta     = meta
  @registry = {}

  build
end

Instance Method Details

#[](string) ⇒ Object

Raises:



85
86
87
88
89
# File 'lib/ellipses/server/symbols.rb', line 85

def [](string)
  raise MissingSymbolError, "Missing symbol: #{string}" unless @registry.key? string

  @registry[string]
end

#register(string) ⇒ Object



97
98
99
# File 'lib/ellipses/server/symbols.rb', line 97

def register(string)
  _register Symbol.from_string(string)
end

#resolve(string) ⇒ Object



91
92
93
94
95
# File 'lib/ellipses/server/symbols.rb', line 91

def resolve(string)
  resolved = []
  walk(self[string]) { |symbol| resolved << symbol }
  resolved
end

#walk(symbol, &block) ⇒ Object



101
102
103
# File 'lib/ellipses/server/symbols.rb', line 101

def walk(symbol, &block)
  _walk(symbol, Set[symbol], &block)
end