function formatHeaderData()

in read_input/format.js [296:333]


function formatHeaderData(rangeNoteKey, rangeName, header, note) {
  if (!rangeNoteKey[rangeName]) {
    rangeNoteKey[rangeName] = {
      key: {},
      required_keys: [],
      allow_empty_keys: [],
      metadata: {},
      module: {},
    };
  }
  let headerKey = cleanKey(header);
  let noteHeader = lowerObj(sepKeyValPairs(note), true);

  if (noteHeader["field"]) {
    rangeNoteKey[rangeName]["key"][headerKey] = noteHeader["field"];
    headerKey = noteHeader["field"];
  }
  if (noteHeader.metadata) {
    let keyMetadata = sepArray(noteHeader["metadata"].toLowerCase());
    if (keyMetadata.includes("required"))
      rangeNoteKey[rangeName]["required_keys"].push(headerKey);
    if (keyMetadata.includes("allowempty"))
      rangeNoteKey[rangeName]["allow_empty_keys"].push(headerKey);
    keyMetadata = keyMetadata.filter(
      (val) => !["required", "allowempty"].includes(val)
    );
    if (keyMetadata.length > 0) {
      let sortedKeyMatadata = customSort(keyMetadata, metadataOrderMap);
      rangeNoteKey[rangeName]["metadata"][headerKey] = sortedKeyMatadata;
    }
  }
  if (noteHeader.source) {
    rangeNoteKey[rangeName]["module"]["source"] = noteHeader["source"];
  }
  if (noteHeader.version) {
    rangeNoteKey[rangeName]["module"]["version"] = noteHeader["version"];
  }
}