Generate documentation for this specification.

        Documentation is generated in Markdown format. An example
        of the generated documentation can be found at:

        https://github.com/loganasherjones/yapconf/blob/master/example/doc.md

        Args:
            app_name (str): The name of your application.

        Keyword Args:
            output_file_name (str): If provided, will write to this file.
            encoding (str): The encoding to use for the output file. Default
            is utf-8.

        Returns:
            A string representation of the documentation.

def generate_documentation(self, app_name, **kwargs):
        """Generate documentation for this specification.

        Documentation is generated in Markdown format. An example
        of the generated documentation can be found at:

        https://github.com/loganasherjones/yapconf/blob/master/example/doc.md

        Args:
            app_name (str): The name of your application.

        Keyword Args:
            output_file_name (str): If provided, will write to this file.
            encoding (str): The encoding to use for the output file. Default
            is utf-8.

        Returns:
            A string representation of the documentation.

        """
        output_file = kwargs.get('output_file_name')
        encoding = kwargs.get('encoding', 'utf-8')
        doc_string = generate_markdown_doc(app_name, self)
        if output_file:
            with open(output_file, 'w', encoding=encoding) as doc_file:
                doc_file.write(doc_string)

        return doc_string