diff --git a/package.json b/package.json index f9f26ab9..87837ab2 100644 --- a/package.json +++ b/package.json @@ -11,5 +11,9 @@ "node-7z": "^0.4.0", "xmldom": "^0.1.27", "xpath": "0.0.23" + }, + "dependencies": { + "console.table": "^0.10.0", + "xmllint": "git+ssh://git@github.com/kripken/xml.js.git" } } diff --git a/util/openlyrics-0.8.rng b/util/openlyrics-0.8.rng new file mode 100644 index 00000000..4b36d5d1 --- /dev/null +++ b/util/openlyrics-0.8.rng @@ -0,0 +1,479 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + words + music + + + + + + translation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -99 + 99 + + + + + + + + + + + 30 + 250 + + + bpm + + + + + + + text + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + optional + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0\.8 + + + + + + + + + + + + + + + + + + 1 + + (v[1-9]\d?[a-z]?)|([cpbe][a-z]?)|([cpbe][1-9]\d?[a-z]?) + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/util/validate.js b/util/validate.js new file mode 100644 index 00000000..d7f387be --- /dev/null +++ b/util/validate.js @@ -0,0 +1,85 @@ +/** + * TELEPÍTÉS + * sudo apt install xmllint + * mkdir node_modules + * npm install git+ssh://git@github.com:kripken/xml.js.git + * npm install console.table + * FUTTATÁS + * node util/validate.js + */ + +/** + * Csomagok + */ + +'use strict'; + +const fs = require('fs'); +const xmllint = require('xmllint'); +const cTable = require('console.table'); +const folders = [ + './master/', + './other/Cserkészek daloskönyve/', + './other/Gyerekdalok/', + './other/Sárga könyv (akkordos)/', + './other/Taize-i énekek/', + './classical/Adventi és karácsonyi/', + './classical/Dicsérjétek az Urat!/', + './classical/Éneklő Egyház/', + './classical/Erdélyi gyűjtemény/', + './classical/Graduale Hungaricum/', + './classical/Harmatozzatok, egek!/', + './classical/Imák és válaszok/', + './classical/Latin imák/', + './classical/Ordinárium/', + './classical/Szentkúti énekek/', + './classical/Szentségimádás/', + './classical/Szent Vagy, Uram!/', + './classical/Ujjongj az úrnak! - népdalzsoltárok/', + './classical/Zsolozsma/', + './classical/Zsoltár - páratlan hétköznap/', + './classical/Zsoltár - páros hétköznap/', + './classical/Zsoltár - ünnepek/', + './classical/Zsoltár - vasárnapok/' +]; +const schema = fs.readFileSync('./util/openlyrics-0.8.rng').toString(); +var report = []; + +/** + * Feldolgozás + */ +function validateFolder(sPath) { + // olvassuk az összes fájlt a könyvtárból egyenként + var files = fs.readdirSync(sPath); + var count = 0; + for (var i in files) { + // nem .xml fájl, pl. README.md + if (files[i].toLowerCase().substr(files[i].length - 4) != '.xml') { + continue; + } + // ellenőrzés a fájlt + var sLog = "Validating " + sPath + files[i] + " : "; + var oError = xmllint.validateXML({ + xml: fs.readFileSync(sPath + files[i], { encoding : 'UTF-8' }).toString(), + format: 'rng', + schema: schema + }).errors; + if ( oError == null ) { + sLog += "OK" + } + else { + sLog += "INVALID\n" + sLog += oError.join("\n"); + count++; + } + console.log(sLog); + } + console.log("INVALID: " + count + "/" + i); + report.push( { name : sPath.substring(2, sPath.length-1), total: i, valid: i-count, invalid: count }); +} + +folders.forEach(function(item) { + validateFolder(item); +}); +console.log("**************************************************************************************"); +console.table(report);