Added format editor and template engine

This commit is contained in:
Magnus Persson
2022-01-23 11:11:41 +01:00
parent 7b4e95b5ad
commit d3a71da643
23 changed files with 992 additions and 165 deletions

View File

@ -309,4 +309,74 @@ float reduceFloatPrecision(float f, int dec) {
return atof(&buffer[0]);
}
//
// urlencode
//
// https://circuits4you.com/2019/03/21/esp8266-url-encode-decode-example/
//
String urlencode(String str) {
String encodedString = "";
char c;
char code0;
char code1;
for (int i =0; i < static_cast<int>(str.length()); i++) {
c = str.charAt(i);
if (isalnum(c)){
encodedString += c;
} else {
code1 = (c & 0xf) + '0';
if ((c & 0xf) >9) {
code1 = (c & 0xf) - 10 + 'A';
}
c = (c>>4) & 0xf;
code0 = c + '0';
if (c > 9) {
code0 = c - 10 + 'A';
}
encodedString += '%';
encodedString += code0;
encodedString += code1;
}
}
//Log.verbose(F("HELP: encode=%s" CR), encodedString.c_str());
return encodedString;
}
unsigned char h2int(char c) {
if (c >= '0' && c <='9') {
return((unsigned char)c - '0');
}
if (c >= 'a' && c <='f') {
return((unsigned char)c - 'a' + 10);
}
if (c >= 'A' && c <='F') {
return((unsigned char)c - 'A' + 10);
}
return(0);
}
String urldecode(String str) {
String encodedString = "";
char c;
char code0;
char code1;
for (int i = 0; i < static_cast<int>(str.length()); i++){
c = str.charAt(i);
if (c == '%') {
i++;
code0 = str.charAt(i);
i++;
code1 = str.charAt(i);
c = (h2int(code0) << 4) | h2int(code1);
encodedString += c;
} else {
encodedString += c;
}
}
//Log.verbose(F("HELP: decode=%s" CR), encodedString.c_str());
return encodedString;
}
// EOF