Example #1
0
 def testIgnoreTraditionalBr(self):
     result = parseHtml(
         u"<html><body><p>Kissaa on ruokittava <br>huolella.</p></body></html>"
     )
     self.assertEquals(
         [(SEGMENT_TYPE_PARAGRAPH, u"Kissaa on ruokittava huolella.")],
         result)
Example #2
0
def checkPage(url, dictionary, clientIp, requestHeaders):
    log("checkPage: " + url.encode("UTF-8"))
    if dictionary not in _voikko:
        return u""
    v = _voikko[dictionary]
    try:
        html = getHtmlSafely(url.encode('UTF-8'), clientIp, requestHeaders)
        segments = parseHtml(html)
        res = u"Analyysi sivusta " + escape(url) + u"<br />"
        v.setAcceptUnfinishedParagraphsInGc(True)
        for segment in segments:
            segmentClass = None
            checkGrammar = True
            if segment[0] == SEGMENT_TYPE_HEADING:
                v.setAcceptTitlesInGc(True)
                v.setAcceptBulletedListsInGc(False)
                segmentClass = u"webvoikkoH"
            elif segment[0] == SEGMENT_TYPE_LIST_ITEM:
                v.setAcceptTitlesInGc(False)
                v.setAcceptBulletedListsInGc(True)
                segmentClass = u"webvoikkoLi"
            elif segment[0] == SEGMENT_TYPE_PARAGRAPH:
                v.setAcceptTitlesInGc(False)
                v.setAcceptBulletedListsInGc(False)
                segmentClass = u"webvoikkoP"
            elif segment[0] == SEGMENT_TYPE_OTHER:
                checkGrammar = False
                segmentClass = u"webvoikkoO"
            res = res + u"<p class='" + segmentClass + u"'>" + doSpell(
                segment[1], v, checkGrammar) + u"</p>"
        return res
    except HttpException, e:
        return u"Sivua %s ei voitu hakea: %s" % (escape(url), e.parameter)
Example #3
0
 def testUnclosedTdIsLikeClosedTd(self):
     result = parseHtml(
         u"<html><body><table><tr><th>kissa<td>koira<td>poni</tr></table></body></html>"
     )
     self.assertEquals([(SEGMENT_TYPE_OTHER, u"kissa"),
                        (SEGMENT_TYPE_OTHER, u"koira"),
                        (SEGMENT_TYPE_OTHER, u"poni")], result)
Example #4
0
 def testLineFeedIsJustSpace(self):
     result = parseHtml(
         u"<html><body><p>Kissaa\non\r\nruokittava\rhuolella.</p></body></html>"
     )
     self.assertEquals(
         [(SEGMENT_TYPE_PARAGRAPH, u"Kissaa on ruokittava huolella.")],
         result)
Example #5
0
 def testExtraWhitespaceIsRemoved(self):
     result = parseHtml(
         u"<html><body><p>\tKissaa  on \rruokittava huolella.  </p></body></html>"
     )
     self.assertEquals(
         [(SEGMENT_TYPE_PARAGRAPH, u"Kissaa on ruokittava huolella.")],
         result)
Example #6
0
 def testH1WithinPClosesP(self):
     result = parseHtml(
         u"<html><body><p>Kissa<h1>Koira</h1>jotain muuta</p></body></html>"
     )
     self.assertEquals([(SEGMENT_TYPE_PARAGRAPH, u"Kissa"),
                        (SEGMENT_TYPE_HEADING, u"Koira"),
                        (SEGMENT_TYPE_OTHER, u"jotain muuta")], result)
Example #7
0
 def testBrIsWhitespace(self):
     result = parseHtml(
         u"<html><body><p>Kissaa on ruokittava<br/>huolella.</p></body></html>"
     )
     self.assertEquals(
         [(SEGMENT_TYPE_PARAGRAPH, u"Kissaa on ruokittava huolella.")],
         result)
