扩展lift CssSelector为使用jQuery CSS Selector 形式

啥也不说了,直接上代码

注意:lift 2.5 RC1 +, Scala 2.10 +

<!-- lang: scala -->
import scala.xml.{ NodeSeq, Text }
 
import net.liftweb.http.js._
import net.liftweb.util.{ CssSel, CanBind }
import net.liftweb.util.BindHelpers._
 
object Implicits {
 
  private val _selRegex = new scala.util.matching.Regex("""(\S)+""")
  private val _selMatch = Set('*', '-', '[', '^')
 
  implicit final class YbjStringToCssSel(exp: String) {
    def #>>[T](content: => T)(implicit computer: CanBind[T]): CssSel = {
      val selects = _selRegex.findAllMatchIn(exp).map(_.matched).toList
 
      val (init, last) =
        if (_selMatch.contains(selects.last.head))
          selects.dropRight(2) -> selects.takeRight(2).mkString(" ")
        else
          selects.dropRight(1) -> selects.takeRight(1).mkString
 
      init.foldRight(last #> content)((s, c) => s #> c)
    }
  }
 
}
 
// Test
import Imports._
"#id .class span *+" #>> "羊八井!" apply <div id="id"><a class="class"><span>您好,</span></a></div>

转载于:https://my.oschina.net/yangbajing/blog/109784

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值