- Node.js
node dist/index.js test.json
Zamiast test.json może być użyty dowolnie inny plik.
Będzie Ci na pewno potrzebny przynajmniej zainstalowany npm
.
-
Pobierz wszystkie paczki poprzez komendę
yarn install
lub ewentualnienpm install
-
Po zainstalowaniu przeszedł czas na skompilowanie kodu źródłowego: poprzez uruchomienie komendy
tsc .
, która skompiluje wszystkie pliki TypeScript do JavaScript. -
Tak skompilowany projekt można uruchomić poprzez komendę
node index.js test.json
Poniżej prezentuję wykorzystane w projekcie reguły EBNF określające gramatykę plików json-schema:
<JSDoc> := { ( <id>, )? ( <defs>, )? <JSch> }
<id> := "$id": "<uri>"
<defs> := "definitions": { <kSch> (, <kSch>)*}
<kSch> := <kword>: { <JSch> }
<JSch> := <res> (, <res>)*
<res> := <type> | <strRes> | <numRes> | <objRes> | <refSch> | <title> | <description> | <enum>
<type> := "type" : ([<typename> (, <typename>)*] | <typename>)
<typename> := "string" | "integer" | "number" | "boolean" | "null" | "array" | "object"
<title> := "title": <string>
<description> := "description": <string>
<objRes> := <prop> | <req>
<prop> := "properties": { <kSch> (, <kSch>)*}
<kSch> := <kword>: { <JSch> }
<req> := "required": [ <kword> (, <kword>)*]
<numRes> := <min> | <max>
<min> := "minimum": <number>
<max> := "maximum": <number>
<strRes> := <minLen> | <maxLen>
<minLen> := "minLength": <number>
<maxLen> := "maxLength": <number>
<enum> := "enum": [<Jval> (, <Jval>)*]
<Jval> := <string> | <number> | <array> | <object> | <bool> | <null>
<string> := "([a-zA-Z0-9<symbols>])*"
<number> := (-)?([0-9])*(.)?([0-9])*
<array> := [(<Jval> (, <Jval>)*)?]
<object> := {("<string>": <Jval> (,"<string>": <Jval>)*)?}
<bool> := true | false
<null> := "null"
<refSch> := "$ref": "<uriRef>"
<schema> := "$schema": "<uri>"