Example #8
0
def checkPage(url, dictionary, clientIp, requestHeaders, checkForMaybeErrors):
	log("checkPage: " + url.encode("UTF-8"))
	if dictionary not in _voikko:
		return u""
	v = _voikko[dictionary]
	try:
		html = getHtmlSafely(url.encode('UTF-8'), clientIp, requestHeaders)
		segments = parseHtml(html)
		res = u"Analyysi sivusta " + escape(url) + u"<br />"
		v.setAcceptUnfinishedParagraphsInGc(True)
		for segment in segments:
			segmentClass = None
			checkGrammar = True
			if segment[0] == SEGMENT_TYPE_HEADING:
				v.setAcceptTitlesInGc(True)
				v.setAcceptBulletedListsInGc(False)
				segmentClass = u"webvoikkoH"
			elif segment[0] == SEGMENT_TYPE_LIST_ITEM:
				v.setAcceptTitlesInGc(False)
				v.setAcceptBulletedListsInGc(True)
				segmentClass = u"webvoikkoLi"
			elif segment[0] == SEGMENT_TYPE_PARAGRAPH:
				v.setAcceptTitlesInGc(False)
				v.setAcceptBulletedListsInGc(False)
				segmentClass = u"webvoikkoP"
			elif segment[0] == SEGMENT_TYPE_OTHER:
				checkGrammar = False
				segmentClass = u"webvoikkoO"
			res = res + u"<p class='" + segmentClass + u"'>" + doSpell(segment[1], v, checkGrammar, checkForMaybeErrors) + u"</p>"
		return res
	except HttpException, e:
		return u"Sivua %s ei voitu hakea: %s" % (escape(url), e.parameter)
Example #9
0
 def testUnclosedP(self):
     result = parseHtml(u"<html><body><p>kissa<p>koira<div><p>hevonen</div></body></html>")
     self.assertEquals(
         [
             (SEGMENT_TYPE_PARAGRAPH, u"kissa"),
             (SEGMENT_TYPE_PARAGRAPH, u"koira"),
             (SEGMENT_TYPE_PARAGRAPH, u"hevonen"),
         ],
         result,
     )
Example #10
0
 def testH1WithinPClosesP(self):
     result = parseHtml(u"<html><body><p>Kissa<h1>Koira</h1>jotain muuta</p></body></html>")
     self.assertEquals(
         [
             (SEGMENT_TYPE_PARAGRAPH, u"Kissa"),
             (SEGMENT_TYPE_HEADING, u"Koira"),
             (SEGMENT_TYPE_OTHER, u"jotain muuta"),
         ],
         result,
     )
Example #11
0
 def testLineFeedIsJustSpace(self):
     result = parseHtml(u"<html><body><p>Kissaa\non\r\nruokittava\rhuolella.</p></body></html>")
     self.assertEquals([(SEGMENT_TYPE_PARAGRAPH, u"Kissaa on ruokittava huolella.")], result)
Example #12
0
 def testBrIsWhitespace(self):
     result = parseHtml(u"<html><body><p>Kissaa on ruokittava<br/>huolella.</p></body></html>")
     self.assertEquals([(SEGMENT_TYPE_PARAGRAPH, u"Kissaa on ruokittava huolella.")], result)
Example #13
0
 def testIgnoreTraditionalBr(self):
     result = parseHtml(u"<html><body><p>Kissaa on ruokittava <br>huolella.</p></body></html>")
     self.assertEquals([(SEGMENT_TYPE_PARAGRAPH, u"Kissaa on ruokittava huolella.")], result)
Example #14
0
 def testScriptsAreStripped(self):
     result = parseHtml(
         u"<html><body><p>Kissaa on ruokittava.</p><script>lksjdf</script></body></html>"
     )
     self.assertEquals([(SEGMENT_TYPE_PARAGRAPH, u"Kissaa on ruokittava.")],
                       result)
Example #15
0
 def assertParseError(self, html, lineno, offset):
     try:
         parseHtml(html)
     except HTMLParseError, e:
         self.assertEquals(lineno, e.lineno)
         self.assertEquals(offset, e.offset)
Example #16
0
 def testUnknownEntityIsAssumedToBeJustText(self):
     result = parseHtml(u"<html><body><p>Kissa & koira ja &kissa;</p></body></html>")
     self.assertEquals([(SEGMENT_TYPE_PARAGRAPH, u"Kissa & koira ja &kissa")], result)
