*convert this taskpaper object to a string*

        **Key Arguments:**
            - ``indentLevel`` -- the level of the indent for this object. Default *1*.
            - ``title`` -- print the title of the taskpaper object alongside the contents. Default *True*
            - ``tags`` -- replace tags with these tags. Default *None*
            - ``projects`` -- replace projects with these projects, pass empty list to delete all projects. Default *None*
            - ``tasks`` -- replace tasks with these ones, pass empty list to delete all tasks. Default *None*
            - ``notes`` -- replace notes with these ones, pass empty list to delete all notes. Default *None*

        **Return:**
            - ``objectString`` -- the taskpaper object as a string

        **Usage:**

            If we have the *archive* project from a taskpaper document, we can convert it to a string using:

            .. code-block:: python

                print archiveProject.to_string()

            .. code-block:: text

                Archive:
                    - and a third task @done(2016-09-04) @project(parent project / child-project)
                    - and a forth task @done(2016-09-04) @project(parent project / child-project)
                    - fill the kettle @done(2016-09-04) @project(parent project / make coffee)
                    - boil the kettle @done(2016-09-04) @project(parent project / make coffee)

def to_string(
            self,
            indentLevel=1,
            title=True,
            tags=None,
            projects=None,
            tasks=None,
            notes=None):
        """*convert this taskpaper object to a string*

        **Key Arguments:**
            - ``indentLevel`` -- the level of the indent for this object. Default *1*.
            - ``title`` -- print the title of the taskpaper object alongside the contents. Default *True*
            - ``tags`` -- replace tags with these tags. Default *None*
            - ``projects`` -- replace projects with these projects, pass empty list to delete all projects. Default *None*
            - ``tasks`` -- replace tasks with these ones, pass empty list to delete all tasks. Default *None*
            - ``notes`` -- replace notes with these ones, pass empty list to delete all notes. Default *None*

        **Return:**
            - ``objectString`` -- the taskpaper object as a string

        **Usage:**

            If we have the *archive* project from a taskpaper document, we can convert it to a string using:

            .. code-block:: python

                print archiveProject.to_string()

            .. code-block:: text

                Archive:
                    - and a third task @done(2016-09-04) @project(parent project / child-project)
                    - and a forth task @done(2016-09-04) @project(parent project / child-project)
                    - fill the kettle @done(2016-09-04) @project(parent project / make coffee)
                    - boil the kettle @done(2016-09-04) @project(parent project / make coffee)
        """
        indent = indentLevel * "\t"

        objectString = ""
        if title:
            try:
                # NONE DOCUMENT OBJECTS
                objectString += self.title
            except:
                pass

            try:
                if tags:
                    tagString = (" @").join(tags)
                else:
                    tagString = (" @").join(self.tags)

                if len(tagString):
                    objectString += " @" + tagString
            except:
                pass

        try:
            if not notes:
                notes = self.notes
            for n in notes:
                if len(n.title.strip()):
                    if not self.parent and len(objectString) == 0:
                        objectString += indent + n.title.strip() + n.content
                    else:
                        objectString += "\n" + indent + n.title.strip() + n.content
        except:
            pass

        try:
            if not tasks:
                tasks = self.tasks
            for t in tasks:
                objectString += "\n" + indent + t.to_string(indentLevel + 1)
        except:
            pass

        try:
            if not projects:
                projects = self.projects
            for p in projects:
                objectString += "\n" + indent + p.to_string(indentLevel + 1)
        except:
            pass

        try:
            objectString += "\n" + indent + self.searches
        except:
            pass

        return objectString.strip()