Browse Source

read classes from file when lexing

Ste 1 month ago
parent
commit
3a50eec76b
1 changed files with 51 additions and 1017 deletions
  1. 51 1017
      _extensions/gdscript.py

+ 51 - 1017
_extensions/gdscript.py

@@ -12,6 +12,7 @@
     further expanded and consolidated with the godot-docs lexer by Zackery R. Smith <[email protected]> and Ste.
 """
 
+import re
 from pygments.lexer import RegexLexer, include, bygroups, words, combined
 from pygments.token import (
     Keyword,
@@ -39,6 +40,55 @@ class GDScriptLexer(RegexLexer):
     filenames = ["*.gd"]
     mimetypes = ["text/x-gdscript", "application/x-gdscript"]
 
+    @staticmethod
+    def get_classes(directory: str) -> tuple[str]:
+        classes = []
+        with open(f"{directory}/index.rst", "r", encoding="utf-8") as file:
+            lines = file.readlines()
+
+        inside_toctree = False
+        inside_toctree_body = False
+        skip_this_block = False
+
+        for i, line in enumerate(lines):
+            stripped = line.strip()
+
+            if stripped.startswith(".. toctree::"):
+                inside_toctree = True
+                skip_this_block = False
+                inside_toctree_body = False
+                continue
+
+            if not inside_toctree:
+                continue
+
+            if stripped.startswith(":name:"):
+                name = stripped.split(":", 2)[-1].strip()
+                if name in ["toc-class-ref-variants", "toc-class-ref-globals"]:
+                    skip_this_block = True
+                continue
+
+            if skip_this_block or stripped.startswith(":"):
+                continue
+
+            # Avoid skipping the empty line right before the body of the toc
+            if not inside_toctree_body and stripped == "":
+                inside_toctree_body = True
+                continue
+
+            if not line.startswith("    ") or stripped.startswith(".. "):
+                inside_toctree = False
+                continue
+
+            if stripped.startswith("class_"):
+                # Since everything is lowercase in the index, get the actual casing from the file
+                with open(f"{directory}/{stripped}.rst", "r", encoding="utf-8") as class_file:
+                    for class_line in class_file:
+                        match = re.match(r"_class_(\w+):", class_line)
+                        if match:
+                            classes.append(match.group(1))
+        return tuple(classes)
+
     # taken from pygments/gdscript.py
     @staticmethod
     def inner_string_rules(ttype):
@@ -336,1023 +386,7 @@ class GDScriptLexer(RegexLexer):
             # copied from https://docs.godotengine.org/en/stable/classes/index.html
             (
                 words(
-                    (
-                        # Nodes
-                        "Node",
-                        "AcceptDialog",
-                        "AnimatableBody2D",
-                        "AnimatableBody3D",
-                        "AnimatedSprite2D",
-                        "AnimatedSprite3D",
-                        "AnimationMixer",
-                        "AnimationPlayer",
-                        "AnimationTree",
-                        "Area2D",
-                        "Area3D",
-                        "AspectRatioContainer",
-                        "AudioListener2D",
-                        "AudioListener3D",
-                        "AudioStreamPlayer",
-                        "AudioStreamPlayer2D",
-                        "AudioStreamPlayer3D",
-                        "BackBufferCopy",
-                        "BaseButton",
-                        "Bone2D",
-                        "BoneAttachment3D",
-                        "BoxContainer",
-                        "Button",
-                        "Camera2D",
-                        "Camera3D",
-                        "CanvasGroup",
-                        "CanvasItem",
-                        "CanvasLayer",
-                        "CanvasModulate",
-                        "CenterContainer",
-                        "CharacterBody2D",
-                        "CharacterBody3D",
-                        "CheckBox",
-                        "CheckButton",
-                        "CodeEdit",
-                        "CollisionObject2D",
-                        "CollisionObject3D",
-                        "CollisionPolygon2D",
-                        "CollisionPolygon3D",
-                        "CollisionShape2D",
-                        "CollisionShape3D",
-                        "ColorPicker",
-                        "ColorPickerButton",
-                        "ColorRect",
-                        "ConeTwistJoint3D",
-                        "ConfirmationDialog",
-                        "Container",
-                        "Control",
-                        "CPUParticles2D",
-                        "CPUParticles3D",
-                        "CSGBox3D",
-                        "CSGCombiner3D",
-                        "CSGCylinder3D",
-                        "CSGMesh3D",
-                        "CSGPolygon3D",
-                        "CSGPrimitive3D",
-                        "CSGShape3D",
-                        "CSGSphere3D",
-                        "CSGTorus3D",
-                        "DampedSpringJoint2D",
-                        "Decal",
-                        "DirectionalLight2D",
-                        "DirectionalLight3D",
-                        "EditorCommandPalette",
-                        "EditorFileDialog",
-                        "EditorFileSystem",
-                        "EditorInspector",
-                        "EditorPlugin",
-                        "EditorProperty",
-                        "EditorResourcePicker",
-                        "EditorResourcePreview",
-                        "EditorScriptPicker",
-                        "EditorSpinSlider",
-                        "EditorToaster",
-                        "FileDialog",
-                        "FileSystemDock",
-                        "FlowContainer",
-                        "FogVolume",
-                        "Generic6DOFJoint3D",
-                        "GeometryInstance3D",
-                        "GPUParticles2D",
-                        "GPUParticles3D",
-                        "GPUParticlesAttractor3D",
-                        "GPUParticlesAttractorBox3D",
-                        "GPUParticlesAttractorSphere3D",
-                        "GPUParticlesAttractorVectorField3D",
-                        "GPUParticlesCollision3D",
-                        "GPUParticlesCollisionBox3D",
-                        "GPUParticlesCollisionHeightField3D",
-                        "GPUParticlesCollisionSDF3D",
-                        "GPUParticlesCollisionSphere3D",
-                        "GraphEdit",
-                        "GraphElement",
-                        "GraphFrame",
-                        "GraphNode",
-                        "GridContainer",
-                        "GridMap",
-                        "GridMapEditorPlugin",
-                        "GrooveJoint2D",
-                        "HBoxContainer",
-                        "HFlowContainer",
-                        "HingeJoint3D",
-                        "HScrollBar",
-                        "HSeparator",
-                        "HSlider",
-                        "HSplitContainer",
-                        "HTTPRequest",
-                        "ImporterMeshInstance3D",
-                        "InstancePlaceholder",
-                        "ItemList",
-                        "Joint2D",
-                        "Joint3D",
-                        "Label",
-                        "Label3D",
-                        "Light2D",
-                        "Light3D",
-                        "LightmapGI",
-                        "LightmapProbe",
-                        "LightOccluder2D",
-                        "Line2D",
-                        "LineEdit",
-                        "LinkButton",
-                        "LookAtModifier3D",
-                        "MarginContainer",
-                        "Marker2D",
-                        "Marker3D",
-                        "MenuBar",
-                        "MenuButton",
-                        "MeshInstance2D",
-                        "MeshInstance3D",
-                        "MissingNode",
-                        "MultiMeshInstance2D",
-                        "MultiMeshInstance3D",
-                        "MultiplayerSpawner",
-                        "MultiplayerSynchronizer",
-                        "NavigationAgent2D",
-                        "NavigationAgent3D",
-                        "NavigationLink2D",
-                        "NavigationLink3D",
-                        "NavigationObstacle2D",
-                        "NavigationObstacle3D",
-                        "NavigationRegion2D",
-                        "NavigationRegion3D",
-                        "NinePatchRect",
-                        "Node2D",
-                        "Node3D",
-                        "OccluderInstance3D",
-                        "OmniLight3D",
-                        "OpenXRBindingModifierEditor",
-                        "OpenXRCompositionLayer",
-                        "OpenXRCompositionLayerCylinder",
-                        "OpenXRCompositionLayerEquirect",
-                        "OpenXRCompositionLayerQuad",
-                        "OpenXRHand",
-                        "OpenXRInteractionProfileEditor",
-                        "OpenXRInteractionProfileEditorBase",
-                        "OpenXRVisibilityMask",
-                        "OptionButton",
-                        "Panel",
-                        "PanelContainer",
-                        "Parallax2D",
-                        "ParallaxBackground",
-                        "ParallaxLayer",
-                        "Path2D",
-                        "Path3D",
-                        "PathFollow2D",
-                        "PathFollow3D",
-                        "PhysicalBone2D",
-                        "PhysicalBone3D",
-                        "PhysicalBoneSimulator3D",
-                        "PhysicsBody2D",
-                        "PhysicsBody3D",
-                        "PinJoint2D",
-                        "PinJoint3D",
-                        "PointLight2D",
-                        "Polygon2D",
-                        "Popup",
-                        "PopupMenu",
-                        "PopupPanel",
-                        "ProgressBar",
-                        "Range",
-                        "RayCast2D",
-                        "RayCast3D",
-                        "ReferenceRect",
-                        "ReflectionProbe",
-                        "RemoteTransform2D",
-                        "RemoteTransform3D",
-                        "ResourcePreloader",
-                        "RetargetModifier3D",
-                        "RichTextLabel",
-                        "RigidBody2D",
-                        "RigidBody3D",
-                        "RootMotionView",
-                        "ScriptCreateDialog",
-                        "ScriptEditor",
-                        "ScriptEditorBase",
-                        "ScrollBar",
-                        "ScrollContainer",
-                        "Separator",
-                        "ShaderGlobalsOverride",
-                        "ShapeCast2D",
-                        "ShapeCast3D",
-                        "Skeleton2D",
-                        "Skeleton3D",
-                        "SkeletonIK3D",
-                        "SkeletonModifier3D",
-                        "Slider",
-                        "SliderJoint3D",
-                        "SoftBody3D",
-                        "SpinBox",
-                        "SplitContainer",
-                        "SpotLight3D",
-                        "SpringArm3D",
-                        "SpringBoneCollision3D",
-                        "SpringBoneCollisionCapsule3D",
-                        "SpringBoneCollisionPlane3D",
-                        "SpringBoneCollisionSphere3D",
-                        "SpringBoneSimulator3D",
-                        "Sprite2D",
-                        "Sprite3D",
-                        "SpriteBase3D",
-                        "StaticBody2D",
-                        "StaticBody3D",
-                        "StatusIndicator",
-                        "SubViewport",
-                        "SubViewportContainer",
-                        "TabBar",
-                        "TabContainer",
-                        "TextEdit",
-                        "TextureButton",
-                        "TextureProgressBar",
-                        "TextureRect",
-                        "TileMap",
-                        "TileMapLayer",
-                        "Timer",
-                        "TouchScreenButton",
-                        "Tree",
-                        "VBoxContainer",
-                        "VehicleBody3D",
-                        "VehicleWheel3D",
-                        "VFlowContainer",
-                        "VideoStreamPlayer",
-                        "Viewport",
-                        "VisibleOnScreenEnabler2D",
-                        "VisibleOnScreenEnabler3D",
-                        "VisibleOnScreenNotifier2D",
-                        "VisibleOnScreenNotifier3D",
-                        "VisualInstance3D",
-                        "VoxelGI",
-                        "VScrollBar",
-                        "VSeparator",
-                        "VSlider",
-                        "VSplitContainer",
-                        "Window",
-                        "WorldEnvironment",
-                        "XRAnchor3D",
-                        "XRBodyModifier3D",
-                        "XRCamera3D",
-                        "XRController3D",
-                        "XRFaceModifier3D",
-                        "XRHandModifier3D",
-                        "XRNode3D",
-                        "XROrigin3D",
-                        # Resources
-                        "Resource",
-                        "AnimatedTexture",
-                        "Animation",
-                        "AnimationLibrary",
-                        "AnimationNode",
-                        "AnimationNodeAdd2",
-                        "AnimationNodeAdd3",
-                        "AnimationNodeAnimation",
-                        "AnimationNodeBlend2",
-                        "AnimationNodeBlend3",
-                        "AnimationNodeBlendSpace1D",
-                        "AnimationNodeBlendSpace2D",
-                        "AnimationNodeBlendTree",
-                        "AnimationNodeExtension",
-                        "AnimationNodeOneShot",
-                        "AnimationNodeOutput",
-                        "AnimationNodeStateMachine",
-                        "AnimationNodeStateMachinePlayback",
-                        "AnimationNodeStateMachineTransition",
-                        "AnimationNodeSub2",
-                        "AnimationNodeSync",
-                        "AnimationNodeTimeScale",
-                        "AnimationNodeTimeSeek",
-                        "AnimationNodeTransition",
-                        "AnimationRootNode",
-                        "ArrayMesh",
-                        "ArrayOccluder3D",
-                        "AtlasTexture",
-                        "AudioBusLayout",
-                        "AudioEffect",
-                        "AudioEffectAmplify",
-                        "AudioEffectBandLimitFilter",
-                        "AudioEffectBandPassFilter",
-                        "AudioEffectCapture",
-                        "AudioEffectChorus",
-                        "AudioEffectCompressor",
-                        "AudioEffectDelay",
-                        "AudioEffectDistortion",
-                        "AudioEffectEQ",
-                        "AudioEffectEQ10",
-                        "AudioEffectEQ21",
-                        "AudioEffectEQ6",
-                        "AudioEffectFilter",
-                        "AudioEffectHardLimiter",
-                        "AudioEffectHighPassFilter",
-                        "AudioEffectHighShelfFilter",
-                        "AudioEffectLimiter",
-                        "AudioEffectLowPassFilter",
-                        "AudioEffectLowShelfFilter",
-                        "AudioEffectNotchFilter",
-                        "AudioEffectPanner",
-                        "AudioEffectPhaser",
-                        "AudioEffectPitchShift",
-                        "AudioEffectRecord",
-                        "AudioEffectReverb",
-                        "AudioEffectSpectrumAnalyzer",
-                        "AudioEffectStereoEnhance",
-                        "AudioStream",
-                        "AudioStreamGenerator",
-                        "AudioStreamInteractive",
-                        "AudioStreamMicrophone",
-                        "AudioStreamMP3",
-                        "AudioStreamOggVorbis",
-                        "AudioStreamPlaylist",
-                        "AudioStreamPolyphonic",
-                        "AudioStreamRandomizer",
-                        "AudioStreamSynchronized",
-                        "AudioStreamWAV",
-                        "BaseMaterial3D",
-                        "BitMap",
-                        "BoneMap",
-                        "BoxMesh",
-                        "BoxOccluder3D",
-                        "BoxShape3D",
-                        "ButtonGroup",
-                        "CameraAttributes",
-                        "CameraAttributesPhysical",
-                        "CameraAttributesPractical",
-                        "CameraTexture",
-                        "CanvasItemMaterial",
-                        "CanvasTexture",
-                        "CapsuleMesh",
-                        "CapsuleShape2D",
-                        "CapsuleShape3D",
-                        "CircleShape2D",
-                        "CodeHighlighter",
-                        "ColorPalette",
-                        "Compositor",
-                        "CompositorEffect",
-                        "CompressedCubemap",
-                        "CompressedCubemapArray",
-                        "CompressedTexture2D",
-                        "CompressedTexture2DArray",
-                        "CompressedTexture3D",
-                        "CompressedTextureLayered",
-                        "ConcavePolygonShape2D",
-                        "ConcavePolygonShape3D",
-                        "ConvexPolygonShape2D",
-                        "ConvexPolygonShape3D",
-                        "CryptoKey",
-                        "CSharpScript",
-                        "Cubemap",
-                        "CubemapArray",
-                        "Curve",
-                        "Curve2D",
-                        "Curve3D",
-                        "CurveTexture",
-                        "CurveXYZTexture",
-                        "CylinderMesh",
-                        "CylinderShape3D",
-                        "EditorNode3DGizmoPlugin",
-                        "EditorSettings",
-                        "EditorSyntaxHighlighter",
-                        "Environment",
-                        "ExternalTexture",
-                        "FastNoiseLite",
-                        "FBXDocument",
-                        "FBXState",
-                        "FogMaterial",
-                        "Font",
-                        "FontFile",
-                        "FontVariation",
-                        "GDExtension",
-                        "GDScript",
-                        "GDScriptSyntaxHighlighter",
-                        "GLTFAccessor",
-                        "GLTFAnimation",
-                        "GLTFBufferView",
-                        "GLTFCamera",
-                        "GLTFDocument",
-                        "GLTFDocumentExtension",
-                        "GLTFDocumentExtensionConvertImporterMesh",
-                        "GLTFLight",
-                        "GLTFMesh",
-                        "GLTFNode",
-                        "GLTFPhysicsBody",
-                        "GLTFPhysicsShape",
-                        "GLTFSkeleton",
-                        "GLTFSkin",
-                        "GLTFSpecGloss",
-                        "GLTFState",
-                        "GLTFTexture",
-                        "GLTFTextureSampler",
-                        "Gradient",
-                        "GradientTexture1D",
-                        "GradientTexture2D",
-                        "HeightMapShape3D",
-                        "Image",
-                        "ImageTexture",
-                        "ImageTexture3D",
-                        "ImageTextureLayered",
-                        "ImmediateMesh",
-                        "ImporterMesh",
-                        "InputEvent",
-                        "InputEventAction",
-                        "InputEventFromWindow",
-                        "InputEventGesture",
-                        "InputEventJoypadButton",
-                        "InputEventJoypadMotion",
-                        "InputEventKey",
-                        "InputEventMagnifyGesture",
-                        "InputEventMIDI",
-                        "InputEventMouse",
-                        "InputEventMouseButton",
-                        "InputEventMouseMotion",
-                        "InputEventPanGesture",
-                        "InputEventScreenDrag",
-                        "InputEventScreenTouch",
-                        "InputEventShortcut",
-                        "InputEventWithModifiers",
-                        "JSON",
-                        "LabelSettings",
-                        "LightmapGIData",
-                        "Material",
-                        "Mesh",
-                        "MeshLibrary",
-                        "MeshTexture",
-                        "MissingResource",
-                        "MultiMesh",
-                        "NavigationMesh",
-                        "NavigationMeshSourceGeometryData2D",
-                        "NavigationMeshSourceGeometryData3D",
-                        "NavigationPolygon",
-                        "Noise",
-                        "NoiseTexture2D",
-                        "NoiseTexture3D",
-                        "Occluder3D",
-                        "OccluderPolygon2D",
-                        "OggPacketSequence",
-                        "OpenXRAction",
-                        "OpenXRActionBindingModifier",
-                        "OpenXRActionMap",
-                        "OpenXRActionSet",
-                        "OpenXRAnalogThresholdModifier",
-                        "OpenXRBindingModifier",
-                        "OpenXRDpadBindingModifier",
-                        "OpenXRHapticBase",
-                        "OpenXRHapticVibration",
-                        "OpenXRInteractionProfile",
-                        "OpenXRIPBinding",
-                        "OpenXRIPBindingModifier",
-                        "OptimizedTranslation",
-                        "ORMMaterial3D",
-                        "PackedDataContainer",
-                        "PackedScene",
-                        "PanoramaSkyMaterial",
-                        "ParticleProcessMaterial",
-                        "PhysicalSkyMaterial",
-                        "PhysicsMaterial",
-                        "PlaceholderCubemap",
-                        "PlaceholderCubemapArray",
-                        "PlaceholderMaterial",
-                        "PlaceholderMesh",
-                        "PlaceholderTexture2D",
-                        "PlaceholderTexture2DArray",
-                        "PlaceholderTexture3D",
-                        "PlaceholderTextureLayered",
-                        "PlaneMesh",
-                        "PointMesh",
-                        "PolygonOccluder3D",
-                        "PolygonPathFinder",
-                        "PortableCompressedTexture2D",
-                        "PrimitiveMesh",
-                        "PrismMesh",
-                        "ProceduralSkyMaterial",
-                        "QuadMesh",
-                        "QuadOccluder3D",
-                        "RDShaderFile",
-                        "RDShaderSPIRV",
-                        "RectangleShape2D",
-                        "RibbonTrailMesh",
-                        "RichTextEffect",
-                        "SceneReplicationConfig",
-                        "Script",
-                        "ScriptExtension",
-                        "SegmentShape2D",
-                        "SeparationRayShape2D",
-                        "SeparationRayShape3D",
-                        "Shader",
-                        "ShaderInclude",
-                        "ShaderMaterial",
-                        "Shape2D",
-                        "Shape3D",
-                        "Shortcut",
-                        "SkeletonModification2D",
-                        "SkeletonModification2DCCDIK",
-                        "SkeletonModification2DFABRIK",
-                        "SkeletonModification2DJiggle",
-                        "SkeletonModification2DLookAt",
-                        "SkeletonModification2DPhysicalBones",
-                        "SkeletonModification2DStackHolder",
-                        "SkeletonModification2DTwoBoneIK",
-                        "SkeletonModificationStack2D",
-                        "SkeletonProfile",
-                        "SkeletonProfileHumanoid",
-                        "Skin",
-                        "Sky",
-                        "SphereMesh",
-                        "SphereOccluder3D",
-                        "SphereShape3D",
-                        "SpriteFrames",
-                        "StandardMaterial3D",
-                        "StyleBox",
-                        "StyleBoxEmpty",
-                        "StyleBoxFlat",
-                        "StyleBoxLine",
-                        "StyleBoxTexture",
-                        "SyntaxHighlighter",
-                        "SystemFont",
-                        "TextMesh",
-                        "Texture",
-                        "Texture2D",
-                        "Texture2DArray",
-                        "Texture2DArrayRD",
-                        "Texture2DRD",
-                        "Texture3D",
-                        "Texture3DRD",
-                        "TextureCubemapArrayRD",
-                        "TextureCubemapRD",
-                        "TextureLayered",
-                        "TextureLayeredRD",
-                        "Theme",
-                        "TileMapPattern",
-                        "TileSet",
-                        "TileSetAtlasSource",
-                        "TileSetScenesCollectionSource",
-                        "TileSetSource",
-                        "TorusMesh",
-                        "Translation",
-                        "TubeTrailMesh",
-                        "VideoStream",
-                        "VideoStreamPlayback",
-                        "VideoStreamTheora",
-                        "ViewportTexture",
-                        "VisualShader",
-                        "VisualShaderNode",
-                        "VisualShaderNodeBillboard",
-                        "VisualShaderNodeBooleanConstant",
-                        "VisualShaderNodeBooleanParameter",
-                        "VisualShaderNodeClamp",
-                        "VisualShaderNodeColorConstant",
-                        "VisualShaderNodeColorFunc",
-                        "VisualShaderNodeColorOp",
-                        "VisualShaderNodeColorParameter",
-                        "VisualShaderNodeComment",
-                        "VisualShaderNodeCompare",
-                        "VisualShaderNodeConstant",
-                        "VisualShaderNodeCubemap",
-                        "VisualShaderNodeCubemapParameter",
-                        "VisualShaderNodeCurveTexture",
-                        "VisualShaderNodeCurveXYZTexture",
-                        "VisualShaderNodeCustom",
-                        "VisualShaderNodeDerivativeFunc",
-                        "VisualShaderNodeDeterminant",
-                        "VisualShaderNodeDistanceFade",
-                        "VisualShaderNodeDotProduct",
-                        "VisualShaderNodeExpression",
-                        "VisualShaderNodeFaceForward",
-                        "VisualShaderNodeFloatConstant",
-                        "VisualShaderNodeFloatFunc",
-                        "VisualShaderNodeFloatOp",
-                        "VisualShaderNodeFloatParameter",
-                        "VisualShaderNodeFrame",
-                        "VisualShaderNodeFresnel",
-                        "VisualShaderNodeGlobalExpression",
-                        "VisualShaderNodeGroupBase",
-                        "VisualShaderNodeIf",
-                        "VisualShaderNodeInput",
-                        "VisualShaderNodeIntConstant",
-                        "VisualShaderNodeIntFunc",
-                        "VisualShaderNodeIntOp",
-                        "VisualShaderNodeIntParameter",
-                        "VisualShaderNodeIs",
-                        "VisualShaderNodeLinearSceneDepth",
-                        "VisualShaderNodeMix",
-                        "VisualShaderNodeMultiplyAdd",
-                        "VisualShaderNodeOuterProduct",
-                        "VisualShaderNodeOutput",
-                        "VisualShaderNodeParameter",
-                        "VisualShaderNodeParameterRef",
-                        "VisualShaderNodeParticleAccelerator",
-                        "VisualShaderNodeParticleBoxEmitter",
-                        "VisualShaderNodeParticleConeVelocity",
-                        "VisualShaderNodeParticleEmit",
-                        "VisualShaderNodeParticleEmitter",
-                        "VisualShaderNodeParticleMeshEmitter",
-                        "VisualShaderNodeParticleMultiplyByAxisAngle",
-                        "VisualShaderNodeParticleOutput",
-                        "VisualShaderNodeParticleRandomness",
-                        "VisualShaderNodeParticleRingEmitter",
-                        "VisualShaderNodeParticleSphereEmitter",
-                        "VisualShaderNodeProximityFade",
-                        "VisualShaderNodeRandomRange",
-                        "VisualShaderNodeRemap",
-                        "VisualShaderNodeReroute",
-                        "VisualShaderNodeResizableBase",
-                        "VisualShaderNodeRotationByAxis",
-                        "VisualShaderNodeSample3D",
-                        "VisualShaderNodeScreenNormalWorldSpace",
-                        "VisualShaderNodeScreenUVToSDF",
-                        "VisualShaderNodeSDFRaymarch",
-                        "VisualShaderNodeSDFToScreenUV",
-                        "VisualShaderNodeSmoothStep",
-                        "VisualShaderNodeStep",
-                        "VisualShaderNodeSwitch",
-                        "VisualShaderNodeTexture",
-                        "VisualShaderNodeTexture2DArray",
-                        "VisualShaderNodeTexture2DArrayParameter",
-                        "VisualShaderNodeTexture2DParameter",
-                        "VisualShaderNodeTexture3D",
-                        "VisualShaderNodeTexture3DParameter",
-                        "VisualShaderNodeTextureParameter",
-                        "VisualShaderNodeTextureParameterTriplanar",
-                        "VisualShaderNodeTextureSDF",
-                        "VisualShaderNodeTextureSDFNormal",
-                        "VisualShaderNodeTransformCompose",
-                        "VisualShaderNodeTransformConstant",
-                        "VisualShaderNodeTransformDecompose",
-                        "VisualShaderNodeTransformFunc",
-                        "VisualShaderNodeTransformOp",
-                        "VisualShaderNodeTransformParameter",
-                        "VisualShaderNodeTransformVecMult",
-                        "VisualShaderNodeUIntConstant",
-                        "VisualShaderNodeUIntFunc",
-                        "VisualShaderNodeUIntOp",
-                        "VisualShaderNodeUIntParameter",
-                        "VisualShaderNodeUVFunc",
-                        "VisualShaderNodeUVPolarCoord",
-                        "VisualShaderNodeVarying",
-                        "VisualShaderNodeVaryingGetter",
-                        "VisualShaderNodeVaryingSetter",
-                        "VisualShaderNodeVec2Constant",
-                        "VisualShaderNodeVec2Parameter",
-                        "VisualShaderNodeVec3Constant",
-                        "VisualShaderNodeVec3Parameter",
-                        "VisualShaderNodeVec4Constant",
-                        "VisualShaderNodeVec4Parameter",
-                        "VisualShaderNodeVectorBase",
-                        "VisualShaderNodeVectorCompose",
-                        "VisualShaderNodeVectorDecompose",
-                        "VisualShaderNodeVectorDistance",
-                        "VisualShaderNodeVectorFunc",
-                        "VisualShaderNodeVectorLen",
-                        "VisualShaderNodeVectorOp",
-                        "VisualShaderNodeVectorRefract",
-                        "VisualShaderNodeWorldPositionFromDepth",
-                        "VoxelGIData",
-                        "World2D",
-                        "World3D",
-                        "WorldBoundaryShape2D",
-                        "WorldBoundaryShape3D",
-                        "X509Certificate",
-                        # Other objects
-                        "Object",
-                        "AESContext",
-                        "AStar2D",
-                        "AStar3D",
-                        "AStarGrid2D",
-                        "AudioEffectInstance",
-                        "AudioEffectSpectrumAnalyzerInstance",
-                        "AudioSample",
-                        "AudioSamplePlayback",
-                        "AudioServer",
-                        "AudioStreamGeneratorPlayback",
-                        "AudioStreamPlayback",
-                        "AudioStreamPlaybackInteractive",
-                        "AudioStreamPlaybackOggVorbis",
-                        "AudioStreamPlaybackPlaylist",
-                        "AudioStreamPlaybackPolyphonic",
-                        "AudioStreamPlaybackResampled",
-                        "AudioStreamPlaybackSynchronized",
-                        "CallbackTweener",
-                        "CameraFeed",
-                        "CameraServer",
-                        "CharFXTransform",
-                        "ClassDB",
-                        "ConfigFile",
-                        "Crypto",
-                        "DirAccess",
-                        "DisplayServer",
-                        "DTLSServer",
-                        "EditorContextMenuPlugin",
-                        "EditorDebuggerPlugin",
-                        "EditorDebuggerSession",
-                        "EditorExportPlatform",
-                        "EditorExportPlatformAndroid",
-                        "EditorExportPlatformExtension",
-                        "EditorExportPlatformIOS",
-                        "EditorExportPlatformLinuxBSD",
-                        "EditorExportPlatformMacOS",
-                        "EditorExportPlatformPC",
-                        "EditorExportPlatformWeb",
-                        "EditorExportPlatformWindows",
-                        "EditorExportPlugin",
-                        "EditorExportPreset",
-                        "EditorFeatureProfile",
-                        "EditorFileSystemDirectory",
-                        "EditorFileSystemImportFormatSupportQuery",
-                        "EditorImportPlugin",
-                        "EditorInspectorPlugin",
-                        "EditorInterface",
-                        "EditorNode3DGizmo",
-                        "EditorPaths",
-                        "EditorResourceConversionPlugin",
-                        "EditorResourcePreviewGenerator",
-                        "EditorResourceTooltipPlugin",
-                        "EditorSceneFormatImporter",
-                        "EditorSceneFormatImporterBlend",
-                        "EditorSceneFormatImporterFBX2GLTF",
-                        "EditorSceneFormatImporterGLTF",
-                        "EditorSceneFormatImporterUFBX",
-                        "EditorScenePostImport",
-                        "EditorScenePostImportPlugin",
-                        "EditorScript",
-                        "EditorSelection",
-                        "EditorTranslationParserPlugin",
-                        "EditorUndoRedoManager",
-                        "EditorVCSInterface",
-                        "EncodedObjectAsID",
-                        "ENetConnection",
-                        "ENetMultiplayerPeer",
-                        "ENetPacketPeer",
-                        "Engine",
-                        "EngineDebugger",
-                        "EngineProfiler",
-                        "Expression",
-                        "FileAccess",
-                        "FramebufferCacheRD",
-                        "GDExtensionManager",
-                        "Geometry2D",
-                        "Geometry3D",
-                        "GLTFObjectModelProperty",
-                        "HashingContext",
-                        "HMACContext",
-                        "HTTPClient",
-                        "ImageFormatLoader",
-                        "ImageFormatLoaderExtension",
-                        "Input",
-                        "InputMap",
-                        "IntervalTweener",
-                        "IP",
-                        "JavaClass",
-                        "JavaClassWrapper",
-                        "JavaObject",
-                        "JavaScriptBridge",
-                        "JavaScriptObject",
-                        "JNISingleton",
-                        "JSONRPC",
-                        "KinematicCollision2D",
-                        "KinematicCollision3D",
-                        "Lightmapper",
-                        "LightmapperRD",
-                        "MainLoop",
-                        "Marshalls",
-                        "MeshConvexDecompositionSettings",
-                        "MeshDataTool",
-                        "MethodTweener",
-                        "MobileVRInterface",
-                        "MovieWriter",
-                        "MultiplayerAPI",
-                        "MultiplayerAPIExtension",
-                        "MultiplayerPeer",
-                        "MultiplayerPeerExtension",
-                        "Mutex",
-                        "NativeMenu",
-                        "NavigationMeshGenerator",
-                        "NavigationPathQueryParameters2D",
-                        "NavigationPathQueryParameters3D",
-                        "NavigationPathQueryResult2D",
-                        "NavigationPathQueryResult3D",
-                        "NavigationServer2D",
-                        "NavigationServer3D",
-                        "Node",
-                        "Node3DGizmo",
-                        "OfflineMultiplayerPeer",
-                        "OggPacketSequencePlayback",
-                        "OpenXRAPIExtension",
-                        "OpenXRExtensionWrapperExtension",
-                        "OpenXRInteractionProfileMetadata",
-                        "OpenXRInterface",
-                        "OS",
-                        "PackedDataContainerRef",
-                        "PacketPeer",
-                        "PacketPeerDTLS",
-                        "PacketPeerExtension",
-                        "PacketPeerStream",
-                        "PacketPeerUDP",
-                        "PCKPacker",
-                        "Performance",
-                        "PhysicsDirectBodyState2D",
-                        "PhysicsDirectBodyState2DExtension",
-                        "PhysicsDirectBodyState3D",
-                        "PhysicsDirectBodyState3DExtension",
-                        "PhysicsDirectSpaceState2D",
-                        "PhysicsDirectSpaceState2DExtension",
-                        "PhysicsDirectSpaceState3D",
-                        "PhysicsDirectSpaceState3DExtension",
-                        "PhysicsPointQueryParameters2D",
-                        "PhysicsPointQueryParameters3D",
-                        "PhysicsRayQueryParameters2D",
-                        "PhysicsRayQueryParameters3D",
-                        "PhysicsServer2D",
-                        "PhysicsServer2DExtension",
-                        "PhysicsServer2DManager",
-                        "PhysicsServer3D",
-                        "PhysicsServer3DExtension",
-                        "PhysicsServer3DManager",
-                        "PhysicsServer3DRenderingServerHandler",
-                        "PhysicsShapeQueryParameters2D",
-                        "PhysicsShapeQueryParameters3D",
-                        "PhysicsTestMotionParameters2D",
-                        "PhysicsTestMotionParameters3D",
-                        "PhysicsTestMotionResult2D",
-                        "PhysicsTestMotionResult3D",
-                        "ProjectSettings",
-                        "PropertyTweener",
-                        "RandomNumberGenerator",
-                        "RDAttachmentFormat",
-                        "RDFramebufferPass",
-                        "RDPipelineColorBlendState",
-                        "RDPipelineColorBlendStateAttachment",
-                        "RDPipelineDepthStencilState",
-                        "RDPipelineMultisampleState",
-                        "RDPipelineRasterizationState",
-                        "RDPipelineSpecializationConstant",
-                        "RDSamplerState",
-                        "RDShaderSource",
-                        "RDTextureFormat",
-                        "RDTextureView",
-                        "RDUniform",
-                        "RDVertexAttribute",
-                        "RefCounted",
-                        "RegEx",
-                        "RegExMatch",
-                        "RenderData",
-                        "RenderDataExtension",
-                        "RenderDataRD",
-                        "RenderingDevice",
-                        "RenderingServer",
-                        "RenderSceneBuffers",
-                        "RenderSceneBuffersConfiguration",
-                        "RenderSceneBuffersExtension",
-                        "RenderSceneBuffersRD",
-                        "RenderSceneData",
-                        "RenderSceneDataExtension",
-                        "RenderSceneDataRD",
-                        "Resource",
-                        "ResourceFormatLoader",
-                        "ResourceFormatSaver",
-                        "ResourceImporter",
-                        "ResourceImporterBitMap",
-                        "ResourceImporterBMFont",
-                        "ResourceImporterCSVTranslation",
-                        "ResourceImporterDynamicFont",
-                        "ResourceImporterImage",
-                        "ResourceImporterImageFont",
-                        "ResourceImporterLayeredTexture",
-                        "ResourceImporterMP3",
-                        "ResourceImporterOBJ",
-                        "ResourceImporterOggVorbis",
-                        "ResourceImporterScene",
-                        "ResourceImporterShaderFile",
-                        "ResourceImporterTexture",
-                        "ResourceImporterTextureAtlas",
-                        "ResourceImporterWAV",
-                        "ResourceLoader",
-                        "ResourceSaver",
-                        "ResourceUID",
-                        "SceneMultiplayer",
-                        "SceneState",
-                        "SceneTree",
-                        "SceneTreeTimer",
-                        "ScriptLanguage",
-                        "ScriptLanguageExtension",
-                        "Semaphore",
-                        "ShaderIncludeDB",
-                        "SkinReference",
-                        "StreamPeer",
-                        "StreamPeerBuffer",
-                        "StreamPeerExtension",
-                        "StreamPeerGZIP",
-                        "StreamPeerTCP",
-                        "StreamPeerTLS",
-                        "SubtweenTweener",
-                        "SurfaceTool",
-                        "TCPServer",
-                        "TextLine",
-                        "TextParagraph",
-                        "TextServer",
-                        "TextServerAdvanced",
-                        "TextServerDummy",
-                        "TextServerExtension",
-                        "TextServerFallback",
-                        "TextServerManager",
-                        "ThemeDB",
-                        "Thread",
-                        "TileData",
-                        "Time",
-                        "TLSOptions",
-                        "TranslationDomain",
-                        "TranslationServer",
-                        "TreeItem",
-                        "TriangleMesh",
-                        "Tween",
-                        "Tweener",
-                        "UDPServer",
-                        "UndoRedo",
-                        "UniformSetCacheRD",
-                        "UPNP",
-                        "UPNPDevice",
-                        "WeakRef",
-                        "WebRTCDataChannel",
-                        "WebRTCDataChannelExtension",
-                        "WebRTCMultiplayerPeer",
-                        "WebRTCPeerConnection",
-                        "WebRTCPeerConnectionExtension",
-                        "WebSocketMultiplayerPeer",
-                        "WebSocketPeer",
-                        "WebXRInterface",
-                        "WorkerThreadPool",
-                        "XMLParser",
-                        "XRBodyTracker",
-                        "XRControllerTracker",
-                        "XRFaceTracker",
-                        "XRHandTracker",
-                        "XRInterface",
-                        "XRInterfaceExtension",
-                        "XRPose",
-                        "XRPositionalTracker",
-                        "XRServer",
-                        "XRTracker",
-                        "XRVRS",
-                        "ZIPPacker",
-                        "ZIPReader",
-                        # Editor-only
-                        "EditorCommandPalette",
-                        "EditorContextMenuPlugin",
-                        "EditorDebuggerPlugin",
-                        "EditorDebuggerSession",
-                        "EditorExportPlatform",
-                        "EditorExportPlatformAndroid",
-                        "EditorExportPlatformExtension",
-                        "EditorExportPlatformIOS",
-                        "EditorExportPlatformLinuxBSD",
-                        "EditorExportPlatformMacOS",
-                        "EditorExportPlatformPC",
-                        "EditorExportPlatformWeb",
-                        "EditorExportPlatformWindows",
-                        "EditorExportPlugin",
-                        "EditorExportPreset",
-                        "EditorFeatureProfile",
-                        "EditorFileDialog",
-                        "EditorFileSystem",
-                        "EditorFileSystemDirectory",
-                        "EditorFileSystemImportFormatSupportQuery",
-                        "EditorImportPlugin",
-                        "EditorInspector",
-                        "EditorInspectorPlugin",
-                        "EditorInterface",
-                        "EditorNode3DGizmo",
-                        "EditorNode3DGizmoPlugin",
-                        "EditorPaths",
-                        "EditorPlugin",
-                        "EditorProperty",
-                        "EditorResourceConversionPlugin",
-                        "EditorResourcePicker",
-                        "EditorResourcePreview",
-                        "EditorResourcePreviewGenerator",
-                        "EditorResourceTooltipPlugin",
-                        "EditorSceneFormatImporter",
-                        "EditorSceneFormatImporterBlend",
-                        "EditorSceneFormatImporterFBX2GLTF",
-                        "EditorSceneFormatImporterGLTF",
-                        "EditorSceneFormatImporterUFBX",
-                        "EditorScenePostImport",
-                        "EditorScenePostImportPlugin",
-                        "EditorScript",
-                        "EditorScriptPicker",
-                        "EditorSelection",
-                        "EditorSettings",
-                        "EditorSpinSlider",
-                        "EditorSyntaxHighlighter",
-                        "EditorToaster",
-                        "EditorTranslationParserPlugin",
-                        "EditorUndoRedoManager",
-                        "EditorVCSInterface",
-                        "FileSystemDock",
-                        "ScriptCreateDialog",
-                        "ScriptEditor",
-                        "ScriptEditorBase",
-                    ),
+                    get_classes("./classes/"),
                     prefix=r"(?<!\.)",
                     suffix=r"\b",
                 ),