aboutsummaryrefslogtreecommitdiff
path: root/webAO/iniParse.js
diff options
context:
space:
mode:
Diffstat (limited to 'webAO/iniParse.js')
-rw-r--r--webAO/iniParse.js61
1 files changed, 31 insertions, 30 deletions
diff --git a/webAO/iniParse.js b/webAO/iniParse.js
index d3a9a90..62eeab0 100644
--- a/webAO/iniParse.js
+++ b/webAO/iniParse.js
@@ -1,42 +1,43 @@
const regexPatterns = {
- section: /^\s*\[\s*([^\]]*)\s*\]\s*$/,
- param: /^\s*([\w.\-_]+)\s*=\s*(.*?)\s*$/,
- comment: /^\s*;.*$/,
+ section: /^\s*\[\s*([^\]]*)\s*\]\s*$/,
+ param: /^\s*([\w.\-_]+)\s*=\s*(.*?)\s*$/,
+ comment: /^\s*;.*$/,
};
-const valueHandler = (matchKey, matchValue) => (matchKey === 'showname' ? matchValue : matchValue.toLowerCase());
+const valueHandler = (matchKey, matchValue) =>
+ matchKey === "showname" ? matchValue : matchValue.toLowerCase();
const lineFilter = (value) => {
- const isEmpty = value.length === 0;
- const isComment = regexPatterns.comment.test(value);
- if (isComment || isEmpty) {
- return false;
- }
- return true;
+ const isEmpty = value.length === 0;
+ const isComment = regexPatterns.comment.test(value);
+ if (isComment || isEmpty) {
+ return false;
+ }
+ return true;
};
const iniParse = (data) => {
- const parsedIni = {};
- const lines = data.split(/\r\n|\r|\n/);
- const filteredLines = lines.filter(lineFilter);
+ const parsedIni = {};
+ const lines = data.split(/\r\n|\r|\n/);
+ const filteredLines = lines.filter(lineFilter);
- let currentSection;
- filteredLines.forEach((line) => {
- const isParameter = regexPatterns.param.test(line);
- const isSection = regexPatterns.section.test(line);
- if (isParameter && currentSection) {
- const match = line.match(regexPatterns.param);
- const matchKey = match[1].toLowerCase();
- const matchValue = match[2];
- parsedIni[currentSection][matchKey] = valueHandler(matchKey, matchValue);
- } else if (isSection) {
- const match = line.match(regexPatterns.section);
- const matchKey = match[1].toLowerCase();
- parsedIni[matchKey] = {};
- currentSection = matchKey;
- }
- });
- return parsedIni;
+ let currentSection;
+ filteredLines.forEach((line) => {
+ const isParameter = regexPatterns.param.test(line);
+ const isSection = regexPatterns.section.test(line);
+ if (isParameter && currentSection) {
+ const match = line.match(regexPatterns.param);
+ const matchKey = match[1].toLowerCase();
+ const matchValue = match[2];
+ parsedIni[currentSection][matchKey] = valueHandler(matchKey, matchValue);
+ } else if (isSection) {
+ const match = line.match(regexPatterns.section);
+ const matchKey = match[1].toLowerCase();
+ parsedIni[matchKey] = {};
+ currentSection = matchKey;
+ }
+ });
+ return parsedIni;
};
export default iniParse;