Skip to content
This repository has been archived by the owner on Aug 17, 2022. It is now read-only.

how to use ficus to load inner config #10

Open
kretes opened this issue Jan 5, 2015 · 3 comments
Open

how to use ficus to load inner config #10

kretes opened this issue Jan 5, 2015 · 3 comments

Comments

@kretes
Copy link

kretes commented Jan 5, 2015

I have an example like this:

 "load embedded config with ficus" in {
      import net.ceedubs.ficus.readers.ArbitraryTypeReader._
      import net.ceedubs.ficus.Ficus._
      val config = ConfigFactory.parseString(
        """a { value = 2 }
          |b { value = 3 }""".stripMargin)

      case class Conf(value:Int)

      config.as[Conf]("a").value must_==(2)
      config.as[Conf]("b").value must_==(3)

      def getConf(config:Config) : Conf = {
        config.as[Conf]
      }

      val a:Conf = getConf(config.getConfig("a"))
      val b:Conf = getConf(config.getConfig("b"))
    }

where 'getConf' does not compile. What I want is to make 'getConf' method working as a config parser, which is given config part only, without knowing what the surrounding key was.

currently I nned to do config.asConf or else I do not get a 'Conf' instance.

is it something missing in Ficus, or am I doing something wrong?

@ceedubs
Copy link
Owner

ceedubs commented Jan 5, 2015

Yeah, as of now Ficus doesn't support extracting a value without its key. At one point I tried to implement Ficus so that readers were based just on value types and not keys, but the Typesafe Config API just is not very conducive to that.

One silly workaround is to put the value at a dummy key and then extract that key. For example:

private[this] val DummyKey = "dummy-key"

def getConf(config:Config) : Conf = {
  config.atKey(DummyKey).as[Conf](DummyKey)
}

¯_(ツ)_/¯

@artgon
Copy link

artgon commented Mar 29, 2015

Created a PR that can hopefully address it -- at least the way I've been using Ficus in my app.

See: #11

@arkadius
Copy link

arkadius commented Mar 3, 2016

You can wrap your config object this way:

ConfigFactory.empty().withValue("x", config.root()).as[T]("x")

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants