/**
 * Metadata JSON Generator
 *
 * Creates the -metadata.json file from structured symbol data.
 * This is the single source of truth for the Adom Viewer hover data.
 */

/**
 * Generate metadata JSON object from structured symbol input.
 *
 * @param {object} input
 * @param {string} input.symbolName
 * @param {string} input.manufacturer
 * @param {string} input.package
 * @param {string} input.description
 * @param {string} input.datasheetUrl
 * @param {Array<{name: string, number: string, type: string, group?: string, description: string}>} input.pins
 * @param {Array<{name: string, description: string}>} [input.groups]
 * @returns {object} Metadata JSON object
 */
export function generateMetadata(input) {
  const { symbolName, manufacturer, package: pkg, description, datasheetUrl, pins, groups } = input;

  const pinDescriptions = {};
  for (const pin of pins) {
    pinDescriptions[pin.name] = pin.description || '';
  }

  const groupDescriptions = {};
  if (groups) {
    for (const group of groups) {
      groupDescriptions[group.name] = group.description || '';
    }
  }

  return {
    symbolName,
    manufacturer: manufacturer || '',
    package: pkg || '',
    description: description || '',
    datasheetUrl: datasheetUrl || '',
    pinCount: pins.length,
    pinDescriptions,
    groupDescriptions,
  };
}