Interprétation HTML d'un objet js littéral simple via un générateur

sur Github

Côté JavaScript

	function* objectToDl(o)
	{
		yield '<dl>';
		for (let [k, v] of Object.entries(o))
		{
			let dd = typeof v === 'object' ?
				Array.from(objectToDl(v)).join('')
				: `'${v}'<span>,</span>`;
			yield  `<dt>${k}</dt><dd>${dd}</dd>`;
		}
		yield '</dl>';
	}

Côté CSS

dl {
	background: #80000022;
	border: 1px dotted maroon;
	display: inline-block;
	font-size: 1.2rem;
	margin-left: 1.2rem;
	overflow: hidden;
	padding-left: 2.4rem;
}
dl::before,
dl::after {
	content: '{';
	float: left;
	margin-left: -2rem;
}
dl::after {
	clear: both;
	content: '}';
}
dt,
dd {
	float: left;
}
dt {
	clear: left;
}
dd {
	margin-left: .4rem;
	position: relative;
}
dd:not(:last-child) > dl::after {
	content: '},';
}
dt::after {
	content: ':';
}
dd:last-child > span {
	display: none;
}