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.



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_moduleObject

Parameters:

  • value (Object)

Returns:

  • (Object)


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

def container_is_module
  @container_is_module
end

#container_overrideObject

Parameters:

  • value (Object)

Returns:

  • (Object)


91
92
93
# File 'lib/docscribe/inline_rewriter/collector.rb', line 91

def container_override
  @container_override
end

#default_class_visObject

Parameters:

  • value (Object)

Returns:

  • (Object)


76
77
78
# File 'lib/docscribe/inline_rewriter/collector.rb', line 76

def default_class_vis
  @default_class_vis
end

#default_instance_visObject

Parameters:

  • value (Object)

Returns:

  • (Object)


71
72
73
# File 'lib/docscribe/inline_rewriter/collector.rb', line 71

def default_instance_vis
  @default_instance_vis
end

#explicit_classObject (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_instanceObject (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_selfObject

Parameters:

  • value (Object)

Returns:

  • (Object)


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

def extend_self
  @extend_self
end

#inside_sclassObject

Parameters:

  • value (Object)

Returns:

  • (Object)


81
82
83
# File 'lib/docscribe/inline_rewriter/collector.rb', line 81

def inside_sclass
  @inside_sclass
end

#module_function_defaultObject

Parameters:

  • value (Object)

Returns:

  • (Object)


86
87
88
# File 'lib/docscribe/inline_rewriter/collector.rb', line 86

def module_function_default
  @module_function_default
end

#module_function_explicitObject (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

#dupVisibilityCtx

Duplicate the context so nested bodies can mutate state independently.

Returns:



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