Example #17
0
 def testStrayTdCloseTag(self):
     result = parseHtml(u"<html><body><p>kissa</p></td></body></html>")
     self.assertEquals([(SEGMENT_TYPE_PARAGRAPH, u"kissa")], result)
Example #18
0
 def testNonAscii(self):
     result = parseHtml(
         u"<html><body><h1>Eläinlääk&auml;rissä käynti €</h1></body></html>"
     )
     self.assertEquals(
         [(SEGMENT_TYPE_HEADING, u"Eläinlääkärissä käynti €")], result)
Example #19
0
 def testUnderlineInducesNoSpace(self):
     result = parseHtml(
         u"<html><body><h1>Libre<u>Office</u></h1></body></html>")
     self.assertEquals([(SEGMENT_TYPE_HEADING, u"LibreOffice")], result)
Example #20
0
 def testCiteIsJustText(self):
     result = parseHtml(
         u"<html><body><p>Kissaa on <cite>ruokittava</cite>.</p></body></html>"
     )
     self.assertEquals([(SEGMENT_TYPE_PARAGRAPH, u"Kissaa on ruokittava.")],
                       result)
Example #21
0
 def testStrayTdCloseTag(self):
     result = parseHtml(u"<html><body><p>kissa</p></td></body></html>")
     self.assertEquals([(SEGMENT_TYPE_PARAGRAPH, u"kissa")], result)
Example #22
0
 def testTableWithinP(self):
     result = parseHtml(
         u"<html><body><p><table><tr><td>sdsd</td></tr></table>ruokittava.</p></body></html>"
     )
     self.assertEquals([(SEGMENT_TYPE_OTHER, u"sdsd"),
                        (SEGMENT_TYPE_OTHER, u"ruokittava.")], result)
Example #23
0
 def testTablesAreIgnored(self):
     result = parseHtml(
         u"<html><body><p>Kissaa on ruokittava.</p><table><tr><td>sdsd</td></tr></table></body></html>"
     )
     self.assertEquals([(SEGMENT_TYPE_PARAGRAPH, u"Kissaa on ruokittava."),
                        (SEGMENT_TYPE_OTHER, u"sdsd")], result)
Example #24
0
 def testScriptsWithinPIsIgnoredAndContentStripped(self):
     result = parseHtml(u"<html><body><p>Kissaa on <script>aksldj</script>ruokittava.</p></body></html>")
     self.assertEquals([(SEGMENT_TYPE_PARAGRAPH, u"Kissaa on ruokittava.")], result)
Example #25
0
 def testTablesAreIgnored(self):
     result = parseHtml(
         u"<html><body><p>Kissaa on ruokittava.</p><table><tr><td>sdsd</td></tr></table></body></html>"
     )
     self.assertEquals([(SEGMENT_TYPE_PARAGRAPH, u"Kissaa on ruokittava."), (SEGMENT_TYPE_OTHER, u"sdsd")], result)
Example #26
0
 def testUnknownEntityIsAssumedToBeJustText(self):
     result = parseHtml(
         u"<html><body><p>Kissa & koira ja &kissa;</p></body></html>")
     self.assertEquals(
         [(SEGMENT_TYPE_PARAGRAPH, u"Kissa & koira ja &kissa")], result)
Example #27
0
 def testUnderlineInducesNoSpace(self):
     result = parseHtml(u"<html><body><h1>Libre<u>Office</u></h1></body></html>")
     self.assertEquals([(SEGMENT_TYPE_HEADING, u"LibreOffice")], result)
Example #28
0
 def testParseEmptyDocument(self):
     result = parseHtml(u"<html><head></head><body></body></html>")
     self.failUnless(len(result) == 0)
Example #29
0
 def testTextWithinBody(self):
     result = parseHtml(u"<html><body>kissa</body></html>")
     self.assertEquals([(SEGMENT_TYPE_OTHER, u"kissa")], result)
Example #30
0
 def testHexCharacterReferences(self):
     result = parseHtml(u"<html><body><h1>&#xE4;</h1></body></html>")
     self.assertEquals([(SEGMENT_TYPE_HEADING, u"ä")], result)
Example #31
0
 def testParseTitle(self):
     result = parseHtml(u"<html><head><title>kissa</title></head><body></body></html>")
     self.assertEquals([(SEGMENT_TYPE_OTHER, u"kissa")], result)
