Skip to content

Commit

Permalink
Merge pull request #249 from hizel/og-description
Browse files Browse the repository at this point in the history
og:description
  • Loading branch information
maxcom committed Apr 13, 2012
2 parents 6a73929 + 3828a6e commit be571ff
Show file tree
Hide file tree
Showing 11 changed files with 96 additions and 1 deletion.
7 changes: 7 additions & 0 deletions src/main/java/ru/org/linux/topic/PreparedTopic.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ public final class PreparedTopic {
private final DeleteInfo deleteInfo;
private final User deleteUser;
private final String processedMessage;
private final String ogDescription;
private final PreparedPoll poll;
private final User commiter;
private final boolean lorcode;
Expand All @@ -55,6 +56,7 @@ public PreparedTopic(
DeleteInfo deleteInfo,
User deleteUser,
String processedMessage,
String ogDescription,
PreparedPoll poll,
User commiter,
List<String> tags,
Expand All @@ -72,6 +74,7 @@ public PreparedTopic(
this.deleteInfo = deleteInfo;
this.deleteUser = deleteUser;
this.processedMessage = processedMessage;
this.ogDescription = ogDescription;
this.poll = poll;
this.commiter = commiter;
this.lorcode = lorcode;
Expand Down Expand Up @@ -110,6 +113,10 @@ public String getProcessedMessage() {
return processedMessage;
}

public String getOgDescription() {
return ogDescription;
}

public PreparedPoll getPoll() {
return poll;
}
Expand Down
7 changes: 6 additions & 1 deletion src/main/java/ru/org/linux/topic/TopicPrepareService.java
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,7 @@ private PreparedTopic prepareMessage(
}

String processedMessage;
String ogDescription;
boolean lorcode;

if (text == null) {
Expand All @@ -211,8 +212,10 @@ private PreparedTopic prepareMessage(
} else {
processedMessage = lorCodeService.parseTopic(messageText.getText(), secure);
}
ogDescription = lorCodeService.parseForOgDescription(messageText.getText());
} else {
processedMessage = "<p>" + messageText.getText();
ogDescription = "";
}
} else {
lorcode = true;
Expand All @@ -227,6 +230,7 @@ private PreparedTopic prepareMessage(
} else {
processedMessage = lorCodeService.parseTopic(text, secure);
}
ogDescription = lorCodeService.parseForOgDescription(text);
}

String userAgent = userAgentDao.getUserAgentById(message.getUserAgent());
Expand All @@ -244,7 +248,8 @@ private PreparedTopic prepareMessage(
author,
deleteInfo,
deleteUser,
processedMessage,
processedMessage,
ogDescription,
preparedPoll,
commiter,
tags,
Expand Down
9 changes: 9 additions & 0 deletions src/main/java/ru/org/linux/util/bbcode/LorCodeService.java
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,15 @@ public String parseCommentRSS(String text, boolean secure) {
return defaultParser.parseRoot(prepareCommentRootNode(secure, true), text).renderXHtml();
}

/**
* Получить og:description из LORCODE текста. Тоесть только текст и без содержимого [code]
* @param text обрабатываемый текст
* @return og:description
*/
public String parseForOgDescription(String text) {
return defaultParser.parseRoot(prepareCommentRootNode(false, true), text).renderOg();
}

/**
* Возвращает множество пользователей упомянутых в сообщении
* @param text сообщение
Expand Down
19 changes: 19 additions & 0 deletions src/main/java/ru/org/linux/util/bbcode/nodes/Node.java
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,25 @@ public String renderChildrenBBCode() {
stringBuilder.append(child.renderBBCode());
}
return stringBuilder.toString();
}

public String renderOg() {
return "";
}

public String renderChildrenOg() {
StringBuilder stringBuilder = new StringBuilder();
for(Node child : children) {
stringBuilder.append(child.renderOg());
stringBuilder.append(" ");
if(stringBuilder.length() >= 250) {
break;
}
}
if(stringBuilder.length() <= 250) {
return stringBuilder.toString().trim();
} else {
return stringBuilder.substring(0, 250).trim();
}
}
}
5 changes: 5 additions & 0 deletions src/main/java/ru/org/linux/util/bbcode/nodes/RootNode.java
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,11 @@ public String renderBBCode() {
return renderChildrenBBCode();
}

@Override
public String renderOg() {
return renderChildrenOg();
}

public int getCutCount() {
cutCount += 1;
return cutCount;
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/ru/org/linux/util/bbcode/nodes/TagNode.java
Original file line number Diff line number Diff line change
Expand Up @@ -95,5 +95,9 @@ public String renderBBCode() {
return bbtag.renderNodeBBCode(this);
}

@Override
public String renderOg() {
return bbtag.renderNodeOg(this);
}

}
5 changes: 5 additions & 0 deletions src/main/java/ru/org/linux/util/bbcode/nodes/TextNode.java
Original file line number Diff line number Diff line change
Expand Up @@ -82,4 +82,9 @@ public String renderBBCode() {
public boolean allows(String tagname) {
return false;
}

@Override
public String renderOg() {
return Parser.escape(text);
}
}
5 changes: 5 additions & 0 deletions src/main/java/ru/org/linux/util/bbcode/tags/CodeTag.java
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,11 @@ public CodeTag(String name, Set<String> allowedChildren, String implicitTag, Par
super(name, allowedChildren, implicitTag, parserParameters);
}

@Override
public String renderNodeOg(Node node) {
return "";
}

@Override
public String renderNodeXhtml(Node node) {
if (node.lengthChildren() == 0) {
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/ru/org/linux/util/bbcode/tags/Tag.java
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,12 @@ public void setDiscardable(boolean discardable) {
this.discardable = discardable;
}

public String renderNodeOg(Node node) {
StringBuilder ret = new StringBuilder();
ret.append(node.renderChildrenOg());
return ret.toString();
}

public String renderNodeXhtml(Node node) {
throw new NotImplementedException();
}
Expand Down
3 changes: 3 additions & 0 deletions src/main/webapp/WEB-INF/jsp/view-message.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,9 @@
<c:if test="${preparedMessage.section.imagepost}">
<meta property="og:image" content="${preparedMessage.image.mediumName}">
</c:if>
<c:if test="${preparedMessage.ogDescription}">
<meta property="og:description" content="${preparedMessage.ogDescription}">
</c:if>
<c:if test="${prevMessage != null}">
<link rel="Previous" id="PrevLink" href="${fn:escapeXml(prevMessage.link)}" title="<%= StringUtil.makeTitle(prevMessage.getTitle()) %>">
</c:if>
Expand Down
27 changes: 27 additions & 0 deletions src/test/java/ru/org/linux/util/HTMLFormatterTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -654,4 +654,31 @@ public void listTest4() {
);
}

@Test
public void testOg() {
assertEquals(
"hello",
lorCodeService.parseForOgDescription("hello")
);

assertEquals(
"one crap two three",
lorCodeService.parseForOgDescription("[list]\n" +
"[*]one\n" +
"\n" +
"crap\n" +
"[*]two\n" +
"[*]three\n" +
"[/list]")
);
assertEquals(
"due one teo neo wuf?\nok",
lorCodeService.parseForOgDescription("due\n[quote][quote]one[br][/quote]teo[br][quote]neo[br][/quote][/quote]wuf?\nok")
);
assertEquals(
"",
lorCodeService.parseForOgDescription("[code]&#9618;[/code]")
);
}

}

0 comments on commit be571ff

Please sign in to comment.