aboutsummaryrefslogtreecommitdiff
path: root/Functions
diff options
context:
space:
mode:
authorJoel Kronqvist <joel.h.kronqvist@gmail.com>2022-02-09 22:24:26 +0200
committerJoel Kronqvist <joel.h.kronqvist@gmail.com>2022-02-09 22:24:26 +0200
commitb270c4475ca6ed61784ed8368ab42fea3dc528e5 (patch)
tree2b895a8b5d7b0a8ed0c8eea37278e3ab10e048ba /Functions
parent41b36e79f32e6a9efffe1c0100ddc339dbaaeabb (diff)
downloadLYLLRuoka-b270c4475ca6ed61784ed8368ab42fea3dc528e5.tar.gz
LYLLRuoka-b270c4475ca6ed61784ed8368ab42fea3dc528e5.zip
Merged all functions from the JoelHMikael/funcs
Necessary, because we don't want to complicate our update script & its anyways better like this. They weren't any complicated functions.
Diffstat (limited to 'Functions')
-rw-r--r--Functions/dateFuncs.js23
-rw-r--r--Functions/open.js16
-rw-r--r--Functions/stringFuncs.js51
3 files changed, 90 insertions, 0 deletions
diff --git a/Functions/dateFuncs.js b/Functions/dateFuncs.js
new file mode 100644
index 0000000..10c4250
--- /dev/null
+++ b/Functions/dateFuncs.js
@@ -0,0 +1,23 @@
+// s: DD-MM-YYYY, return: Date
+function stringToDate(s) {
+ const date = s.split("-");
+ return new Date(`${date[2].padStart(4, "0")}-${date[1].padStart(2, "0")}-${date[0].padStart(2, "0")}`);
+}
+
+const isBetweenDates = (date, date1, date2) => {
+ date = approxDate(date);
+ date1 = approxDate(date1);
+ date2 = approxDate(date2);
+ return ((date.getTime() >= date1.getTime())
+ && (date.getTime() <= date2.getTime()));
+};
+
+function approxDate(d)
+{
+ return new Date(`${d.getFullYear()}-${(d.getMonth() + 1).toString().padStart(2, "0")}-${d.getDate().toString().padStart(2, "0")}`);
+}
+
+module.exports = {
+ fromString: stringToDate,
+ between: isBetweenDates
+} \ No newline at end of file
diff --git a/Functions/open.js b/Functions/open.js
new file mode 100644
index 0000000..f04201b
--- /dev/null
+++ b/Functions/open.js
@@ -0,0 +1,16 @@
+const fs = require("fs");
+
+function openFile(path)
+{
+ return new Promise((resolve, reject) =>
+ {
+ fs.readFile(path, (err, data) =>
+ {
+ if (err)
+ reject(err);
+ resolve(data);
+ })
+ });
+}
+
+exports.file = openFile;
diff --git a/Functions/stringFuncs.js b/Functions/stringFuncs.js
new file mode 100644
index 0000000..8dddc75
--- /dev/null
+++ b/Functions/stringFuncs.js
@@ -0,0 +1,51 @@
+function replaceElement(source, element, value) {
+ const firstTag = `<${element}>`;
+
+ const firstSpace = element.indexOf(" ");
+ if (firstSpace !== -1)
+ element = element.substring(0, firstSpace);
+ const startTag = `<${element}.*?>`;
+ const endTag = `</${element}.*?>`;
+
+ const span = getTagSpan(source, [startTag, endTag], firstTag);
+
+ return source.substring(0, span[0]) +
+ value +
+ source.substring(span[1]);
+}
+
+function getTagSpan(s, tags=["\\(", "\\)"], customFirstTag=undefined)
+{
+ customFirstTag = new RegExp(customFirstTag || tags[0]);
+ let i = s.search(customFirstTag);
+ if (i === -1)
+ return s;
+
+ tags = [
+ new RegExp("^" + tags[0]),
+ new RegExp("^" + tags[1])
+ ];
+
+ const start = i;
+ i++;
+ let depth = 1;
+ while((depth !== 0) && (i !== s.length))
+ {
+ let maybeStartTag = s.substring(i);
+ let maybeEndTag = s.substring(i);
+
+ depth += +tags[0].test(maybeStartTag) + -tags[1].test(maybeEndTag);
+
+ i++;
+ }
+
+ i += (s.substring(i - 1).match(tags[1]) || [""])[0] .length - 1;
+ return [start, i];
+}
+
+const countOccurrences = (s, regex) => (s.match(regex) || []).length;
+module.exports = {
+ span: getTagSpan,
+ replaceElement: replaceElement,
+ count: countOccurrences
+} \ No newline at end of file