/scalate-page/src/main/scala/org/fusesource/scalate/page/BlogHelper.scala

http://github.com/scalate/scalate · Scala · 53 lines · 26 code · 7 blank · 20 comment · 3 complexity · e0bb80a32bdad4af5287d424e6369c2c MD5 · raw file

  1. /**
  2. * Copyright (C) 2009-2011 the original author or authors.
  3. * See the notice.md file distributed with this work for additional
  4. * information regarding copyright ownership.
  5. *
  6. * Licensed under the Apache License, Version 2.0 (the "License");
  7. * you may not use this file except in compliance with the License.
  8. * You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an "AS IS" BASIS,
  14. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. * See the License for the specific language governing permissions and
  16. * limitations under the License.
  17. */
  18. package org.fusesource.scalate
  19. package page
  20. import org.fusesource.scalate.util.IOUtil._
  21. import java.io.File
  22. import util.Log
  23. object BlogHelper {
  24. val log = Log(getClass)
  25. /**
  26. * Returns the blog posts from the current request's directory by default sorted in date order
  27. */
  28. def posts: List[Page] = {
  29. val context = RenderContext()
  30. val base = context.requestUri.replaceFirst("""/?[^/]+$""", "")
  31. val dir = context.engine.resourceLoader.resource(base + "/index.page")
  32. .flatMap(_.toFile)
  33. .getOrElse(throw new Exception("index page not found."))
  34. .getParentFile
  35. log.info("Using dir: " + dir + " at request path: " + base)
  36. val index = new File(dir, "index.page")
  37. dir.descendants.filter(f => f != index && !f.isDirectory && f.name.endsWith(".page"))
  38. .map { file =>
  39. val page = PageFilter.parse(context, file)
  40. page.link = file.relativeUri(dir).stripSuffix(".page") + ".html"
  41. page
  42. }
  43. .toList
  44. .sortBy(_.createdAt.getTime * -1)
  45. }
  46. }