@zenbase/llml
Version:
Lightweight Language Markup Language - Convert nested data structures to human-readable, XML-like markup
36 lines (28 loc) • 986 B
text/typescript
import type { Formatters } from "../types"
export const isArray = (v: unknown): boolean => Array.isArray(v)
export const formatArray = (
unknownValue: unknown,
llml: (data: unknown, formatters: Formatters) => string,
formatters: Formatters,
): string => {
const value = unknownValue as unknown[]
if (value.length === 0) return ""
const results: string[] = []
for (let i = 0; i < value.length; i++) {
const item = value[i]
const itemTag = String(i + 1)
if (i > 0) results.push("\n")
if (typeof item === "object" && item !== null && !Array.isArray(item)) {
const formatted = llml(item, formatters)
if (formatted.includes("\n")) {
results.push(`<${itemTag}>\n${formatted}\n</${itemTag}>`)
} else {
results.push(`<${itemTag}>${formatted}</${itemTag}>`)
}
} else {
const formatted = llml(item, formatters)
results.push(`<${itemTag}>${formatted}</${itemTag}>`)
}
}
return results.join("")
}