Class: Docscribe::InlineRewriter::Collector::VisibilityCtx
- Inherits:
-
Object
- Object
- Docscribe::InlineRewriter::Collector::VisibilityCtx
- Defined in:
- lib/docscribe/inline_rewriter/collector.rb
Overview
Tracks visibility and container state while walking a class/module body.
The context carries enough Ruby state to support:
-
lexical visibility changes
-
‘class << self`
-
‘module_function`
-
‘extend self`
-
retroactive visibility updates
Instance Attribute Summary collapse
- #container_is_module ⇒ Object
- #container_override ⇒ Object
- #default_class_vis ⇒ Object
- #default_instance_vis ⇒ Object
-
#explicit_class ⇒ Object
readonly
Returns the value of attribute explicit_class.
-
#explicit_instance ⇒ Object
readonly
Returns the value of attribute explicit_instance.
- #extend_self ⇒ Object
- #inside_sclass ⇒ Object
- #module_function_default ⇒ Object
-
#module_function_explicit ⇒ Object
readonly
Returns the value of attribute module_function_explicit.
Instance Method Summary collapse
-
#dup ⇒ VisibilityCtx
Duplicate the context so nested bodies can mutate state independently.
-
#initialize ⇒ void
constructor
Create a fresh visibility context with Ruby-like defaults.
Constructor Details
#initialize ⇒ void
Create a fresh visibility context with Ruby-like defaults.
118 119 120 121 122 123 124 125 126 127 128 129 |
# File 'lib/docscribe/inline_rewriter/collector.rb', line 118 def initialize @default_instance_vis = :public @default_class_vis = :public @explicit_instance = {} @explicit_class = {} @inside_sclass = false @module_function_default = false @module_function_explicit = {} @container_override = nil @container_is_module = false @extend_self = false end |
Instance Attribute Details
#container_is_module ⇒ Object
108 109 110 |
# File 'lib/docscribe/inline_rewriter/collector.rb', line 108 def container_is_module @container_is_module end |
#container_override ⇒ Object
91 92 93 |
# File 'lib/docscribe/inline_rewriter/collector.rb', line 91 def container_override @container_override end |
#default_class_vis ⇒ Object
76 77 78 |
# File 'lib/docscribe/inline_rewriter/collector.rb', line 76 def default_class_vis @default_class_vis end |
#default_instance_vis ⇒ Object
71 72 73 |
# File 'lib/docscribe/inline_rewriter/collector.rb', line 71 def default_instance_vis @default_instance_vis end |
#explicit_class ⇒ Object (readonly)
Returns the value of attribute explicit_class.
99 100 101 |
# File 'lib/docscribe/inline_rewriter/collector.rb', line 99 def explicit_class @explicit_class end |
#explicit_instance ⇒ Object (readonly)
Returns the value of attribute explicit_instance.
95 96 97 |
# File 'lib/docscribe/inline_rewriter/collector.rb', line 95 def explicit_instance @explicit_instance end |
#extend_self ⇒ Object
113 114 115 |
# File 'lib/docscribe/inline_rewriter/collector.rb', line 113 def extend_self @extend_self end |
#inside_sclass ⇒ Object
81 82 83 |
# File 'lib/docscribe/inline_rewriter/collector.rb', line 81 def inside_sclass @inside_sclass end |
#module_function_default ⇒ Object
86 87 88 |
# File 'lib/docscribe/inline_rewriter/collector.rb', line 86 def module_function_default @module_function_default end |
#module_function_explicit ⇒ Object (readonly)
Returns the value of attribute module_function_explicit.
103 104 105 |
# File 'lib/docscribe/inline_rewriter/collector.rb', line 103 def module_function_explicit @module_function_explicit end |
Instance Method Details
#dup ⇒ VisibilityCtx
Duplicate the context so nested bodies can mutate state independently.
134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
# File 'lib/docscribe/inline_rewriter/collector.rb', line 134 def dup c = VisibilityCtx.new c.default_instance_vis = default_instance_vis c.default_class_vis = default_class_vis c.inside_sclass = inside_sclass c.module_function_default = module_function_default c.module_function_explicit.merge!(module_function_explicit) c.explicit_instance.merge!(explicit_instance) c.explicit_class.merge!(explicit_class) c.container_override = container_override c.container_is_module = container_is_module c.extend_self = extend_self c end |