"""
Wikifier is a script to add spaces to the pydoc files and move them to the documentation folder.
"""
from __future__ import absolute_import
#Init has to be imported first because it has code to workaround the python bug where relative imports don't work if the module is imported as a main module.
import __init__
from skeinforge_tools.skeinforge_utilities import gcodec
from skeinforge_tools.skeinforge_utilities import settings
import cStringIO
import os
__author__ = "Enrique Perez (perez_enrique@yahoo.com)"
__date__ = "$Date: 2008/21/04 $"
__license__ = "GPL 3.0"
class Heading:
"A class to hold the heading and subheadings."
def __init__( self, depth = 0 ):
"Initialize."
self.depth = depth
def addToOutput( self, output ):
"Add to the output."
line = ' ' * self.depth + '%s
\n' % ( self.name, self.name )
output.write( line )
def getFromLine( self, headingLineTable, line ):
"Get the heading from a line."
headingTag = 'h' + str( self.depth + 2 )
nextLine = '\n
' )
helpText = fileText[ helpTextStart : helpTextEnd ]
lines = gcodec.getTextLines( helpText )
headings = []
headingLineTable = {}
for line in lines:
addToHeadings( headingLineTable, headings, line )
headingsToBeenAdded = True
output = cStringIO.StringIO()
for line in lines:
if line[ : 2 ] == '==':
if headingsToBeenAdded:
output.write( '
\n' )
for heading in headings:
heading.addToOutput( output )
output.write( '
\n' )
headingsToBeenAdded = False
if line in headingLineTable:
line = headingLineTable[ line ]
output.write( line + '\n' )
helpText = output.getvalue()
previousFileName = 'contents.html'
previousIndex = transferredFileNameIndex - 1
if previousIndex >= 0:
previousFileName = transferredFileNames[ previousIndex ]
previousLinkText = 'Previous' % previousFileName
navigationLine = getNavigationLine( 'Contents', previousLinkText, getNextLinkText( transferredFileNames, transferredFileNameIndex + 1 ) )
helpText = navigationLine + helpText + '
\n
\n' + navigationLine + '
\n%s / %s / %s\n
\n' % ( previousLinkText, nextLinkText, contentsLinkText ) def getNextLinkText( hypertextFiles, nextIndex ): "Get the next link text." nextFileName = 'contents.html' if nextIndex < len( hypertextFiles ): nextFileName = hypertextFiles[ nextIndex ] return 'Next' % nextFileName def getWrappedHypertext( fileText, hypertextFileIndex, hypertextFiles ): "Get the wrapped pydoc hypertext help." helpTextEnd = fileText.find( '' ) if helpTextEnd < 0: print( 'Failed to find the helpTextEnd in getWrappedHypertext in docwrap.' ) helpTextStart = fileText.find( '' ) if helpTextStart < 0: print( 'Failed to find the helpTextStart in getWrappedHypertext in docwrap.' ) helpText = fileText[ helpTextStart : helpTextEnd ] helpText = helpText.replace( ' ', ' ' ) return fileText[ : helpTextStart ] + helpText + fileText[ helpTextEnd : ] def readWriteDeleteHypertextHelp( documentDirectoryPath, hypertextFileIndex, hypertextFiles, transferredFileNames ): "Read the pydoc hypertext help documents, write them in the documentation folder then delete the originals." fileName = hypertextFiles[ hypertextFileIndex ] print( fileName ) filePath = os.path.join( documentDirectoryPath, fileName ) fileText = gcodec.getFileText( fileName ) fileText = getWrappedHypertext( fileText, hypertextFileIndex, hypertextFiles ) if fileText.find( 'This page is in the table of contents.' ) > - 1: fileText = fileText.replace( 'This page is in the table of contents.', '' ) transferredFileNames.append( fileName ) gcodec.writeFileText( filePath, fileText ) os.remove( fileName ) def readWriteNavigationHelp( documentDirectoryPath, transferredFileNameIndex, transferredFileNames ): "Read the hypertext help documents, and add the navigation lines to them." fileName = transferredFileNames[ transferredFileNameIndex ] print( fileName ) filePath = os.path.join( documentDirectoryPath, fileName ) fileText = gcodec.getFileText( filePath ) fileText = getNavigationHypertext( fileText, transferredFileNameIndex, transferredFileNames ) gcodec.writeFileText( filePath, fileText ) def removeFilesInDirectory( directoryPath ): "Remove all the files in a directory." fileNames = os.listdir( directoryPath ) for fileName in fileNames: filePath = os.path.join( directoryPath, fileName ) os.remove( filePath ) def writeContentsFile( documentDirectoryPath, hypertextFiles ): "Write the contents file." output = cStringIO.StringIO() output.write( '\n
\n