class Ellipses::Server::Symbols
Constants
- BogusLeafError
- CircularReferenceError
- EmptyPayloadError
- MissingSymbolError
Public Class Methods
new(meta)
click to toggle source
# File lib/ellipses/server/symbols.rb, line 78 def initialize(meta) @meta = meta @registry = {} build end
Public Instance Methods
[](string)
click to toggle source
# File lib/ellipses/server/symbols.rb, line 85 def [](string) raise MissingSymbolError, "Missing symbol: #{string}" unless @registry.key? string @registry[string] end
register(string)
click to toggle source
# File lib/ellipses/server/symbols.rb, line 97 def register(string) _register Symbol.from_string(string) end
resolve(string)
click to toggle source
# File lib/ellipses/server/symbols.rb, line 91 def resolve(string) resolved = [] walk(self[string]) { |symbol| resolved << symbol } resolved end
walk(symbol, &block)
click to toggle source
# File lib/ellipses/server/symbols.rb, line 101 def walk(symbol, &block) _walk(symbol, Set[symbol], &block) end
Private Instance Methods
_register(symbol)
click to toggle source
# File lib/ellipses/server/symbols.rb, line 131 def _register(symbol) @registry[symbol.to_s] || (@registry[symbol.to_s] = symbol) end
_register_by_meta(symbol_meta)
click to toggle source
# File lib/ellipses/server/symbols.rb, line 135 def _register_by_meta(symbol_meta) _register Symbol.from_meta(symbol_meta) end
_walk(symbol, stack) { |symbol| ... }
click to toggle source
# File lib/ellipses/server/symbols.rb, line 114 def _walk(symbol, stack, &block) return if symbol.depends.nil? symbol.depends.each do |depend| raise CircularReferenceError, "Circular reference from #{symbol} to #{depend}" if stack.first == depend next if stack.include? depend stack << depend _walk(depend, stack, &block) rescue ::StopIteration return nil end yield(symbol) if block end
build()
click to toggle source
# File lib/ellipses/server/symbols.rb, line 107 def build @meta.each { |symbol_meta| _register_by_meta(symbol_meta) } @registry.dup.each_value { |symbol| symbol.build(self) } sanitize end
sanitize()
click to toggle source
# File lib/ellipses/server/symbols.rb, line 139 def sanitize tap do @registry.each_value { |symbol| walk(symbol) } end end