示例#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)
示例#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)
示例#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)
示例#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)
示例#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)
示例#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)
示例#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)
示例#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)
示例#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,
     )
示例#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,
     )
示例#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)
示例#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)
示例#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)
示例#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)
示例#15
0
 def assertParseError(self, html, lineno, offset):
     try:
         parseHtml(html)
     except HTMLParseError, e:
         self.assertEquals(lineno, e.lineno)
         self.assertEquals(offset, e.offset)
示例#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)
示例#17
0
 def testStrayTdCloseTag(self):
     result = parseHtml(u"<html><body><p>kissa</p></td></body></html>")
     self.assertEquals([(SEGMENT_TYPE_PARAGRAPH, u"kissa")], result)
示例#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)
示例#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)
示例#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)
示例#21
0
 def testStrayTdCloseTag(self):
     result = parseHtml(u"<html><body><p>kissa</p></td></body></html>")
     self.assertEquals([(SEGMENT_TYPE_PARAGRAPH, u"kissa")], result)
示例#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)
示例#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)
示例#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)
示例#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)
示例#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)
示例#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)
示例#28
0
 def testParseEmptyDocument(self):
     result = parseHtml(u"<html><head></head><body></body></html>")
     self.failUnless(len(result) == 0)
示例#29
0
 def testTextWithinBody(self):
     result = parseHtml(u"<html><body>kissa</body></html>")
     self.assertEquals([(SEGMENT_TYPE_OTHER, u"kissa")], result)
示例#30
0
 def testHexCharacterReferences(self):
     result = parseHtml(u"<html><body><h1>&#xE4;</h1></body></html>")
     self.assertEquals([(SEGMENT_TYPE_HEADING, u"ä")], result)
示例#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)
示例#32
0
 def testTextWithinBody(self):
     result = parseHtml(u"<html><body>kissa</body></html>")
     self.assertEquals([(SEGMENT_TYPE_OTHER, u"kissa")], result)
示例#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)
示例#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)
示例#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)
示例#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)
示例#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)
示例#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)
示例#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)
示例#40
0
 def testHeadMayRemainUnfinished(self):
     result = parseHtml(u"<html><head></html>")
     self.assertEquals([], result)
示例#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)
示例#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)
示例#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)
示例#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)
示例#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)
示例#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)
示例#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)
示例#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)
示例#49
0
 def testHexCharacterReferences(self):
     result = parseHtml(u"<html><body><h1>&#xE4;</h1></body></html>")
     self.assertEquals([(SEGMENT_TYPE_HEADING, u"ä")], result)
示例#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)
示例#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)
示例#52
0
 def assertParseError(self, html, lineno, offset):
     try:
         parseHtml(html)
     except HTMLParseError, e:
         self.assertEquals(lineno, e.lineno)
         self.assertEquals(offset, e.offset)
示例#53
0
 def testParseEmptyDocument(self):
     result = parseHtml(u"<html><head></head><body></body></html>")
     self.failUnless(len(result) == 0)
示例#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)
示例#55
0
 def testHeadMayRemainUnfinished(self):
     result = parseHtml(u"<html><head></html>")
     self.assertEquals([], result)
示例#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)
示例#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)
示例#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)
示例#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)
示例#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)