{"id":22952472,"url":"https://github.com/omarassadi/jennie","last_synced_at":"2025-07-30T04:09:45.321Z","repository":{"id":264783844,"uuid":"440323861","full_name":"OmarAssadi/Jennie","owner":"OmarAssadi","description":"BBCode-generating syntax highlighter based on Shiki for vBulletin and other old forum software. Uses standard VS Code themes and TextMate grammar.","archived":false,"fork":false,"pushed_at":"2021-12-20T22:44:40.000Z","size":273,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2025-07-27T05:36:03.028Z","etag":null,"topics":["bbcode","shiki","shiki-highlighter","shikijs","syntax-highlighter","syntax-highlighting","textmate","textmate-grammar","textmate-language","typescript","vbulletin","vbulletin3","vbulletin4","vscode","vscode-language"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OmarAssadi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-12-20T22:32:45.000Z","updated_at":"2022-01-04T05:34:57.000Z","dependencies_parsed_at":"2024-11-26T09:45:24.248Z","dependency_job_id":"0e790779-5380-4db7-a8ad-29bf8dbdc9d7","html_url":"https://github.com/OmarAssadi/Jennie","commit_stats":null,"previous_names":["omarassadi/jennie"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/OmarAssadi/Jennie","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OmarAssadi%2FJennie","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OmarAssadi%2FJennie/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OmarAssadi%2FJennie/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OmarAssadi%2FJennie/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OmarAssadi","download_url":"https://codeload.github.com/OmarAssadi/Jennie/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OmarAssadi%2FJennie/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267808215,"owners_count":24147388,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-30T02:00:09.044Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bbcode","shiki","shiki-highlighter","shikijs","syntax-highlighter","syntax-highlighting","textmate","textmate-grammar","textmate-language","typescript","vbulletin","vbulletin3","vbulletin4","vscode","vscode-language"],"created_at":"2024-12-14T15:37:09.816Z","updated_at":"2025-07-30T04:09:45.293Z","avatar_url":"https://github.com/OmarAssadi.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Jennie\n\nJennie is a syntax highlighter targeted at older forum software whose operators either\ncannot or will not add native highlighting support. \n\nJennie was built with vBulletin in mind for [Rune-Server][r-s]. Other forum software \nmay work, however vBulletin is relatively unique in that `[CODE]...[/CODE]` tags \ncontinue to parse and render inner bbcode, which allows us to simply wrap tokens \nin `[COLOR=\"#HEXCOLOR\"][/COLOR]` tags and then insert the output into a `[CODE]` \nblock for a native-feeling highlighted snippet.\n\nJennie supports standard Visual Studio Code themes and TextMate grammar, allowing Jennie\nto understand and highlight any language which has either a corresponding VS Code \nextension or TextMate grammar.\n\nAdditionally, as Jennie uses the [same tokenizer][vs-textmate] as VS Code, given the\nsame blocks of text, the highlighted output will be more or less identical between\nthe two. The end result is often significantly better than what Prism or highlight.js \nwould provide, particularly with complex embedded grammar, like those found in \ntemplating engines (e.g., Laravel's Blade and Microsoft's Razor templates) or \nembedded regular expressions and SQL statements.\n\nJennie also makes use of @Microsoft's [TypeScript port][vs-langdetect] of @yoeo's \n[guesslang][guesslang] for automatic programming language detection, allowing the user\nto simply hit the REST endpoint with a block of text and, in the majority of cases, \nreceive the correct highlighted output without needing to specify any information about\nthe input.\n\n## Why Jennie?\n\n![Talking about picking a name for the project][jennie-img]\n\n## Demonstration\n\nBelow, you can find some screenshots of Jennie in action.\n\n1. C, [Quake III's fast inverse square root][qrsqrt]\n2. Laravel Blade with embedded PHP, regex, and SQL; [random \"code\"][blade-demo] \nfor demonstration purposes.\n\n### vBulletin ([Dark Plus][vscode-dark+] and [BlueFox][bluefox])\n\n![Code demo vBulletin][rs-demo]\n\n### NexusPHP ([Solarized Light][solarized-light])\n\n![Code demo NexusPHP][u2-demo]\n\n## Roadmap\n\n- [x] Tokenize code with TextMate grammars\n- [x] Parse VS Code themes and map tokens\n- [x] Render bbcode from themed tokens\n- [x] Automatically detect input language\n- [ ] Some sort of frontend\n- [ ] Pure clientside port\n- [ ] Setup guide\n\n## Acknowledgements\n\n* [shikijs/shiki][shiki] - Used as a wrapper around [microsoft/vscode-textmate]\n[vs-textmate]. Initially I wrote my own wrapper, but after discovering shiki, I\nquickly switched as it already provided all the utilities I needed out of the box.\n* [microsoft/vscode-language][vs-langdetect] - Used for automatic language detection\n* [Spooky][spooky] - Inspiration for the project\n\n## License\n\n* Licensed under the [ISC](/LICENSE) license.\n\n[r-s]: https://www.rune-server.ee/\n[vs-textmate]: https://github.com/microsoft/vscode-textmate\n[shiki]: https://github.com/shikijs/shiki\n[vs-langdetect]: https://github.com/microsoft/vscode-languagedetection\n[guesslang]: https://github.com/yoeo/guesslang\n[jennie-img]: https://user-images.githubusercontent.com/23220162/146735197-35189344-cdb8-490d-8044-fdcaec6053bb.png\n[vscode-dark+]: https://github.com/microsoft/vscode/blob/5155301ccab5d97035111eb4229914ac7548aa86/extensions/theme-defaults/themes/dark_plus.json\n[solarized-light]: https://github.com/microsoft/vscode/blob/85694fcf4d4d5c5b90a3b9d0ea96e3765efd4472/extensions/theme-solarized-light/themes/solarized-light-color-theme.json\n[bluefox]: http://www.vbstyles.com/bluefox-4x-vbulletin-theme-i12.html\n[qrsqrt]: https://github.com/id-Software/Quake-III-Arena/blob/dbe4ddb10315479fc00086f08e25d968b4b43c49/code/game/q_math.c#L548\n[blade-demo]: https://gist.github.com/OmarAssadi/8f9d0d40bc6a6e7c6e7c0ce28b3f7da9\n[rs-demo]: https://user-images.githubusercontent.com/23220162/146766126-e8bf2fcf-ea67-4ea9-ac29-374bf32ea126.png\n[u2-demo]: https://user-images.githubusercontent.com/23220162/146766207-568bb4a9-f486-42d3-9fda-c73e9ba9fb48.png\n[spooky]: https://www.rune-server.ee/member.php?u=95295\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomarassadi%2Fjennie","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fomarassadi%2Fjennie","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomarassadi%2Fjennie/lists"}