Closed
Description
I just want to gather a few ideas on how to implement interchange syntax elements like UNB, UNH, UNZ etc.: Messages, Control Header, and other things.
There are syntax implemetation guidelines of the UNECE, and other sources in the internet, like here
Best thing would be to write some sort of "syntax description language" which describes these syntax elements, and parse them. There are a few possibilities for the notation of this "syntax description":
- external files (YAML, TOML, CSV etc.)
- python classes
I had an idea writing these descriptions as classes, like Django does this in it's ORM, describing a syntax element by a class using attributes:
class CharType(Enum):
ALPHA = 0
ALPHANUMERIC = 1
NUMERIC = 2
class SyntaxElement:
"""Common description of an EDIFACT syntax element"""
def __init__(
self,
id: str,
mandatory: bool = False,
type: CharType = None,
length: int = None,
max_length: int = None,
):
# checks...
self.mandatory = mandatory
self.type = type
self.max = False
self.length = 0
if length:
self.length = length
elif max_length:
self.length = max_length
self.max = True
The first bytes of an Interchange Control Header would be then:
class InterchangeControlHeader:
syntax_identifier = SyntaxElement(
id="0001", mandatory=True, type=CharType.ALPHA, length=4
)
syntax_version_number = SyntaxElement(
id="0002", mandatory=True, type=CharType.ALPHANUMERIC, length=1
)
service_code_list_directory_version_number = SyntaxElement(
id="0080", type=CharType.ALPHANUMERIC, max_length=6
)
character_encoding = SyntaxElement(
id="0133", type=CharType.ALPHANUMERIC, max_length=3
)
@JocelynDelalande what do you think about that?
Metadata
Metadata
Assignees
Labels
No labels