edge :: Entry -> Maybe [String]
edge e@(Entry _ p) = do
  f <- lookup "from" c
  t <- lookup "to"   c
  return [[i|"#{str5 f}" -> "#{str5 t}" [label="#{name e}"]; // #{f} -> #{t}|]]
  where
  c = catProps p
edge :: Entry -> Maybe [String]
edge e@(Entry _ p) = do
  f <- lookup "from" c
  t <- lookup "to"   c
  return [[i|"#{str5 f}" -> "#{str5 t}" [label="#{name e}"]; // #{f} -> #{t}|]]
  where
  c = catProps p
edge e@(Entry _ p) = do
  f <- lookup "from" c
  t <- lookup "to"   c
  return [[i|"#{str5 f}" -> "#{str5 t}" [label="#{name e}"]; // #{f} -> #{t}|]]
  where
  c = catProps p