const _ = require("lodash")
const service = {};
service.replaceGreekCharacters = function (string) {
var replace = new Array('\u00E1', '\u00C1', '\u00E9', '\u00C9', '\u00ED', '\u00CD', '\u00F3', '\u00D3', '\u00FA', '\u00DA', '\u00FC',
'\u00DC', '\u00F6', '\u00D6', '\u00F5', '\u00D5', '\u00FB', '\u00DB', '\u00BE', '\u0161', '\u00E8', '\u017E',
'\u00FD', '\u00F4', '\u00E4', '\u00F2', '\u00E5', '\u00BC', '\u0160', '\u00C8', '\u017D', '\u00DD', '\u00D2',
'\u00C5', '\u00EC', '\u00CC', '\u00EA', '\u00C6', '\u00E6', '\u00D8', '\u00F8');
var replace_n = new Array('a', 'A', 'e', 'E', 'i', 'I', 'o', 'O', 'u', 'U', 'u', 'U', 'o', 'O', 'o', 'O', 'u', 'U', 'l', 's', 'c', 'z',
'y', 'o', 'a', 'n', 'a', 'l', 's', 'C', 'Z', 'Y', 'N', 'A', 'e', 'E', 'e', 'AE', 'ae', 'O', 'o');
if (_.isString(string) && _.trim(string).length > 0) {
for (var i = 0; i < replace.length; i++) {
string = string.replace(replace[i], replace_n[i]);
}
}
return string;
};
service.cleanSpaces = function (string) {
var seperator = '/';
if (_.isString(string) && _.trim(string).length > 0) {
var parts = string.split(seperator);
if (_.isArray(parts) && parts.length > 0) {
_.forEach(parts, function (value, i) {
parts[i] = _.trim(value)
});
string = parts.join(seperator);
}
}
return string;
};
service.getSafeFolderName = function (name, allowSubFolders) {
if (_.isString(name)) {
var regex = /[^a-zA-Z0-9 @&.\-_]/g;
if (allowSubFolders) {
regex = /[^a-zA-Z0-9 @&.\-_\/]/g;
}
name = service.replaceGreekCharacters(name);
name = name.replace(regex, '');
name = _.trimEnd(name, '/._- ');
name = _.trimStart(name, '/._- ');
name = service.cleanSpaces(name);
}
return name;
};
service.getSafeFolderName('Boruto: Naruto Next Generations αυ/Season 1', true)