whole_func_string: function (section) {
  		section.children.forEach(function (child) {
  			if (child.type === 'section') {
  				finalParse(child)
  			} else if (child.type === 'text' ||
  				child.type === 'value' ||
  				child.type === 'code') {
  				var sliceStart = child.line - 1,
  					sliceEnd = child.line + child.size - 1,
  					subLines = lines.slice(sliceStart, sliceEnd)
  				if (child.type === 'text') {
  					child.content = subLines.join('\n')
  				} else if (child.type === 'code') {
  					child.language = subLines[0].substr(3)
  					child.content = subLines.slice(1, -1).join('\n')
  				} else if (child.type === 'value') {
  					child.content = subLines.join('\n')
  
  					// Remove starting tab character
  					parseValue(child, subLines.map(function (e, i) {
  						return {
  							line: child.line + i,
  							str: e.substr(1)
  						}
  					}), throwSyntaxError)
  				}
  			}
  		})
  	}
func_code_string: function (section) {
  		section.children.forEach(function (child) {
  			if (child.type === 'section') {
  				finalParse(child)
  			} else if (child.type === 'text' ||
  				child.type === 'value' ||
  				child.type === 'code') {
  				var sliceStart = child.line - 1,
  					sliceEnd = child.line + child.size - 1,
  					subLines = lines.slice(sliceStart, sliceEnd)
  				if (child.type === 'text') {
  					child.content = subLines.join('\n')
  				} else if (child.type === 'code') {
  					child.language = subLines[0].substr(3)
  					child.content = subLines.slice(1, -1).join('\n')
  				} else if (child.type === 'value') {
  					child.content = subLines.join('\n')
  
  					// Remove starting tab character
  					parseValue(child, subLines.map(function (e, i) {
  						return {
  							line: child.line + i,
  							str: e.substr(1)
  						}
  					}), throwSyntaxError)
  				}
  			}
  		})
  	}
func_documentation_string: Gather text content and parse values