Thanks, Duane; that looks promising. I'll try that out.

On Jul 29, 2016, 4:54 PM -0400, Duane Johnson <[email protected]>, wrote:
> I wonder if the `json-to-elm` project includes what you're looking for. I see 
> a Types.elm (http://Types.elm) file that includes a toValue function:
>
> > toValue : String -> Json.Value
> > toValue =
> > Native.Types.toValue
>
> And in the Native.Types (http://Native.Types) module, a definition of toValue 
> that uses native javascript:
>
> > var toValue = function(text){
> > try {
> > return JSON.parse(text);
> > } catch (e) {
> > return {};
> > }
> > };
>
>
>
>
> On Fri, Jul 29, 2016 at 2:33 PM, Paul Blair <[email protected] 
> (mailto:[email protected])> wrote:
> > Duane, the dictionary has string keys; its values are just values of a 
> > union type--they are not modules in themselves, but just tags that the case 
> > statement can key on in order to decide on which module to send the message 
> > to.
> >
> > On the second point, the top-level component knows enough about the 
> > incoming message to get the value from the message_type key. The type of 
> > the data field is opaque to the top-level; the top-level just sees it as 
> > Json.Value. This does in fact work; it's just hard to test.
> >
> >
> > On Fri, Jul 29, 2016 at 3:47 PM, Duane Johnson <[email protected] 
> > (mailto:[email protected])> wrote:
> > >
> > > On Fri, Jul 29, 2016 at 12:52 PM, Paul Blair <[email protected] 
> > > (mailto:[email protected])> wrote:
> > > > toMessage : FromServer -> Message
> > > > toMessage incoming =
> > > > case Dict.get incoming.message_type componentDictionary of
> > > > Just MyInnerComponent ->
> > > > InnerComponentModule.toMessage incoming |> 
> > > > MyInnerComponentMessageWrapper
> > > > Nothing ->
> > > > ...
> > > >
> > > >
> > >
> > >
> > >
> > >
> > > I'm still learning Elm, so forgive that this is not necessarily going to 
> > > be expert advice :)
> > >
> > > My first question is, what is the type of `componentDictionary`? It looks 
> > > to me like it has `String` type keys, but then I don't understand what 
> > > the type signature of the value is. `Maybe type`? How can you match on 
> > > `Just MyInnerComponent`?
> > >
> > > Second question: it seems like the top-level component *must* know 
> > > something about the messages in order to route to subcomponents. Can you 
> > > include a list of json keys in that routing information, so that you can 
> > > pass a narrower scope of data into each subcomponent? It seems like if 
> > > you can, that would make your testing story a lot easier.
> > >
> > > Duane
> > >
> > >
> > >
> > > --
> > > You received this message because you are subscribed to a topic in the 
> > > Google Groups "Elm Discuss" group.
> > > To unsubscribe from this topic, visit 
> > > https://groups.google.com/d/topic/elm-discuss/fwDl6deEC1Q/unsubscribe.
> > > To unsubscribe from this group and all its topics, send an email to 
> > > [email protected] 
> > > (mailto:[email protected]).
> > > For more options, visit https://groups.google.com/d/optout.
> >
> >
> >
> >
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "Elm Discuss" group.
> > To unsubscribe from this group and stop receiving emails from it, send an 
> > email to [email protected] 
> > (mailto:[email protected]).
> > For more options, visit https://groups.google.com/d/optout.
>
>
>
>
> --
> You received this message because you are subscribed to a topic in the Google 
> Groups "Elm Discuss" group.
> To unsubscribe from this topic, visit 
> https://groups.google.com/d/topic/elm-discuss/fwDl6deEC1Q/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to 
> [email protected] 
> (mailto:[email protected]).
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups "Elm 
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to