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.



125
126
127
128
129
130
131
132
133
134
135
136
# File 'lib/docscribe/inline_rewriter/collector.rb', line 125

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_moduleObject

Parameters:

  • value (Object)

Returns:

  • (Object)


115
116
117
# File 'lib/docscribe/inline_rewriter/collector.rb', line 115

def container_is_module
  @container_is_module
end

#container_overrideObject

Parameters:

  • value (Object)

Returns:

  • (Object)


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

def container_override
  @container_override
end

#default_class_visObject

Parameters:

  • value (Object)

Returns:

  • (Object)


83
84
85
# File 'lib/docscribe/inline_rewriter/collector.rb', line 83

def default_class_vis
  @default_class_vis
end

#default_instance_visObject

Parameters:

  • value (Object)

Returns:

  • (Object)


78
79
80
# File 'lib/docscribe/inline_rewriter/collector.rb', line 78

def default_instance_vis
  @default_instance_vis
end

#explicit_classObject (readonly)

Returns the value of attribute explicit_class.



106
107
108
# File 'lib/docscribe/inline_rewriter/collector.rb', line 106

def explicit_class
  @explicit_class
end

#explicit_instanceObject (readonly)

Returns the value of attribute explicit_instance.



102
103
104
# File 'lib/docscribe/inline_rewriter/collector.rb', line 102

def explicit_instance
  @explicit_instance
end

#extend_selfObject

Parameters:

  • value (Object)

Returns:

  • (Object)


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

def extend_self
  @extend_self
end

#inside_sclassObject

Parameters:

  • value (Object)

Returns:

  • (Object)


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

def inside_sclass
  @inside_sclass
end

#module_function_defaultObject

Parameters:

  • value (Object)

Returns:

  • (Object)


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

def module_function_default
  @module_function_default
end

#module_function_explicitObject (readonly)

Returns the value of attribute module_function_explicit.



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

def module_function_explicit
  @module_function_explicit
end

Instance Method Details

#dupVisibilityCtx

Duplicate the context so nested bodies can mutate state independently.

Returns:



141
142
143
144
145
146
147
# File 'lib/docscribe/inline_rewriter/collector.rb', line 141

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