Major refactoring of filesystemadaptor

The code here had got a bit broken by some PRs that I should have
checked more carefully. I’ve done a major refactoring which will
hopefully make it easier to understand, and fixes a number of problems:

* Problem with eg .md tiddlers not being deleted correctly
* Problem with Windows path separators not being usable within
$:/config/FileSystemPaths on Windows
* Problem with filename clashes not being detected correctly when
saving to a different directory via $:/config/FileSystemPaths
* Enables slashes within tiddler titles to be mapped into folders
* Enables plain text files like .md and .css to be saved with .meta
files instead of as .tid files (see #2558)
* No longer replaces spaces with underscores

As this is such a major update, I’d be grateful if Node.js users could
give it a careful run through — in particular, you’ll need to try
creating new tiddlers of various types and ensure that the expected
files are created.
This commit is contained in:
Jermolene
2017-02-11 12:56:42 +00:00
parent 1961db6732
commit 3708f6c8e4
3 changed files with 149 additions and 82 deletions
+78 -1
View File
@@ -697,7 +697,6 @@ exports.tagToCssSelector = function(tagName) {
});
};
/*
IE does not have sign function
*/
@@ -725,4 +724,82 @@ exports.strEndsWith = function(str,ending,position) {
}
};
/*
Transliterate string from eg. Cyrillic Russian to Latin
*/
var transliterationPairs = {
"Ё":"YO",
"Й":"I",
"Ц":"TS",
"У":"U",
"К":"K",
"Е":"E",
"Н":"N",
"Г":"G",
"Ш":"SH",
"Щ":"SCH",
"З":"Z",
"Х":"H",
"Ъ":"'",
"ё":"yo",
"й":"i",
"ц":"ts",
"у":"u",
"к":"k",
"е":"e",
"н":"n",
"г":"g",
"ш":"sh",
"щ":"sch",
"з":"z",
"х":"h",
"ъ":"'",
"Ф":"F",
"Ы":"I",
"В":"V",
"А":"a",
"П":"P",
"Р":"R",
"О":"O",
"Л":"L",
"Д":"D",
"Ж":"ZH",
"Э":"E",
"ф":"f",
"ы":"i",
"в":"v",
"а":"a",
"п":"p",
"р":"r",
"о":"o",
"л":"l",
"д":"d",
"ж":"zh",
"э":"e",
"Я":"Ya",
"Ч":"CH",
"С":"S",
"М":"M",
"И":"I",
"Т":"T",
"Ь":"'",
"Б":"B",
"Ю":"YU",
"я":"ya",
"ч":"ch",
"с":"s",
"м":"m",
"и":"i",
"т":"t",
"ь":"'",
"б":"b",
"ю":"yu"
};
exports.transliterate = function(str) {
return str.split("").map(function(char) {
return transliterationPairs[char] || char;
}).join("");
};
})();