Skip to content

Commit

Permalink
added submodule dependency, missing schema's, package.json, README an…
Browse files Browse the repository at this point in the history
…d test

fixed context.json
  • Loading branch information
poef committed Sep 27, 2023
1 parent 0e57a6b commit 283d616
Show file tree
Hide file tree
Showing 8 changed files with 119 additions and 13 deletions.
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "curriculum-basis"]
path = curriculum-basis
url = https://github.com/slonl/curriculum-basis
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# curriculum-samenhang
SLO Samenhang curriculum (relaties en begrippen)
18 changes: 5 additions & 13 deletions context.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,11 @@
"type": "object",
"properties": {
"id": {
"$ref": "#/definitions/uuid"
"$ref": "https://opendata.slo.nl/curriculum/schemas/curriculum-basis/context.json#/definitions/uuid"
},
"title": {
"type": "string"
}
},
"fo_doelzin_id": {
"allOf": [
{ "$ref": "https://opendata.slo.nl/curriculum/schemas/curriculum-basis/context.json#/definitions/uuidArray" },
Expand All @@ -51,17 +51,13 @@
]
}
},
"anyOf" : [
{ "required": ["id","title","fo_doelzin"] },
{ "required": ["id","title","fo_toelichting_id"] },
{ "required": ["id","title","fo_uitwerking_id"] }
]
"required": ["id","title"]
},
"relatie": {
"type": "object",
"properties": {
"id": {
"$ref": "#/definitions/uuid"
"$ref": "https://opendata.slo.nl/curriculum/schemas/curriculum-basis/context.json#/definitions/uuid"
},
"title": {
"type": "string"
Expand All @@ -85,11 +81,7 @@
]
}
},
"anyOf" : [
{ "required": ["id","title","fo_doelzin","fo_doelzin"] },
{ "required": ["id","title","fo_toelichting_id","fo_toelichting_id"] },
{ "required": ["id","title","fo_uitwerking_id","fo_uitwerking_id"] }
]
"required": ["id","title"]
},
"allEntities" : {
"properties" : {
Expand Down
1 change: 1 addition & 0 deletions curriculum-basis
Submodule curriculum-basis added at ce330e
17 changes: 17 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"name": "curriculum-samenhang",
"description": "Curriculum Context: Samenhang (relaties en begrippen)",
"main": "context.json",
"scripts": {
"test": "node test/test.mjs",
"repl": "NODE_REPL_HISTORY=.repl_history && node test/repl.mjs"
},
"author": "SLO",
"license": "MIT",
"dependencies": {
"ajv": "^6.5.5",
"curriculum-js": "^0.3.7",
"jsondiffpatch": "^0.3.11",
"uuid": "^3.3.2"
}
}
22 changes: 22 additions & 0 deletions schema.jsonld
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"@context": {
"sh": "http://opendata.slo.nl/curriculum/schemas/samenhang.jsonld",
"id": {
"@id": "@id"
},
"title": {
"@id": "http://purl.org/dc/terms/title",
"@type": "@id"
},
"description": {
"@id": "http://purl.org/dc/terms/description",
"@type": "@id"
},
"sh_tag": {
"@id": "sh:#sh_tag"
},
"sh_relatie": {
"@id": "sh:#sh_relatie"
}
}
}
46 changes: 46 additions & 0 deletions test/repl.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
// load the curriculum-js library
import Curriculum from 'curriculum-js'
// load node filesystem support
import fs from 'fs'
import repl from 'repl';

// create an async function, so we can use await inside it
async function main() {

// create new curriculum instance
const curriculum = new Curriculum()

// read the list of all contexts from the file /curriculum-contexts.txt
const schemas = fs.readFileSync('curriculum-contexts.txt','utf8')
.split(/\n/g) // split the file on newlines
.map(line => line.trim()) // remove leading and trailing whitespace
.filter(Boolean) // filter empty lines

// load all contexts from the editor/ and master/ folders
let loadedSchemas = schemas.map(
schema => curriculum.loadContextFromFile(schema, schema+'/context.json')
).concat(
curriculum.loadContextFromFile('curriculum-samenhang', 'context.json')
)

// wait untill all contexts have been loaded, and return the promise values as schemas
Promise.allSettled(loadedSchemas).then((settledSchemas) => {
loadedSchemas = settledSchemas.map(promise => promise.value)
})
.then(() => {

var server = repl.start({
ignoreUndefined: true
});

server.context.curriculum = curriculum;
if (process.env.NODE_REPL_HISTORY) {
server.setupHistory(process.env.NODE_REPL_HISTORY, (e) => { if (e) console.log(e); } );
} else {
console.log('Set environment variable NODE_REPL_HISTORY=.repl_history to enable persistent REPL history');
}

})
}

main()
23 changes: 23 additions & 0 deletions test/test.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import Curriculum from "curriculum-js";

async function validate() {
var curriculum = new Curriculum();
var schema = await curriculum.loadContextFromFile(
"curriculum-samenhang",
"context.json"
);
await curriculum.loadContextFromFile(
"curriculum-samenhang",
"curriculum-basis/context.json"
);
try {
await curriculum.validate(schema);
console.log("Data is valid!");
} catch (error) {
error.validationErrors.forEach((error) => {
console.log(error.instancePath + ": " + error.message);
});
}
}

validate();

0 comments on commit 283d616

Please sign in to comment.