@@ -150,14 +150,38 @@ the map already scanned.
150150
151151## Language support
152152
153- | Language | Parser | Extracted |
154- | ---| ---| ---|
155- | Python | stdlib ` ast ` (precise) | functions, classes, params/annotations, docstrings, Flask/FastAPI/Django routes, SQLAlchemy/Django models, raw SQL, ` requests ` /` httpx ` calls |
156- | JavaScript / TypeScript / JSX / TSX / Vue / Svelte | structural regex + brace matching | functions, arrow fns, classes, Express/Nest/Fastify routes, ` fetch ` /` axios ` calls, Mongoose/Prisma/Sequelize/Knex/TypeORM, raw SQL |
157- | Java, C#, Go, PHP, Ruby | structural regex | functions/methods, classes, Spring/ASP.NET/Laravel/Rails/Gin routes, raw SQL |
158- | SQL | regex | ` CREATE TABLE ` schemas with columns |
159- | Config (` .env ` , json/yaml/toml/ini, settings.py…) | key scan | DB connection settings — ** credentials always masked** |
160- | Anything else (Rust, Kotlin, Swift, C/C++…) | — | shown in the UI as "⚠ Unsupported — parsing skipped", never silently dropped |
153+ Parser used per language, then exactly what gets extracted — checked feature
154+ by feature against the actual parser code, not a marketing table:
155+
156+ | Language | Parser | Functions / methods | Classes / structs | Backend routes | Outgoing API calls | ORM / DB models | Raw SQL | Call graph | Page-nav links |
157+ | ---| ---| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
158+ | Python | stdlib ` ast ` (precise) | ✅ | ✅ | ✅ Flask / FastAPI / Django | ✅ ` requests ` / ` httpx ` / ` aiohttp ` / ` urllib ` | ✅ SQLAlchemy / Django / peewee / tortoise | ✅ | ✅ | – |
159+ | JavaScript / TypeScript / JSX / TSX | regex + brace matching | ✅ | ✅ | ✅ Express / Fastify / Koa / NestJS | ✅ ` fetch ` / ` axios ` | ✅ Mongoose / Prisma / Sequelize / Knex / TypeORM | ✅ | ✅ | – |
160+ | Vue / Svelte | regex, ` <script> ` block only¹ | ✅ | ✅ | ✅ (same as JS) | ✅ (same as JS) | ✅ (same as JS) | ✅ | ✅ | – |
161+ | Java | regex | ✅ | ✅ | ✅ Spring ` @*Mapping ` | – | – | ✅ | ✅ | – |
162+ | C# | regex | ✅ | ✅ | ✅ ASP.NET ` [Http*] ` | – | – | ✅ | ✅ | – |
163+ | Go | regex | ✅ | ✅ (structs) | ✅ Gin / net-http style | – | – | ✅ | ✅ | – |
164+ | PHP | regex | ✅ | ✅ | ✅ Laravel ` Route:: ` | – | – | ✅ | ✅ | ✅ |
165+ | Ruby | regex | ✅ | ✅ | ✅ Rails / Sinatra | – | – | ✅ | ✅ | ✅ |
166+ | SQL (` .sql ` files) | regex | – | – | – | – | ✅ ` CREATE TABLE ` schemas + columns | ✅ | – | – |
167+ | Config (` .env ` , json/yaml/toml/ini/xml…)² | key scan | – | – | – | – | – | – | – | – |
168+ | Anything else (Rust, Kotlin, Swift, C/C++, Scala, Elixir, Erlang, Lua, R, Perl, Dart, Zig…) | – | – | – | – | – | – | – | – | – |
169+
170+ Unsupported languages still show up in the Explorer tree with an
171+ "⚠ Unsupported — parsing skipped" badge — never silently dropped — they just
172+ have no functions/edges to draw.
173+
174+ ¹ Vue/Svelte only parse the ` <script> ` block — template-only bindings
175+ (` @click ` , ` v-on ` , Svelte reactive markup) aren't extracted.
176+ ² Config-format files get a DB-connection-settings scan instead of code
177+ extraction — ** credentials always masked** , see [ export.py] ( codebread/export.py ) -embedded
178+ source too. Files like ` settings.py ` or ` config.js ` are parsed as their real
179+ language (full extraction above), not this bucket — only non-code formats
180+ (json/yaml/toml/ini/` .env ` /xml/properties) land here.
181+
182+ Only Python's ` ast ` -based parser captures real parameter type annotations,
183+ return types, and docstrings — every regex-based parser above extracts
184+ parameter * names* only.
161185
162186## How it classifies layers
163187
0 commit comments