aboutsummaryrefslogtreecommitdiff
path: root/common/entities.js
diff options
context:
space:
mode:
Diffstat (limited to 'common/entities.js')
-rw-r--r--common/entities.js31
1 files changed, 22 insertions, 9 deletions
diff --git a/common/entities.js b/common/entities.js
index 41d6e3b..c24999e 100644
--- a/common/entities.js
+++ b/common/entities.js
@@ -117,24 +117,37 @@ function* get_used_files(item)
#EXPORT get_used_files AS get_files
/*
- * Regex to parse URIs like:
+ * Function to parse URIs like:
* https://hydrilla.koszko.org/schemas/api_mapping_description-2.schema.json
*/
-const name_base_re = "(?<name_base>[^/]*)";
-const major_number_re = "(?<major>[1-9][0-9]*)";
+const name_base_re = "([^/]*)";
+const major_number_re = "([1-9][0-9]*)";
const minor_number_re = "(?:[1-9][0-9]*|0)";
const numbers_rest_re = `(?:\\.${minor_number_re})*`;
-const version_re = `(?<ver>${major_number_re}${numbers_rest_re})`;
+const version_re = `(${major_number_re}${numbers_rest_re})`;
const schema_name_re = `${name_base_re}-${version_re}\\.schema\\.json`;
-const haketilo_schema_name_regex = new RegExp(schema_name_re);
-#EXPORT haketilo_schema_name_regex
+const schema_name_regex = new RegExp(schema_name_re);
+
+const schema_name_parts = ["full", "name_base", "version", "major"];
+
+function parse_schema_uri(uri) {
+ const match = schema_name_regex.exec(uri);
+ if (!match)
+ return match;
+
+ const result = {};
+
+ for (let i = 0; i < schema_name_parts.length; i++)
+ result[schema_name_parts[i]] = match[i];
+
+ return result
+}
+#EXPORT parse_schema_uri
/* Extract the number that indicates entity's compatibility mode. */
function get_schema_major_version(instance) {
- const match = haketilo_schema_name_regex.exec(instance.$schema);
-
- return parseInt(match.groups.major);
+ return parseInt(parse_schema_uri(instance.$schema).major);
}
#EXPORT get_schema_major_version