|
Lift Framework example source code file (WithResourceId.scala)
The Lift Framework WithResourceId.scala source code/* * Copyright 2007-2011 WorldWide Conferencing, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.liftweb package builtin package snippet import net.liftweb.http._ import net.liftweb.common._ import net.liftweb.util._ import scala.xml._ import Helpers._ /** * Adds a resource id entity for each URI in order to control browser caching. * The rules of creating "unique" URI's are defined in LiftRules.attachResourceId function. * * <pre> * <lift:with-resource-id> * <link ... /> * <script ... /> * </lift:with-resource-id> * </pre> */ object WithResourceId extends DispatchSnippet { def dispatch: DispatchIt = { case _ => render } import Helpers._ def render(xhtml: NodeSeq): NodeSeq = { xhtml flatMap (_ match { case e @ Elem(prefix, "link", attrs, scope, childs @ _*) => attrStr(attrs, "href").map ( href => Elem(prefix, "link", MetaData.update(attrs, scope, new UnprefixedAttribute("href", LiftRules.attachResourceId(href), Null)), scope, childs: _*)) openOr e case e @ Elem(prefix, "script", attrs, scope, childs @ _*) => attrStr(attrs, "src") map (src => Elem(prefix, "script", MetaData.update(attrs, scope, new UnprefixedAttribute("src", LiftRules.attachResourceId(src), Null)), scope, childs: _*)) openOr e case e => e }) } private def attrStr(attrs: MetaData, attr: String): Box[String] = (attrs.get(attr) match { case None => Empty case Some(Nil) => Empty case Some(x) => Full(x.toString) }) or (attrs.get(attr.toLowerCase) match { case None => Empty case Some(Nil) => Empty case Some(x) => Full(x.toString) }) } Other Lift Framework examples (source code examples)Here is a short list of links related to this Lift Framework WithResourceId.scala source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.