mirror of
https://github.com/Egonex-AI/Understand-Anything.git
synced 2026-06-22 10:58:03 +08:00
Replace the TypeScript/JavaScript-biased analysis pipeline with a truly language-agnostic system. The core architecture was already language-neutral (graph schema, dashboard, search) — the bias lived in agent prompts, tree-sitter plugin, and language-lesson system. Core changes: - LanguageConfig + FrameworkConfig types with Zod validation - LanguageRegistry (12 languages) and FrameworkRegistry (10 frameworks) - Config-driven TreeSitterPlugin replacing hardcoded TS/JS grammars - PluginRegistry now delegates to LanguageRegistry for extension mapping - Language-lesson system uses config for display names and concepts Prompt system: - SKILL.md generalized: dynamic injection of language snippets and framework addendums instead of hardcoded if/else conditionals - 12 language prompt snippets (languages/*.md) with concepts, patterns, frameworks per language - 10 framework addendums (frameworks/*.md) with canonical file roles, edge patterns, architectural layers — Django/FastAPI/Flask preserved and split, plus React/Next.js/Express/Vue/Spring/Rails/Gin added - Extended entry points, directory patterns, and test patterns across all 12 language ecosystems in base prompts
2.4 KiB
2.4 KiB
Ruby Language Prompt Snippet
Key Concepts
- Blocks/Procs/Lambdas: First-class callable objects; blocks are implicit, procs and lambdas are explicit
- Mixins (include/extend): Share behavior across classes via modules without inheritance
- Metaprogramming: Dynamic method definition (
define_method), interception (method_missing) - Duck Typing: Objects are defined by what they can do, not what class they are
- DSLs: Domain-specific languages built using blocks and metaprogramming (e.g., Rails routes)
- Monkey Patching: Reopening existing classes to add or modify methods at runtime
- Symbols: Immutable, interned strings (
:name) used as identifiers and hash keys - Open Classes: Any class can be reopened and extended at any point in the program
- Enumerable Module: Mixin providing collection methods (map, select, reduce) to any class with
each
Import Patterns
require 'gem_name'— load a gem or standard library modulerequire_relative './file'— load a file relative to the current file's directoryload 'file.rb'— load and re-execute a file (unlike require, does not cache)autoload :ClassName, 'path'— lazy loading of constants on first reference
File Patterns
Gemfile— dependency declarations managed by BundlerRakefile— task definitions (Ruby's make equivalent)spec/— RSpec test directory with*_spec.rbconventiontest/— Minitest directory withtest_*.rbor*_test.rbconventionconfig.ru— Rack application entry point for web serverslib/— main source code directory by convention
Common Frameworks
- Rails — Full-stack web framework following convention over configuration
- Sinatra — Minimal DSL for creating web applications quickly
- RSpec — Behavior-driven testing framework with expressive DSL
- Sidekiq — Background job processing using Redis-backed queues
- Grape — REST API micro-framework for Ruby
Example Language Notes
Uses
method_missingto dynamically delegate attribute access to the wrapped model object. When a method is not found on the decorator, it falls through to the model, providing transparent delegation without explicit forwarding methods.Rails relies heavily on convention over configuration — file placement in
app/models/,app/controllers/, etc. determines behavior without explicit registration.