Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- social {
- twitter {
- url="https://twitter.com"
- logo="images/twitter.png"
- }
- facebook {
- url="https://www.facebook.com"
- logo="images/facebook.png"
- }
- }
- <table border="0" cellspacing="0" cellpadding="2"><tr>
- @configuration.getConfig("social").map { config =>
- @for(item <- config.entrySet) {
- <td><a href="item.getString("url")">
- <img src="@routes.Assets.at("item.getString("logo")").absoluteURL()" width="24" height="24"/></a></td>
- }
- }
- </table>
- "social" : [
- {
- name="twitter"
- url="https://twitter.com",
- logo="images/twitter.png"
- },
- {
- name="facebook"
- url="https://www.facebook.com",
- logo="images/facebook.png"
- }
- ]
- @(message: String)(implicit request: RequestHeader)
- @import play.api.Play.current
- <table border="0" cellspacing="0" cellpadding="2"><tr>
- @current.configuration.getConfigList("social").get.map { config =>
- <td><a href="@config.getString("url")">
- <img src="@routes.Assets.at(config.getString("logo").get).absoluteURL()" width="24" height="24"/></a></td>
- }
- </table>
- import collection.JavaConversions._
- val socialConfig = ConfigFactory.load.getConfig("social")
- socialConfig.root.map { case (name: String, configObject: ConfigObject) =>
- val config = configObject.toConfig
- println(config.getString("url"))
- println(config.getString("logo"))
- }
- ConfigList socials = ConfigFactory().load.getList("social")
- for (ConfigValue cv : socials) {
- Config c = ((ConfigObject)cv).toConfig();
- System.out.println(c.getString("url"));
- System.out.println(c.getString("logo"));
- }
- private val firstSegmentRE = """^(w+)[.*].*$""".r
- // convert "aaa.bbb.ccc" to "aaa"
- private def parseFirstSegment(fullPath: String) : Option[String] = {
- if (fullPath.contains("."))
- fullPath match {
- case firstSegmentRE(segment) => Some(segment)
- case _ => None
- }
- else
- Some(fullPath)
- }
- // for all keys in white list get a map of key -> config
- protected def subConfigMap(config: Config, whiteList: List[String],
- configName: String) : ErrorOr[Map[String, Config]] = {
- // This will traverse the whole config and flatten down to the leaves..
- val leafKeys : List[String] =
- config.entrySet()
- .asScala
- .map(e => e.getKey)
- .toList
- // Remove all after the first dot
- val nextLevelKeys : List[String] =
- leafKeys.map(parseFirstSegment)
- .collect {
- case Some(firstSegment) => firstSegment
- }
- .distinct
- val keysToSearch = nextLevelKeys.filter(whiteList.contains)
- // we have a list of valid first level children
- // parse out subconfigs and convert to map
- keysToSearch.traverseErrorOr( key =>
- extractSubConfig(config, key, configName).map((key, _))
- )
- .map(_.toMap)
- }
Add Comment
Please, Sign In to add comment