forked from FINAKON/HelpProject
1. Initial Commit - a boiler plate code and POC to realize the concept of context sensitive help 2. Frontend code written in ReactJS 3. Backend code written in Java, Spring Boot Framework 4. Frontend Start: pre-requisites : node, npm npm run dev ==> to start the frontend vite server 5. Backend Start: pre-requisites : java, mvn mvn spring-boot:run ==> to start the backend server 6. Visit http://localhost:5173/ for basic demo of help, press F1 in textboxes 7. Visit http://localhost:5173/editor and enter "admin123" to add/modify texts. Happy Coding !!! Thank you, Bhargava.
149 lines
3.7 KiB
JavaScript
Executable File
149 lines
3.7 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
(function() {
|
|
|
|
var fs = require('fs');
|
|
var stringEscape = require('../jsesc.js');
|
|
var strings = process.argv.splice(2);
|
|
var stdin = process.stdin;
|
|
var data;
|
|
var timeout;
|
|
var isObject = false;
|
|
var options = {};
|
|
var log = console.log;
|
|
|
|
var main = function() {
|
|
var option = strings[0];
|
|
|
|
if (/^(?:-h|--help|undefined)$/.test(option)) {
|
|
log(
|
|
'jsesc v%s - https://mths.be/jsesc',
|
|
stringEscape.version
|
|
);
|
|
log([
|
|
'\nUsage:\n',
|
|
'\tjsesc [string]',
|
|
'\tjsesc [-s | --single-quotes] [string]',
|
|
'\tjsesc [-d | --double-quotes] [string]',
|
|
'\tjsesc [-w | --wrap] [string]',
|
|
'\tjsesc [-e | --escape-everything] [string]',
|
|
'\tjsesc [-t | --escape-etago] [string]',
|
|
'\tjsesc [-6 | --es6] [string]',
|
|
'\tjsesc [-l | --lowercase-hex] [string]',
|
|
'\tjsesc [-j | --json] [string]',
|
|
'\tjsesc [-o | --object] [stringified_object]', // `JSON.parse()` the argument
|
|
'\tjsesc [-p | --pretty] [string]', // `compact: false`
|
|
'\tjsesc [-v | --version]',
|
|
'\tjsesc [-h | --help]',
|
|
'\nExamples:\n',
|
|
'\tjsesc \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'',
|
|
'\tjsesc --json \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'',
|
|
'\tjsesc --json --escape-everything \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'',
|
|
'\tjsesc --double-quotes --wrap \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'',
|
|
'\techo \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\' | jsesc'
|
|
].join('\n'));
|
|
return process.exit(1);
|
|
}
|
|
|
|
if (/^(?:-v|--version)$/.test(option)) {
|
|
log('v%s', stringEscape.version);
|
|
return process.exit(1);
|
|
}
|
|
|
|
strings.forEach(function(string) {
|
|
// Process options
|
|
if (/^(?:-s|--single-quotes)$/.test(string)) {
|
|
options.quotes = 'single';
|
|
return;
|
|
}
|
|
if (/^(?:-d|--double-quotes)$/.test(string)) {
|
|
options.quotes = 'double';
|
|
return;
|
|
}
|
|
if (/^(?:-w|--wrap)$/.test(string)) {
|
|
options.wrap = true;
|
|
return;
|
|
}
|
|
if (/^(?:-e|--escape-everything)$/.test(string)) {
|
|
options.escapeEverything = true;
|
|
return;
|
|
}
|
|
if (/^(?:-t|--escape-etago)$/.test(string)) {
|
|
options.escapeEtago = true;
|
|
return;
|
|
}
|
|
if (/^(?:-6|--es6)$/.test(string)) {
|
|
options.es6 = true;
|
|
return;
|
|
}
|
|
if (/^(?:-l|--lowercase-hex)$/.test(string)) {
|
|
options.lowercaseHex = true;
|
|
return;
|
|
}
|
|
if (/^(?:-j|--json)$/.test(string)) {
|
|
options.json = true;
|
|
return;
|
|
}
|
|
if (/^(?:-o|--object)$/.test(string)) {
|
|
isObject = true;
|
|
return;
|
|
}
|
|
if (/^(?:-p|--pretty)$/.test(string)) {
|
|
isObject = true;
|
|
options.compact = false;
|
|
return;
|
|
}
|
|
|
|
// Process string(s)
|
|
var result;
|
|
try {
|
|
if (isObject) {
|
|
string = JSON.parse(string);
|
|
}
|
|
result = stringEscape(string, options);
|
|
log(result);
|
|
} catch(error) {
|
|
log(error.message + '\n');
|
|
log('Error: failed to escape.');
|
|
log('If you think this is a bug in jsesc, please report it:');
|
|
log('https://github.com/mathiasbynens/jsesc/issues/new');
|
|
log(
|
|
'\nStack trace using jsesc@%s:\n',
|
|
stringEscape.version
|
|
);
|
|
log(error.stack);
|
|
return process.exit(1);
|
|
}
|
|
});
|
|
// Return with exit status 0 outside of the `forEach` loop, in case
|
|
// multiple strings were passed in.
|
|
return process.exit(0);
|
|
|
|
};
|
|
|
|
if (stdin.isTTY) {
|
|
// handle shell arguments
|
|
main();
|
|
} else {
|
|
// Either the script is called from within a non-TTY context,
|
|
// or `stdin` content is being piped in.
|
|
if (!process.stdout.isTTY) { // called from a non-TTY context
|
|
timeout = setTimeout(function() {
|
|
// if no piped data arrived after a while, handle shell arguments
|
|
main();
|
|
}, 250);
|
|
}
|
|
|
|
data = '';
|
|
stdin.on('data', function(chunk) {
|
|
clearTimeout(timeout);
|
|
data += chunk;
|
|
});
|
|
stdin.on('end', function() {
|
|
strings.push(data.trim());
|
|
main();
|
|
});
|
|
stdin.resume();
|
|
}
|
|
|
|
}());
|