1. function formatMetadata(metadata) {
  2. if (!metadata || typeof metadata !== 'object') {
  3. return "Invalid metadata format."; // Handle null/undefined/non-object input
  4. }
  5. let formattedOutput = "";
  6. for (const key in metadata) {
  7. if (metadata.hasOwnProperty(key)) {
  8. const value = metadata[key];
  9. let formattedValue = String(value); // Convert to string for consistent formatting
  10. if (typeof value === 'string') {
  11. formattedValue = `"${value.replace(/ /g, "_")}"`; // Escape spaces in strings, quote them
  12. } else if (typeof value === 'number') {
  13. formattedValue = value.toFixed(2); //Format numbers to 2 decimal places
  14. } else if (Array.isArray(value)) {
  15. formattedValue = `[${value.map(item => String(item)).join(', ')}]`; //Format arrays nicely
  16. } else if (typeof value === 'object' && value !== null) {
  17. formattedValue = formatMetadata(value); // Recursive call for nested objects
  18. } else if (value === null) {
  19. formattedValue = "null"; // Handle null values explicitly
  20. } else if (value === undefined) {
  21. formattedValue = "undefined"; //Handle undefined values explicitly
  22. }
  23. formattedOutput += `${key}: ${formattedValue}\n`;
  24. }
  25. }
  26. return formattedOutput;
  27. }

Add your comment