JSFiddle - React, Tailwind, and code Playground

by nerdycap007

HTML

<div id="container">

</div>

JavaScript

let obj = {
	test_patterns: ['*/test/**', 'integration_tests/test_*.py'],
  exclude_patterns: ['migrations/**', '/dist/*.min.js'],
  analyzers:	{
        python: {
          	type_checker: 'mypy',
          	max_line_length: 80,
          	runtime_version: '3.x.x',
          	skip_doc_coverage: ['magic', 'init', 'class']
        },
        go: {
          	import_path: '/path/to/something', 
          	checked_into_vcs: true 
        }
  	}
}

var getToml = function(obj) {
	let tomlArr = []
  
  
  // Normal fields
  tomlArr.push(`test_patterns = ${JSON.stringify(obj.test_patterns)}`)
  tomlArr.push(`exclude_patterns = ${JSON.stringify(obj.exclude_patterns)}`)
  
  // Analyzers
  for (let analyzer in obj.analyzers) {
  	tomlArr.push('\n[[analyzers]]')
  	tomlArr.push(`name = "${analyzer}"`)
    tomlArr.push(`enabled = true\n`)
    tomlArr.push('[analyzers.meta]')
    for (let metaProp in obj.analyzers[analyzer]) {
    	if(Array.isArray(obj.analyzers[analyzer][metaProp])) {
      	tomlArr.push(`&emsp;${metaProp} = ${JSON.stringify(obj.analyzers[analyzer][metaProp])}`)
      } else {
      	if(typeof(obj.analyzers[analyzer][metaProp]) === 'string') {
        	tomlArr.push(`&emsp;${metaProp} = "${obj.analyzers[analyzer][metaProp]}"`)	
        } else {
        	tomlArr.push(`&emsp;${metaProp} = ${obj.analyzers[analyzer][metaProp]}`)
        }
      	
      }
    	
    }
  }

  return tomlArr.join('\n')
}

document.getElementById("container").innerHTML = '<pre>' + getToml(obj) + '</pre>'