rtfpessoa / diff2html

Pretty diff to html javascript library (diff2html)
https://diff2html.xyz
MIT License
2.87k stars 278 forks source link

Feature request: show invisiable characters. #430

Open leoleoasd opened 2 years ago

leoleoasd commented 2 years ago

I'm writing an autograder for our data structure and algorithm course, and I'm using diff2html to tell how students their program's output differs with answers.

Some badly written programs output '\0's at the end of each line, and they aren't visible in the diff. Adding support for showing invisible characters (and an option to toggle it) just like Jetbrains IDEs would be nice. image image

leoleoasd commented 2 years ago

A realy bad workaround:

const content = content.split('\n')
// my diff only have one file, so we extract file header by the first 3 lines
const header = content.slice(0, 3).join('\n')
// and extract inner diff
let inner = content.slice(3).join('\n')
for (let i = 0; i < 0x20; i += 1) {
  // append an unicode control picture after every invisiable character
  inner = inner.replaceAll(String.fromCharCode(i), String.fromCharCode(i + 0x2400) + String.fromCharCode(i))
}
console.log(header + '\n' + inner)

image

Would be nice the have the replacement happen in diff2html, because not all diffs only contain one file, and parsing them before send them into diff2html would be re-inventing the wheel.

rtfpessoa commented 2 years ago

👋 Sounds like an interesting feature to have if you are interested in contributing it.

It could be replace some special chars and it could be enabled by a configuration.