You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@esme.apache.org by vd...@apache.org on 2011/05/03 16:42:08 UTC

svn commit: r1099082 - in /esme/trunk/server/src/main/scala/org/apache/esme: lib/MsgParser.scala model/Message.scala

Author: vdichev
Date: Tue May  3 14:42:08 2011
New Revision: 1099082

URL: http://svn.apache.org/viewvc?rev=1099082&view=rev
Log:
Integrate Textile and ESME urls

Modified:
    esme/trunk/server/src/main/scala/org/apache/esme/lib/MsgParser.scala
    esme/trunk/server/src/main/scala/org/apache/esme/model/Message.scala

Modified: esme/trunk/server/src/main/scala/org/apache/esme/lib/MsgParser.scala
URL: http://svn.apache.org/viewvc/esme/trunk/server/src/main/scala/org/apache/esme/lib/MsgParser.scala?rev=1099082&r1=1099081&r2=1099082&view=diff
==============================================================================
--- esme/trunk/server/src/main/scala/org/apache/esme/lib/MsgParser.scala (original)
+++ esme/trunk/server/src/main/scala/org/apache/esme/lib/MsgParser.scala Tue May  3 14:42:08 2011
@@ -69,7 +69,7 @@ object MsgParser extends TextileParsers(
                        cite |  span | code | delete | insert |
                        sup | sub | strong | html |
                        single_quote | quote | acronym | 
-                       shortUrl | atName | hashTag | charBlock)
+                       atName | hashTag | charBlock)
   }
 
   val punctRegex = java.util.regex.Pattern.compile("""\p{Punct}""")
@@ -80,8 +80,6 @@ object MsgParser extends TextileParsers(
 
   lazy val startSpace = rep(' ')
 
-  lazy val shortUrl: Parser[URL] = fragmentAddress ^^ {url => URL(UrlStore.make(url))}
-
   lazy val userNameStr: Parser[String] = alpha ~ rep(alpha | digit | '_') ^^ {
     case first ~ more => first + more.mkString
   }
@@ -168,11 +166,26 @@ object MsgParser extends TextileParsers(
 
   lazy val scheme: Parser[String] = (accept("http://") | accept("https://")) ^^ {_ mkString}
 
-  lazy val fragmentAddress: Parser[String] = httpUrl ~ opt( '#' ~> fragmentid ) ^^ {
+  override lazy val httpStr: Parser[String] = httpUrl ~ opt( '#' ~> fragmentid ) ^^ {
     case uri ~ None => uri
     case uri ~ Some(fragmentid) => uri + "#" + fragmentid
   }
-  
+
+  def truncateUrl(urlString: String, len: Int) =
+    if (urlString.length <= len)
+      urlString
+    else
+      urlString.substring(0, len - 3) + "..."
+
+  override lazy val url: Parser[Textile] = httpStr ^^ { u =>
+    URL(UrlStore.make(u), truncateUrl(u, 20))
+  }
+
+  override lazy val quote_url: Parser[Textile] = ('"' ~> rep(attribute) ~ chrsExcept('"', '\n')) ~ ('"' ~> ':' ~> httpStr) ^^ {
+    case attr ~ fs ~ url =>
+      URL(UrlStore.make(url), fs)
+  }
+
   lazy val fragmentid: Parser[String] = rep( uchar ) ^^ {_ mkString}
   
   lazy val httpUrl: Parser[String] = scheme ~ login ~ urlpart ^^ {
@@ -462,10 +475,11 @@ case class HashTag(tag: Tag) extends Msg
   def toHtml = tag.toXml
 }
 
-case class URL(url: UrlStore) extends MsgInfo {
+case class URL(url: UrlStore, name: String) extends MsgInfo {
   def toHtml: NodeSeq =
     <url id={url.id.toString}
          url={url.url.toString}
+         name={name}
          uniqueId={url.uniqueId.is} >{url.url.toString}</url>
 }
 

Modified: esme/trunk/server/src/main/scala/org/apache/esme/model/Message.scala
URL: http://svn.apache.org/viewvc/esme/trunk/server/src/main/scala/org/apache/esme/model/Message.scala?rev=1099082&r1=1099081&r2=1099082&view=diff
==============================================================================
--- esme/trunk/server/src/main/scala/org/apache/esme/model/Message.scala (original)
+++ esme/trunk/server/src/main/scala/org/apache/esme/model/Message.scala Tue May  3 14:42:08 2011
@@ -401,20 +401,17 @@ class Message extends LongKeyedMapper[Me
 
         case e: Elem if e.label == "url" =>
           e.attribute("url").flatMap(url =>
-            e.attribute("uniqueId").map { id =>
-              val href =
-                if (pool.defined_?)
-                  // disable shortener to avoid popularity statistics
-                  url.toString
-                else
-                  "/u/" + id
-              def truncateUrl(urlString: String, len: Int) =
-                if (urlString.length <= len)
-                  urlString
-                else
-                  urlString.substring(0, len - 3) + "..."
-              <xml:group> <a class="tiplelement" href={root+href} target="_blank" title={url}>{truncateUrl(url.toString, 20)}</a> </xml:group>
-            }
+            e.attribute("name").flatMap(name =>
+              e.attribute("uniqueId").map { id =>
+                val href =
+                  if (pool.defined_?)
+                    // disable shortener to avoid popularity statistics
+                    url.toString
+                  else
+                    root + "/u/" + id
+                <xml:group> <a class="tiplelement" href={href} target="_blank" title={name}>{name}</a> </xml:group>
+              }
+            )
           ).getOrElse(Text("") )
 
         case x => x