aboutsummaryrefslogtreecommitdiff
path: root/src/shared
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/settings/property-types.js6
-rw-r--r--src/shared/settings/validator.js17
-rw-r--r--src/shared/settings/values.js18
3 files changed, 34 insertions, 7 deletions
diff --git a/src/shared/settings/property-types.js b/src/shared/settings/property-types.js
new file mode 100644
index 0000000..bcfa809
--- /dev/null
+++ b/src/shared/settings/property-types.js
@@ -0,0 +1,6 @@
+export default {
+ // TODO describe property types here
+ // mystr: 'string',
+ // mynum: 'number',
+ // mybool: 'boolean',
+};
diff --git a/src/shared/settings/validator.js b/src/shared/settings/validator.js
index 949ab29..6fadac7 100644
--- a/src/shared/settings/validator.js
+++ b/src/shared/settings/validator.js
@@ -1,6 +1,7 @@
import operations from 'shared/operations';
+import propertyTypes from './property-types';
-const VALID_TOP_KEYS = ['keymaps', 'search', 'blacklist'];
+const VALID_TOP_KEYS = ['keymaps', 'search', 'blacklist', 'properties'];
const VALID_OPERATION_VALUES = Object.keys(operations).map((key) => {
return operations[key];
});
@@ -48,6 +49,17 @@ const validateSearch = (search) => {
}
};
+const validateProperties = (properties) => {
+ for (let name of Object.keys(properties)) {
+ if (!propertyTypes[name]) {
+ throw new Error(`Unknown property name: "${name}"`);
+ }
+ if (typeof properties[name] !== propertyTypes[name]) {
+ throw new Error(`Invalid type for property: "${name}"`);
+ }
+ }
+};
+
const validate = (settings) => {
validateInvalidTopKeys(settings);
if (settings.keymaps) {
@@ -56,6 +68,9 @@ const validate = (settings) => {
if (settings.search) {
validateSearch(settings.search);
}
+ if (settings.properties) {
+ validateProperties(settings.properties);
+ }
};
export { validate };
diff --git a/src/shared/settings/values.js b/src/shared/settings/values.js
index 4e55fa0..5027ba5 100644
--- a/src/shared/settings/values.js
+++ b/src/shared/settings/values.js
@@ -44,9 +44,12 @@ const valueFromForm = (form) => {
}
}
- let blacklist = form.blacklist;
-
- return { keymaps, search, blacklist };
+ return {
+ keymaps,
+ search,
+ blacklist: form.blacklist,
+ properties: form.properties
+ };
};
const jsonFromValue = (value) => {
@@ -78,9 +81,12 @@ const formFromValue = (value, allowedOps) => {
}
}
- let blacklist = value.blacklist;
-
- return { keymaps, search, blacklist };
+ return {
+ keymaps,
+ search,
+ blacklist: value.blacklist,
+ properties: value.properties,
+ };
};
const jsonFromForm = (form) => {