Class: Docscribe::InlineRewriter::Collector::VisibilityCtx

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

Constructor Details

#initializevoid

Create a fresh visibility context with Ruby-like defaults.



136
137
138
139
140
141
142
143
144
145
146
147
# File 'lib/docscribe/inline_rewriter/collector.rb', line 136

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_moduleBoolean

Parameters:

  • value (Boolean)

Returns:

  • (Boolean)


126
127
128
# File 'lib/docscribe/inline_rewriter/collector.rb', line 126

def container_is_module
  @container_is_module
end

#container_overrideString?

Parameters:

  • value (String?)

Returns:

  • (String?)


109
110
111
# File 'lib/docscribe/inline_rewriter/collector.rb', line 109

def container_override
  @container_override
end

#default_class_visSymbol

Parameters:

  • value (Symbol)

Returns:

  • (Symbol)


94
95
96
# File 'lib/docscribe/inline_rewriter/collector.rb', line 94

def default_class_vis
  @default_class_vis
end

#default_instance_visSymbol

Parameters:

  • value (Symbol)

Returns:

  • (Symbol)


89
90
91
# File 'lib/docscribe/inline_rewriter/collector.rb', line 89

def default_instance_vis
  @default_instance_vis
end

#explicit_classObject (readonly)

Returns the value of attribute explicit_class.



117
118
119
# File 'lib/docscribe/inline_rewriter/collector.rb', line 117

def explicit_class
  @explicit_class
end

#explicit_instanceObject (readonly)

Returns the value of attribute explicit_instance.



113
114
115
# File 'lib/docscribe/inline_rewriter/collector.rb', line 113

def explicit_instance
  @explicit_instance
end

#extend_selfBoolean

Parameters:

  • value (Boolean)

Returns:

  • (Boolean)


131
132
133
# File 'lib/docscribe/inline_rewriter/collector.rb', line 131

def extend_self
  @extend_self
end

#inside_sclassBoolean

Parameters:

  • value (Boolean)

Returns:

  • (Boolean)


99
100
101
# File 'lib/docscribe/inline_rewriter/collector.rb', line 99

def inside_sclass
  @inside_sclass
end

#module_function_defaultBoolean

Parameters:

  • value (Boolean)

Returns:

  • (Boolean)


104
105
106
# File 'lib/docscribe/inline_rewriter/collector.rb', line 104

def module_function_default
  @module_function_default
end

#module_function_explicitObject (readonly)

Returns the value of attribute module_function_explicit.



121
122
123
# File 'lib/docscribe/inline_rewriter/collector.rb', line 121

def module_function_explicit
  @module_function_explicit
end

Instance Method Details

#dupDocscribe::InlineRewriter::Collector::VisibilityCtx

Duplicate the context so nested bodies can mutate state independently.



152
153
154
155
156
157
158
# File 'lib/docscribe/inline_rewriter/collector.rb', line 152

def dup
  VisibilityCtx.new.tap do |ctx|
    copy_visibility_state(ctx)
    copy_module_function_state(ctx)
    copy_container_state(ctx)
  end
end