Example #32
0
 def testTextWithinBody(self):
     result = parseHtml(u"<html><body>kissa</body></html>")
     self.assertEquals([(SEGMENT_TYPE_OTHER, u"kissa")], result)
Example #33
0
 def testParseParagraph(self):
     result = parseHtml(u"<html><body><p>Kissaa on ruokittava huolella.</p></body></html>")
     self.assertEquals([(SEGMENT_TYPE_PARAGRAPH, u"Kissaa on ruokittava huolella.")], result)
Example #34
0
 def testAnyClosingTagIsIgnoredIfOpenTagStackHasNoSuchTag(self):
     result = parseHtml(
         u"<html><head></style></head><body><p>kissa</p></body></html>")
     self.assertEquals([(SEGMENT_TYPE_PARAGRAPH, u"kissa")], result)
Example #35
0
 def testIgnoreImages(self):
     result = parseHtml(u"<html><body><p>Kissaa <img src='cat.jpg'>on ruokittava.</p></body></html>")
     self.assertEquals([(SEGMENT_TYPE_PARAGRAPH, u"Kissaa on ruokittava.")], result)
Example #36
0
 def testPWithinBlockquote(self):
     result = parseHtml(
         u"<html><body><blockquote><p>Kissa</p></blockquote></body></html>")
     self.assertEquals([(SEGMENT_TYPE_PARAGRAPH, u"Kissa")], result)
Example #37
0
 def testExtraWhitespaceIsRemoved(self):
     result = parseHtml(u"<html><body><p>\tKissaa  on \rruokittava huolella.  </p></body></html>")
     self.assertEquals([(SEGMENT_TYPE_PARAGRAPH, u"Kissaa on ruokittava huolella.")], result)
Example #38
0
 def testParseTitle(self):
     result = parseHtml(
         u"<html><head><title>kissa</title></head><body></body></html>")
     self.assertEquals([(SEGMENT_TYPE_OTHER, u"kissa")], result)
Example #39
0
 def testScriptsAreStripped(self):
     result = parseHtml(u"<html><body><p>Kissaa on ruokittava.</p><script>lksjdf</script></body></html>")
     self.assertEquals([(SEGMENT_TYPE_PARAGRAPH, u"Kissaa on ruokittava.")], result)
Example #40
0
 def testHeadMayRemainUnfinished(self):
     result = parseHtml(u"<html><head></html>")
     self.assertEquals([], result)
Example #41
0
 def testParseHeader(self):
     result = parseHtml(
         u"<html><body><h1>Kissan ruokkiminen</h1></body></html>")
     self.assertEquals([(SEGMENT_TYPE_HEADING, u"Kissan ruokkiminen")],
                       result)
Example #42
0
 def testParseListItemsWithinEm(self):
     result = parseHtml(
         u"<html><body><ul><li>kis<em>sa</em></li></ul></body></html>")
     self.assertEquals([(SEGMENT_TYPE_LIST_ITEM, u"kissa")], result)
Example #43
0
 def testTableWithinP(self):
     result = parseHtml(u"<html><body><p><table><tr><td>sdsd</td></tr></table>ruokittava.</p></body></html>")
     self.assertEquals([(SEGMENT_TYPE_OTHER, u"sdsd"), (SEGMENT_TYPE_OTHER, u"ruokittava.")], result)
Example #44
0
 def testParseNestedLists(self):
     result = parseHtml(
         u"<html><body><ul><li>kissa<ul><li>koira</li></ul></li></ul></body></html>"
     )
     self.assertEquals([(SEGMENT_TYPE_OTHER, u"kissa"),
                        (SEGMENT_TYPE_LIST_ITEM, u"koira")], result)
Example #45
0
 def testStrongIsJustText(self):
     result = parseHtml(u"<html><body><p>Kissaa on <strong>ruokittava</strong>.</p></body></html>")
     self.assertEquals([(SEGMENT_TYPE_PARAGRAPH, u"Kissaa on ruokittava.")], result)
