mirror of
https://github.com/Xevion/find-syntax.git
synced 2025-12-09 16:07:11 -06:00
34 lines
1.8 KiB
Markdown
34 lines
1.8 KiB
Markdown
# find-syntax
|
|
|
|
An experiment to try and find the ideal syntax highlighter for an arbitrary snippet.
|
|
|
|
- Given a snippet of code, query the GitHub Markdown API to generate highlighted HTML.
|
|
- Determine the complexity and level of color in the generated HTML.
|
|
- Report and display the results, showing the "best" syntax highlighter for the snippet.
|
|
|
|
## Analysis
|
|
|
|
- Colorization can be counting the number of non-whitespace characters inside an element with a classname starting with `pl-` as a percentage of all non-whitespace characters.
|
|
- Some class identifiers represent white colors, and should be manually blacklisted from being counted.
|
|
- The deepest/closest classname should be used to determine the color.
|
|
- CSS analysis may be required if multiple classnames are used to determine the color. This shouldn't happen though.
|
|
- Complexity can be determined by analyzing the average coverage for each color within the colorized text.
|
|
- [Distribution calculation](https://gist.github.com/Xevion/1b5c971e88ac51521c133cc7e04ecdff)
|
|
|
|
## Goals
|
|
|
|
- Memory caching of API results to prevent unnecessary requests.
|
|
- Automatic rate limiting and threading optimizations with Tokio, Governor, and Reqwest.
|
|
- GitHub Token & User-Agent compliance.
|
|
- Heuristics for determining the "best" syntax highlighter for per-request efficiency and overall speed.
|
|
|
|
### Future
|
|
|
|
- Provide a server with a nice user intreface for viewing the results using GitHub's syntax.
|
|
- [Light] & [Dark] mode options.
|
|
- OAuth login to allow users to view their own private repos.
|
|
- Ability to select parts of the text that should have no color + some color to fine-tune the results.
|
|
|
|
[light]: https://github.com/primer/github-syntax-light/blob/master/lib/github-light.css
|
|
[dark]: https://github.com/primer/github-syntax-dark/blob/master/lib/github-dark.css
|