sites/src/js/viewmodel/utils/string-formatter.js
import ChangeCase from "change-case"
export default class StringFormatter {
/**
* テンプレート文字列内の「#{<key>}」を params の値で置き換える。
*/
static processTemplate(template, params, escapeHTMLChars=false) {
return template.replace(/\#\{([a-zA-Z0-1]+)\}/mg, (match) => {
const key = match.substring(2, match.length-1);
const str = params[key] || "";
return escapeHTMLChars ? StringFormatter.escape(str) : str;
});
}
/**
* HTMLおよびXMLでエスケープが必要な文字列をエスケープする。
*/
static escape(str) {
if(!str) return "";
return str.replace(/[&"'<>]/g, (c) => {
switch (c) {
case "&": return "&";
case "\"": return """;
case "'": return "'";
case "<": return "<";
case ">": return ">";
}
});
}
/**
* 文字列中の全角英数字を半角に変換します。
*/
static toAscii(value) {
return value.replace(/[A-Za-z0-9]/g, (s) =>
String.fromCharCode(s.charCodeAt(0)-0xFEE0));
}
static snakeCaseToCamelCase( str ) {
return ChangeCase.camelCase(str);
}
static camelCaseToSnakeCase( str ) {
return ChangeCase.snakeCase(str);
}
}