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',