#!/usr/bin/env python

# Copyright (C) 2011 Ian W. Harry
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 3 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

"""
PLEASE FIX: This code is here because sphinx-apidoc does not have the
capability to exclude specific files from the documentation. The GPU modules
must be removed as we cannot import their stuff. This feature has been
requested in sphinx, remove this code and use it if it gets added.
We may need to write a patch for Sphinx to add this functionality.
"""

import os,sys
import glob


def check_module_name_line(currLine):
    if (':mod:' in currLine) and ('Module' in currLine):
        return True
    elif 'module' in currLine:
        return True
    else:
        return False

# Can these be named somewhat more obviously!
excludes=['cuda', 'cufft', 'cuda_pyfft', 'cl_pyfft',\
          'pycbc_phenomC_tmplt', 'TaylorF2','fotonfilter', 'cpnest']

fileList = glob.glob('pycbc.*.rst')

for file in fileList:
    output = []
    fp = open(file,'r')
    addLine = True
    for line in fp:
        if check_module_name_line(line):
            for excludeNam in excludes:
                if excludeNam in line:
                    addLine=False
                    break
            else:
                addLine=True
        if addLine:
            output.append(line)
    fp.close()
    fp = open(file,'w')
    fp.writelines(output)
    fp.close()

