diff --git a/metar.html b/metar.html index a5b235b..41ed7e0 100644 --- a/metar.html +++ b/metar.html @@ -212,11 +212,12 @@ 'CF': 'Cumulus Fractus', 'FG': 'Fog', 'SF': 'Stratus Fractus', - 'SN': 'Snow' + 'SN': 'Snow', + 'ACC': 'Altocumulus Castellanus' }; let decodedParts = []; - const matches = code.matchAll(/([A-Z]{2})(\d)/g); + const matches = code.matchAll(/([A-Z]{2,3})(\d)/g); for (const match of matches) { const cloudCode = match[1]; @@ -305,7 +306,7 @@ }, // Cloud types summary { - match: p => p[0].match(/^([A-Z]{2}\d)+$/), + match: p => p[0].match(/^([A-Z]{2,3}\d)+$/), decode: (p, ms) => ({ consumed: 1, text: ` - ${decodeCloudTypesRemark(p[0], ms)}` }) }, // VIA @@ -365,6 +366,9 @@ if (p.length > 1 && p[1] === 'ALQDS') { return { consumed: 2, text: ` - VIRGA ALQDS: Virga in all quadrants` }; } + if (p.length > 1 && p[1] === 'PTCHS') { + return { consumed: 2, text: ` - VIRGA PTCHS: Virga in patches` }; + } if (p.length > 1 && isDirection(p[1])) { return { consumed: 2, text: ` - VIRGA ${p[1]}: Virga to the ${decodeDirection(p[1])}` }; } @@ -398,6 +402,11 @@ return { consumed: 3, text: ` - DENSITY ALT ${altFeet}: Density altitude ${altitude} feet` }; } }, + // PCPN VRY LGT + { + match: p => p[0] === 'PCPN' && p.length > 2 && p[1] === 'VRY' && p[2] === 'LGT', + decode: p => ({ consumed: 3, text: ` - PCPN VRY LGT: Very light precipitation` }) + }, // PCPN remark { match: p => p[0] === 'PCPN' && p.length > 3 && p[1].endsWith('MM') && p[2] === 'PAST' && p[3] === 'HR',