protected function parse_section( $lines ) {
		$key    = $value = '';
		$return = array();

		if ( ! is_array( $lines ) ) {
			$lines = explode( "\n", $lines );
		}
		$trimmed_lines = array_map( 'trim', $lines );

		/*
		 * The heading style being matched in the block. Can be 'heading' or 'bold'.
		 * Standard Markdown headings (## .. and == ... ==) are used, but if none are present.
		 * full line bolding will be used as a heading style.
		 */
		$heading_style = 'bold'; // 'heading' or 'bold'
		foreach ( $trimmed_lines as $trimmed ) {
			if ( $trimmed && ( $trimmed[0] == '#' || $trimmed[0] == '=' ) ) {
				$heading_style = 'heading';
				break;
			}
		}

		$line_count = count( $lines );
		for ( $i = 0; $i < $line_count; $i++ ) {
			$line    = &$lines[ $i ];
			$trimmed = &$trimmed_lines[ $i ];
			if ( ! $trimmed ) {
				$value .= "\n";
				continue;
			}

			$is_heading = false;
			if ( 'heading' == $heading_style && ( $trimmed[0] == '#' || $trimmed[0] == '=' ) ) {
				$is_heading = true;
			} elseif ( 'bold' == $heading_style && ( substr( $trimmed, 0, 2 ) == '**' && substr( $trimmed, -2 ) == '**' ) ) {
				$is_heading = true;
			}

			if ( $is_heading ) {
				if ( $value ) {
					$return[ $key ] = trim( $value );
				}

				$value = '';
				// Trim off the first character of the line, as we know that's the heading style we're expecting to remove.
				$key = trim( $line, $trimmed[0] . " \t" );
				continue;
			}

			$value .= $line . "\n";
		}

		if ( $key || $value ) {
			$return[ $key ] = trim( $value );
		}

		return $return;
	}
protected function parse_section( $lines ) {
		$key    = $value = '';
		$return = array();

		if ( ! is_array( $lines ) ) {
			$lines = explode( "\n", $lines );
		}
		$trimmed_lines = array_map( 'trim', $lines );

		/*
		 * The heading style being matched in the block. Can be 'heading' or 'bold'.
		 * Standard Markdown headings (## .. and == ... ==) are used, but if none are present.
		 * full line bolding will be used as a heading style.
		 */
		$heading_style = 'bold'; // 'heading' or 'bold'
		foreach ( $trimmed_lines as $trimmed ) {
			if ( $trimmed && ( $trimmed[0] == '#' || $trimmed[0] == '=' ) ) {
				$heading_style = 'heading';
				break;
			}
		}

		$line_count = count( $lines );
		for ( $i = 0; $i < $line_count; $i++ ) {
			$line    = &$lines[ $i ];
			$trimmed = &$trimmed_lines[ $i ];
			if ( ! $trimmed ) {
				$value .= "\n";
				continue;
			}

			$is_heading = false;
			if ( 'heading' == $heading_style && ( $trimmed[0] == '#' || $trimmed[0] == '=' ) ) {
				$is_heading = true;
			} elseif ( 'bold' == $heading_style && ( substr( $trimmed, 0, 2 ) == '**' && substr( $trimmed, -2 ) == '**' ) ) {
				$is_heading = true;
			}

			if ( $is_heading ) {
				if ( $value ) {
					$return[ $key ] = trim( $value );
				}

				$value = '';
				// Trim off the first character of the line, as we know that's the heading style we're expecting to remove.
				$key = trim( $line, $trimmed[0] . " \t" );
				continue;
			}

			$value .= $line . "\n";
		}

		if ( $key || $value ) {
			$return[ $key ] = trim( $value );
		}

		return $return;
	}
protected function parse_section ( $ lines ) { $ key = $ value = '' ; $ return = array ( ) ; if ( ! is_array ( $ lines ) ) { $ lines = explode ( "\n" , $ lines ) ; } $ trimmed_lines = array_map ( 'trim' , $ lines ) ; /*
		 * The heading style being matched in the block. Can be 'heading' or 'bold'.
		 * Standard Markdown headings (## .. and == ... ==) are used, but if none are present.
		 * full line bolding will be used as a heading style.
		 */ $ heading_style = 'bold' ; // 'heading' or 'bold' foreach ( $ trimmed_lines as $ trimmed ) { if ( $ trimmed && ( $ trimmed [ 0 ] == '#' || $ trimmed [ 0 ] == '=' ) ) { $ heading_style = 'heading' ; break ; } } $ line_count = count ( $ lines ) ; for ( $ i = 0 ; $ i < $ line_count ; $ i ++ ) { $ line = & $ lines [ $ i ] ; $ trimmed = & $ trimmed_lines [ $ i ] ; if ( ! $ trimmed ) { $ value .= "\n" ; continue ; } $ is_heading = false ; if ( 'heading' == $ heading_style && ( $ trimmed [ 0 ] == '#' || $ trimmed [ 0 ] == '=' ) ) { $ is_heading = true ; } elseif ( 'bold' == $ heading_style && ( substr ( $ trimmed , 0 , 2 ) == '**' && substr ( $ trimmed , - 2 ) == '**' ) ) { $ is_heading = true ; } if ( $ is_heading ) { if ( $ value ) { $ return [ $ key ] = trim ( $ value ) ; } $ value = '' ; // Trim off the first character of the line, as we know that's the heading style we're expecting to remove. $ key = trim ( $ line , $ trimmed [ 0 ] . " \t" ) ; continue ; } $ value .= $ line . "\n" ; } if ( $ key || $ value ) { $ return [ $ key ] = trim ( $ value ) ; } return $ return ; }
Parses a slice of lines from the file into an array of Heading => Content.

We assume that every heading encountered is a new item, and not a sub heading.
We support headings which are either `= Heading`, `# Heading` or `** Heading`.

@param string|array $lines The lines of the section to parse.
@return array
Parses a slice of lines from the file into an array of Heading = > Content .