Class: Steep::AST::Signature::Env
- Inherits:
-
Object
- Object
- Steep::AST::Signature::Env
- Defined in:
- lib/steep/ast/signature/env.rb
Instance Attribute Summary collapse
-
#classes ⇒ Object
readonly
Returns the value of attribute classes.
-
#constants ⇒ Object
readonly
Returns the value of attribute constants.
-
#extensions ⇒ Object
readonly
Returns the value of attribute extensions.
-
#globals ⇒ Object
readonly
Returns the value of attribute globals.
-
#interfaces ⇒ Object
readonly
Returns the value of attribute interfaces.
-
#modules ⇒ Object
readonly
Returns the value of attribute modules.
Instance Method Summary collapse
- #add(sig) ⇒ Object
- #class?(type_name, current_module: nil) ⇒ Boolean
- #class_name?(name, current_module: nil) ⇒ Boolean
- #const_name?(name, current_module: nil) ⇒ Boolean
- #each(&block) ⇒ Object
- #find_class(name, current_module: nil) ⇒ Object
- #find_class_or_module(name, current_module: nil) ⇒ Object
- #find_const(name, current_module: nil) ⇒ Object
- #find_extensions(name, current_module: nil) ⇒ Object
- #find_gvar(name) ⇒ Object
- #find_interface(name) ⇒ Object
- #find_module(name, current_module: nil) ⇒ Object
- #find_name(hash, name, current_module:) ⇒ Object
-
#initialize ⇒ Env
constructor
A new instance of Env.
- #module?(type_name, current_module: nil) ⇒ Boolean
- #module_name?(name, current_module: nil) ⇒ Boolean
Constructor Details
#initialize ⇒ Env
Returns a new instance of Env.
12 13 14 15 16 17 18 19 |
# File 'lib/steep/ast/signature/env.rb', line 12 def initialize() @modules = {} @classes = {} @extensions = {} @interfaces = {} @constants = {} @globals = {} end |
Instance Attribute Details
#classes ⇒ Object (readonly)
Returns the value of attribute classes.
6 7 8 |
# File 'lib/steep/ast/signature/env.rb', line 6 def classes @classes end |
#constants ⇒ Object (readonly)
Returns the value of attribute constants.
9 10 11 |
# File 'lib/steep/ast/signature/env.rb', line 9 def constants @constants end |
#extensions ⇒ Object (readonly)
Returns the value of attribute extensions.
7 8 9 |
# File 'lib/steep/ast/signature/env.rb', line 7 def extensions @extensions end |
#globals ⇒ Object (readonly)
Returns the value of attribute globals.
10 11 12 |
# File 'lib/steep/ast/signature/env.rb', line 10 def globals @globals end |
#interfaces ⇒ Object (readonly)
Returns the value of attribute interfaces.
8 9 10 |
# File 'lib/steep/ast/signature/env.rb', line 8 def interfaces @interfaces end |
#modules ⇒ Object (readonly)
Returns the value of attribute modules.
5 6 7 |
# File 'lib/steep/ast/signature/env.rb', line 5 def modules @modules end |
Instance Method Details
#add(sig) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/steep/ast/signature/env.rb', line 21 def add(sig) case sig when Signature::Class raise "Duplicated class: #{sig.name}" if classes.key?(sig.name.absolute!) || modules.key?(sig.name.absolute!) classes[sig.name.absolute!] = sig when Signature::Module raise "Duplicated module: #{sig.name}" if classes.key?(sig.name.absolute!) || modules.key?(sig.name.absolute!) modules[sig.name.absolute!] = sig when Signature::Interface raise "Duplicated interface: #{sig.name}" if interfaces.key?(sig.name) interfaces[sig.name] = sig when Signature::Extension extensions[sig.module_name.absolute!] ||= [] if extensions[sig.module_name.absolute!].any? {|ext| ext.name == sig.name } raise "Duplicated extension: #{sig.module_name.absolute!} (#{sig.name})" end extensions[sig.module_name.absolute!] << sig when Signature::Const constants[sig.name.absolute!] = sig when Signature::Gvar raise "Duplicated global: #{sig.name}" if globals.key?(sig.name) globals[sig.name] = sig else raise "Unknown signature:: #{sig}" end end |
#class?(type_name, current_module: nil) ⇒ Boolean
93 94 95 96 |
# File 'lib/steep/ast/signature/env.rb', line 93 def class?(type_name, current_module: nil) name = type_name.map_module_name {|m| current_module ? current_name + m : m.absolute! }.name classes.key?(name) end |
#class_name?(name, current_module: nil) ⇒ Boolean
98 99 100 |
# File 'lib/steep/ast/signature/env.rb', line 98 def class_name?(name, current_module: nil) classes.key?(current_module ? current_module + name : name.absolute!) end |
#const_name?(name, current_module: nil) ⇒ Boolean
106 107 108 |
# File 'lib/steep/ast/signature/env.rb', line 106 def const_name?(name, current_module: nil) constants.key?(current_module ? current_module + name : name.absolute!) end |
#each(&block) ⇒ Object
110 111 112 113 114 115 116 117 118 119 |
# File 'lib/steep/ast/signature/env.rb', line 110 def each(&block) if block_given? classes.each_value(&block) modules.each_value(&block) interfaces.each_value(&block) constants.each_value(&block) else enum_for :each end end |
#find_class(name, current_module: nil) ⇒ Object
52 53 54 |
# File 'lib/steep/ast/signature/env.rb', line 52 def find_class(name, current_module: nil) find_name(classes, name, current_module: current_module) or raise "Unknown class: #{name}" end |
#find_class_or_module(name, current_module: nil) ⇒ Object
56 57 58 59 60 61 62 |
# File 'lib/steep/ast/signature/env.rb', line 56 def find_class_or_module(name, current_module: nil) sig = find_name(modules, name, current_module: current_module) || find_name(classes, name, current_module: current_module) sig or raise "Unknown class/module: #{name}}" end |
#find_const(name, current_module: nil) ⇒ Object
68 69 70 |
# File 'lib/steep/ast/signature/env.rb', line 68 def find_const(name, current_module: nil) find_name(constants, name, current_module: current_module) end |
#find_extensions(name, current_module: nil) ⇒ Object
64 65 66 |
# File 'lib/steep/ast/signature/env.rb', line 64 def find_extensions(name, current_module: nil) find_name(extensions, name, current_module: current_module) || [] end |
#find_gvar(name) ⇒ Object
72 73 74 |
# File 'lib/steep/ast/signature/env.rb', line 72 def find_gvar(name) globals[name] end |
#find_interface(name) ⇒ Object
84 85 86 |
# File 'lib/steep/ast/signature/env.rb', line 84 def find_interface(name) interfaces[name] or raise "Unknown interface: #{name}" end |
#find_module(name, current_module: nil) ⇒ Object
48 49 50 |
# File 'lib/steep/ast/signature/env.rb', line 48 def find_module(name, current_module: nil) find_name(modules, name, current_module: current_module) or raise "Unknown module: #{name}" end |
#find_name(hash, name, current_module:) ⇒ Object
76 77 78 79 80 81 82 |
# File 'lib/steep/ast/signature/env.rb', line 76 def find_name(hash, name, current_module:) if current_module hash[current_module + name] || find_name(hash, name, current_module: current_module.parent) else hash[name.absolute!] end end |
#module?(type_name, current_module: nil) ⇒ Boolean
88 89 90 91 |
# File 'lib/steep/ast/signature/env.rb', line 88 def module?(type_name, current_module: nil) name = type_name.map_module_name {|m| current_module ? current_module + m : m.absolute! }.name modules.key?(name) end |
#module_name?(name, current_module: nil) ⇒ Boolean
102 103 104 |
# File 'lib/steep/ast/signature/env.rb', line 102 def module_name?(name, current_module: nil) modules.key?(current_module ? current_module + name : name.absolute!) end |