UNPKG

@earvinpiamonte/pagasa-tcb-parser

Version:

A TypeScript library for parsing PAGASA weather bulletin PDF files

68 lines 2.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.extractSignalNumber = exports.extractSignalBlocks = exports.extractSignals = void 0; const patterns_1 = require("../constants/patterns"); const area_parser_1 = require("./area-parser"); const extractSignals = (text) => { const signals = {}; const tcwsMatch = text.match(patterns_1.PATTERNS.tcws); if (!tcwsMatch) { return signals; } const tcwsSection = tcwsMatch[1]; const signalBlocks = (0, exports.extractSignalBlocks)(tcwsSection); for (const block of signalBlocks) { const signalNumber = (0, exports.extractSignalNumber)(block); if (signalNumber) { const regions = (0, area_parser_1.extractRegionsFromBlock)(block); signals[signalNumber] = { regions: { luzon: regions.luzon, visayas: regions.visayas, mindanao: regions.mindanao, }, }; } } return signals; }; exports.extractSignals = extractSignals; const extractSignalBlocks = (tcwsSection) => { const blocks = []; const lines = tcwsSection.split("\n"); let currentBlock = ""; let inSignalBlock = false; for (const line of lines) { const trimmedLine = line.trim(); if (patterns_1.PATTERNS.signalNumber.test(trimmedLine) || trimmedLine.includes("TCWS No.")) { if (currentBlock && inSignalBlock) { blocks.push(currentBlock); } currentBlock = line + "\n"; inSignalBlock = true; } else if (inSignalBlock) { currentBlock += line + "\n"; if (trimmedLine.includes("OTHER HAZARDS") || trimmedLine.includes("HAZARDS AFFECTING")) { break; } } } if (currentBlock && inSignalBlock) { blocks.push(currentBlock); } return blocks.filter((block) => block.trim().length > 0); }; exports.extractSignalBlocks = extractSignalBlocks; const extractSignalNumber = (block) => { const numberMatch = block.match(patterns_1.PATTERNS.signalMatch); if (numberMatch) { return numberMatch[1]; } const tcwsMatch = block.match(patterns_1.PATTERNS.tcwsNumber); return tcwsMatch ? tcwsMatch[1] : null; }; exports.extractSignalNumber = extractSignalNumber; //# sourceMappingURL=signal-parser.js.map