コード例 #1
0
class ParserTreeHelperTests(unittest.TestCase):

    emptyTokenTag = ""

    def setUp(self):
        self.pth = ParserTreeHelper()

    #tag Valdetion

    def testValidTag(self):
        validTokenTag = "~~"
        
        self.assertTrue(self.pth.isTokenATag(validTokenTag), 'Tag should be marked as Tag Token')
    
    def testInvalidTag(self):
        invalidTokenTag = "Just a simple text"
        
        self.assertFalse(self.pth.isTokenATag(invalidTokenTag), 'Tag is invalid and should NOT be marked as Tag Token')
    
    def testEmptyTag(self):
        
        self.assertFalse(self.pth.isTokenATag(self.emptyTokenTag), 'Tag is empty and should NOT be marked as Tag Token')
        
        
    #getEndingTag method    
        
    def testGettingEndingTagWithEmptyToken(self):

        self.assertEqual(self.pth.getEndingTag(self.emptyTokenTag), None, 'Result is not None')
    
    def testGettingEndingTagWithValidToken(self):
        validSimpleTag = "*"
        
        self.assertEqual(self.pth.getEndingTag(validSimpleTag), "*", 'Returned token is not valid')

    def testGettingEndingTagWithInvalidToken(self):
        invalidTag = "blabla"
        
        self.assertEqual(self.pth.getEndingTag(invalidTag), None, 'Invalid token did not return none')
        
    #getTagId method
    
    def testGettingTagIdWithEmptyToken(self):
        emptyTokenTag = ""
        returnedValue = self.pth.getTagId(emptyTokenTag)
        expectedValue = None
        
        self.assertEqual(returnedValue, expectedValue, 'Empty token did not return None')
        
    def testGettingTagIdWithValidToken(self):
        validTokenTag = "*"
        returnedValue = self.pth.getTagId(validTokenTag)
        expectedValue = 'bold'
        
        self.assertEqual(returnedValue, expectedValue, 'Valid token returned wrong value')
            
    def testGettingTagIdWithInvalidToken(self):
        invalidTokenTag = "i'n'v"
        returnedValue = self.pth.getTagId(invalidTokenTag)
        expectedValue = None
        
        self.assertEqual(returnedValue, expectedValue, 'Empty token did not return None')
        
    def testAffectingLineWithInvalidToken(self):
        invalidToken = "a"
        returnedValue = self.pth.affectsLine(invalidToken)
        expectedValue = False
        
        self.assertEqual(returnedValue, expectedValue, 'Invalid affecting token did not return None')
コード例 #2
0
ファイル: ListManager.py プロジェクト: kosttek/wikitohtml
class ListManager(object):
    
    __list = None
    __pth = None
    __debug = None
    
    def __init__(self):
        self.__pth = ParserTreeHelper()
        self.__debug = False

    @staticmethod
    def clearListFromEmptyTokens(tokenList):
        whiteTokensCount = tokenList.count('')
        for i in range(whiteTokensCount):
            tokenList.pop(tokenList.index(''))
        return tokenList
    
    def loadList(self, list):
        self.__list = list

    #TODO test    
    def findIndexOfEndingTag(self, token):
        if not self.__pth.isTokenATag(token):
            raise NotATagException
        specialRequirement = self.__pth.getSpecialRequirements(token) 
        endingTag = self.__pth.getEndingTag(token)
        expectedIndexOfEndingTag = 0
        skipFirstOccurenceOfTag = False
        if token == endingTag:
            skipFirstOccurenceOfTag = True
        counter = 0
        start_token_found = False
        for idx, currentTokenElement in enumerate(self.__list):
            counter = idx
            
            if currentTokenElement == token:
                start_token_found = True
                if specialRequirement == 'FirstInLine':
                    if idx != 0:
                        if self.__list[idx-1] != '\n':
                            raise NotATagException
            if (currentTokenElement == endingTag) and start_token_found:
                if skipFirstOccurenceOfTag:
                    skipFirstOccurenceOfTag = False
                    continue
                else:
                    expectedIndexOfEndingTag = idx
                    break
        if self.__pth.affectsLine(token):
            return counter
        return expectedIndexOfEndingTag
    
    #todo test
    def parseListToElement(self):
        headElement = Element("headElement")
        skip = None

        for i, currentToken in enumerate(self.__list):
            
            if i < skip:
                continue
            
            newElement = Element("token")  
            if not self.__pth.isTokenATag(currentToken):
                newElement.set('name', 'text')
                newElement.text = currentToken
            
            else:
                try:
                    endingTagIndex = self.findIndexOfEndingTag(currentToken)
                except NotATagException:
                    newElement.set('name', 'text')
                    newElement.text = currentToken
                else:
                    currentTokenName = self.__pth.getTagId(currentToken)
                    newElement.set('name', currentTokenName)
                
                    trimmedList = self.cutList(i, endingTagIndex)
                    tmpListManger = ListManager()
                    tmpListManger.loadList(trimmedList)
                    returnedElement = tmpListManger.parseListToElement()
                    newElement.append(returnedElement)
                    
                    skip = endingTagIndex
                    
            headElement.append(newElement)
            
        return headElement
        
    def cutList(self, startingIndex, endingIndex):
        return self.__list[startingIndex+1 : endingIndex]
        
コード例 #3
0
 def setUp(self):
     self.pth = ParserTreeHelper()
コード例 #4
0
ファイル: ListManager.py プロジェクト: kosttek/wikitohtml
 def __init__(self):
     self.__pth = ParserTreeHelper()
     self.__debug = False