docs: function parse_node_json(styles, children_lines, node_names)
  {
  	// transform this node's style lines from text to JSON properties and their values
  	const style_object = styles.map(function(style)
  	{
  		let key   = style.substring(0, style.indexOf(':')).trim()
  		let value = style.substring(style.indexOf(':') + ':'.length).trim()
  
  		// transform dashed key to camelCase key (it's required by React)
  		key = key.replace(/([-]{1}[a-z]{1})/g, character => character.substring(1).toUpperCase())
  
  		// support old CSS syntax
  		value = value.replace(/;$/, '').trim()
  
  		// check if the value can be parsed into an integer
  		if (String(parseInt(value)) === value)
  		{
  			value = parseInt(value)
  		}
  
  		// check if the value can be parsed into a float
  		if (String(parseFloat(value)) === value)
  		{
  			value = parseFloat(value)
  		}
  
  		return { key, value }
  	})
  	// combine the styles into a JSON object
  	.reduce(function(styles, style)
  	{
  		styles[style.key] = style.value
  		return styles
  	}, 
  	{})
  
  	// parse child nodes and add them to this node's JSON object
  	return extend(style_object, parse_children(children_lines, node_names))
  }