Example #46
0
 def testParseDefinitionLists(self):
     result = parseHtml(
         u"<html><body><dl><dt>kissa</dt><dd>jalo eläin</dd></dl></body></html>"
     )
     self.assertEquals([(SEGMENT_TYPE_LIST_ITEM, u"kissa"),
                        (SEGMENT_TYPE_LIST_ITEM, u"jalo eläin")], result)
Example #47
0
 def testNonAscii(self):
     result = parseHtml(u"<html><body><h1>Eläinlääk&auml;rissä käynti €</h1></body></html>")
     self.assertEquals([(SEGMENT_TYPE_HEADING, u"Eläinlääkärissä käynti €")], result)
Example #48
0
 def testParseHeader(self):
     result = parseHtml(u"<html><body><h1>Kissan ruokkiminen</h1></body></html>")
     self.assertEquals([(SEGMENT_TYPE_HEADING, u"Kissan ruokkiminen")], result)
Example #49
0
 def testHexCharacterReferences(self):
     result = parseHtml(u"<html><body><h1>&#xE4;</h1></body></html>")
     self.assertEquals([(SEGMENT_TYPE_HEADING, u"ä")], result)
Example #50
0
 def testParseNestedLists(self):
     result = parseHtml(u"<html><body><ul><li>kissa<ul><li>koira</li></ul></li></ul></body></html>")
     self.assertEquals([(SEGMENT_TYPE_OTHER, u"kissa"), (SEGMENT_TYPE_LIST_ITEM, u"koira")], result)
Example #51
0
 def testAnyClosingTagIsIgnoredIfOpenTagStackHasNoSuchTag(self):
     result = parseHtml(u"<html><head></style></head><body><p>kissa</p></body></html>")
     self.assertEquals([(SEGMENT_TYPE_PARAGRAPH, u"kissa")], result)
Example #52
0
 def assertParseError(self, html, lineno, offset):
     try:
         parseHtml(html)
     except HTMLParseError, e:
         self.assertEquals(lineno, e.lineno)
         self.assertEquals(offset, e.offset)
Example #53
0
 def testParseEmptyDocument(self):
     result = parseHtml(u"<html><head></head><body></body></html>")
     self.failUnless(len(result) == 0)
Example #54
0
 def testClearBeforeParagraph(self):
     result = parseHtml(u"<html><head><title>koira</title></head><body><p>kissa</p></body></html>")
     self.assertEquals([(SEGMENT_TYPE_OTHER, u"koira"), (SEGMENT_TYPE_PARAGRAPH, u"kissa")], result)
Example #55
0
 def testHeadMayRemainUnfinished(self):
     result = parseHtml(u"<html><head></html>")
     self.assertEquals([], result)
Example #56
0
 def testScriptsWithinPIsIgnoredAndContentStripped(self):
     result = parseHtml(
         u"<html><body><p>Kissaa on <script>aksldj</script>ruokittava.</p></body></html>"
     )
     self.assertEquals([(SEGMENT_TYPE_PARAGRAPH, u"Kissaa on ruokittava.")],
                       result)
Example #57
0
 def testParseListItemsWithinEm(self):
     result = parseHtml(u"<html><body><ul><li>kis<em>sa</em></li></ul></body></html>")
     self.assertEquals([(SEGMENT_TYPE_LIST_ITEM, u"kissa")], result)
Example #58
0
 def testParseParagraph(self):
     result = parseHtml(
         u"<html><body><p>Kissaa on ruokittava huolella.</p></body></html>")
     self.assertEquals(
         [(SEGMENT_TYPE_PARAGRAPH, u"Kissaa on ruokittava huolella.")],
         result)
Example #59
0
 def testParseDefinitionLists(self):
     result = parseHtml(u"<html><body><dl><dt>kissa</dt><dd>jalo eläin</dd></dl></body></html>")
     self.assertEquals([(SEGMENT_TYPE_LIST_ITEM, u"kissa"), (SEGMENT_TYPE_LIST_ITEM, u"jalo eläin")], result)
Example #60
0
 def testIgnoreImages(self):
     result = parseHtml(
         u"<html><body><p>Kissaa <img src='cat.jpg'>on ruokittava.</p></body></html>"
     )
     self.assertEquals([(SEGMENT_TYPE_PARAGRAPH, u"Kissaa on ruokittava.")],
                       result)