segment-matcher
Version:
Segment Matcher - TypeScript version with dual ESM/CJS format support
36 lines (35 loc) • 974 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.extractFieldValue = extractFieldValue;
/**
* 提取字段值
*
* @param segment - 消息段
* @param mapping - 字段映射配置
* @returns 提取的值,如果无法提取则返回 null
*/
function extractFieldValue(segment, mapping) {
// 如果是函数,直接调用
if (typeof mapping === 'function') {
try {
return mapping(segment);
}
catch {
return null;
}
}
// 如果是字符串数组,按顺序尝试
if (Array.isArray(mapping)) {
for (const field of mapping) {
if (field in segment.data && segment.data[field] != null) {
return segment.data[field];
}
}
return null;
}
// 如果是字符串,直接访问字段
if (typeof mapping === 'string') {
return segment.data[mapping] ?? null;
}
return null;
}