UNPKG

edtfy

Version:

Javascript date parser, transforms user input into the edtf format.

69 lines (65 loc) 1.86 kB
const fs = require('fs'); const sep = require('path').sep; const edtfy = require('../dist/edtfy.js'); edtfy.locale = 'en'; fs.readFile(__dirname + sep + 'gedcom_dates.csv', 'utf8', (err, data) => { const dates = data.replace(/"""/g, '').split('\n'); const unparsed = []; let total = 0; let errors = 0; let revolution = 0; let julian = 0; console.time('Total time'); dates.forEach(date => { if (date.indexOf('@#DFRENCH R@') >= 0) { revolution += 1; } else if (date.indexOf('@#DJULIAN@') >= 0) { julian += 1; } else { total += 1; try { edtfy(date); } catch (e) { try { edtfy(date, {locale: 'fr'}); } catch (e) { errors += 1; unparsed.push(date); } } } }); const unparsed2 = []; unparsed.forEach(date => { let transformedDate = date; if (/^0(0|\.)? ___ \d+$/.test(date)) { errors -= 1; transformedDate = date.slice(6, date.length + 1); } else if (/^0(0|\.)? \w+ \d+$/.test(date)) { errors -= 1; transformedDate = date.slice(2, date.length + 1); } else if (/^___ \w+ \d+$/.test(date)) { errors -= 1; transformedDate = date.slice(3, date.length + 1); } if (transformedDate !== date) { try { edtfy(transformedDate); } catch (e) { try { edtfy(transformedDate, {locale: 'fr'}); } catch (e) { console.log('error on: %s, was: %s', transformedDate, date); errors += 1; } } } else { console.log('could not be parsed: %s', date); unparsed2.push(date); } }); console.timeEnd('Total time'); console.log('Total: %d, success: %d, errors: %d', total, total - errors, errors); console.log('Revolution: %d, Julian: %d', revolution, julian); // console.log(unparsed2); });