aboutsummaryrefslogtreecommitdiffhomepage
path: root/scaffolder/src/Text/Edifact/Scaffolder/Segments/Implementation.hs
blob: 8535a17a2bf283c1a7008bde6980492aea153b00 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{-# LANGUAGE OverloadedStrings #-}

module Text.Edifact.Scaffolder.Segments.Implementation
  ( -- *
    toImplementation
  ) where

import           Text.Edifact.Scaffolder.Commons
import           Text.Edifact.Scaffolder.Segments.Types

import           Data.List.NonEmpty                     as NE (toList)
import           Formatting

toImplementation :: NonEmpty Dependency -> [Text]
toImplementation = haskellList . fmap callDependency . NE.toList

callDependency :: Dependency -> Text
callDependency (Dependency pos (Simple code _ presence _ _)) =
  sformat ( quoted fPosition % " .@ " % fPresence % " simple" % fSimpleCode) pos presence code
callDependency (Dependency pos (Composite code _ presence)) =
  sformat ( quoted fPosition % " .@ " % fPresence % " composite" % fCompositeCode) pos presence code