def main(opts):
    "Main function"
    if not [os.path.isdir(x) for x in vars(opts)]:
        raise IOError("No such directory")
    # add slash at the end of directory
    slashIt = lambda x: x if x.endswith("/") else x + "/"
    path = slashIt(opts.path)
    pathConverted = slashIt(opts.pathConverted)
    pathManual = slashIt(opts.pathManual)

    manualReplacments = []
    fileNames = []
    for name in FileReader.getFileNames(path):
        # extracts file name from path
        fileName = FileReader.getFileName(name)
        # get file lines
        fileLines = FileReader.readFile(name)
        templateConverter = TemplateConverter(fileLines, name)
        # get converted lines
        convertedLines = templateConverter.getFileLines()
        # add lines that are inconvertible to the list
        manualReplacments += templateConverter.irreversibleDataList
        fileNames += [x.fileName for x in templateConverter.irreversibleDataList]
        fileName = fileName + ".tmpl"
        # save jinja2 template
        FileWriter.writeToFile(pathConverted + fileName, convertedLines)
    # save info about inconvertible template
    print(str(len(list(set(
        fileNames)))) + " file(s) need manual conversion. More information can be found in:\n" +
          pathManual + "manualConversions.txt")
    FileWriter.writeToFile(pathManual + "manualConversions.txt", FileWriter.convertToString(manualReplacments))
def writeFeaturesToFile(sentence, filename):
    fileWriter = FileWriter(OUTPUT_PATH, filename)
    tagged = nltk.pos_tag(word_tokenize(sentence))
    for i in range(len(tagged)):
        feature = 'I\tcw={} ct={}'.format(tagged[i][0], tagged[i][1])
        if i == 0:
            feature = feature + ' pw=BOS pt=BOS'
        else:
            feature = feature + ' pw={} pt={}'.format(tagged[i-1][0], tagged[i-1][1])
        if i == len(tagged)-1:
            feature = feature + ' nw=EOS nt=EOS'
        else:
            feature = feature + ' nw={} nt={}'.format(tagged[i+1][0], tagged[i+1][1])

        fileWriter.writeToFile(feature)
    fileWriter.writeToFile("\n")

    print(tagged)
def writeFeaturesToFile(sentence, filename):
    fileWriter = FileWriter(OUTPUT_PATH, filename)
    tagged = nltk.pos_tag(word_tokenize(sentence))
    for i in range(len(tagged)):
        feature = 'I\tcw={} ct={}'.format(tagged[i][0], tagged[i][1])
        if i == 0:
            feature = feature + ' pw=BOS pt=BOS'
        else:
            feature = feature + ' pw={} pt={}'.format(tagged[i - 1][0],
                                                      tagged[i - 1][1])
        if i == len(tagged) - 1:
            feature = feature + ' nw=EOS nt=EOS'
        else:
            feature = feature + ' nw={} nt={}'.format(tagged[i + 1][0],
                                                      tagged[i + 1][1])

        fileWriter.writeToFile(feature)
    fileWriter.writeToFile("\n")

    print(tagged)