edifact_orders_iso_16033
Version:
parser for EDIFACT ORDERS ISO 16033 Ophthalmic optics and instruments
1,584 lines (669 loc) • 31 kB
HTML
<html lang="en">
<head>
<meta charset='utf-8'>
<title>edifact_orders_iso_16033 1.1.1 | Documentation</title>
<meta name='description' content='parser for EDIFACT ORDERS ISO 16033 Ophthalmic optics and instruments '>
<meta name='viewport' content='width=device-width,initial-scale=1'>
<link href='assets/bass.css' rel='stylesheet'>
<link href='assets/style.css' rel='stylesheet'>
<link href='assets/github.css' rel='stylesheet'>
<link href='assets/split.css' rel='stylesheet'>
</head>
<body class='documentation m0'>
<div class='flex'>
<div id='split-left' class='overflow-auto fs0 height-viewport-100'>
<div class='py1 px2'>
<h3 class='mb0 no-anchor'>edifact_orders_iso_16033</h3>
<div class='mb1'><code>1.1.1</code></div>
<input
placeholder='Filter'
id='filter-input'
class='col12 block input'
spellcheck='false'
autocapitalize='off'
autocorrect='off'
type='text' />
<div id='toc'>
<ul class='list-reset h5 py1-ul'>
<li><a
href='#edi'
class=" toggle-sibling">
Edi
<span class='icon'>▸</span>
</a>
<div class='toggle-target display-none'>
<ul class='list-reset py1-ul pl1'>
<li class='h5'><span>Static members</span></li>
<li><a
href='#ediescape'
class='regular pre-open'>
.escape
</a></li>
<li><a
href='#edicompact'
class='regular pre-open'>
.compact
</a></li>
<li><a
href='#edidate'
class='regular pre-open'>
.date
</a></li>
<li><a
href='#edidatetime'
class='regular pre-open'>
.datetime
</a></li>
</ul>
<ul class='list-reset py1-ul pl1'>
<li class='h5'><span>Instance members</span></li>
<li><a
href='#edireset'
class='regular pre-open'>
#reset
</a></li>
<li><a
href='#ediwritesegment'
class='regular pre-open'>
#writeSegment
</a></li>
<li><a
href='#ediwriteelements'
class='regular pre-open'>
#writeElements
</a></li>
<li><a
href='#ediwritecomponent'
class='regular pre-open'>
#writeComponent
</a></li>
</ul>
</div>
</li>
<li><a
href='#segment'
class=" toggle-sibling">
Segment
<span class='icon'>▸</span>
</a>
<div class='toggle-target display-none'>
<ul class='list-reset py1-ul pl1'>
<li class='h5'><span>Instance members</span></li>
<li><a
href='#segmentval'
class='regular pre-open'>
#val
</a></li>
</ul>
</div>
</li>
<li><a
href='#message'
class=" toggle-sibling">
Message
<span class='icon'>▸</span>
</a>
<div class='toggle-target display-none'>
<ul class='list-reset py1-ul pl1'>
<li class='h5'><span>Instance members</span></li>
<li><a
href='#messagereset'
class='regular pre-open'>
#reset
</a></li>
<li><a
href='#messageinterpret'
class='regular pre-open'>
#interpret
</a></li>
<li><a
href='#messageexpect'
class='regular pre-open'>
#expect
</a></li>
<li><a
href='#messageexpectval'
class='regular pre-open'>
#expectVal
</a></li>
<li><a
href='#messagesetprop'
class='regular pre-open'>
#setProp
</a></li>
<li><a
href='#messageopensegment'
class='regular pre-open'>
#openSegment
</a></li>
</ul>
</div>
</li>
<li><a
href='#order16033'
class=" toggle-sibling">
Order16033
<span class='icon'>▸</span>
</a>
<div class='toggle-target display-none'>
<ul class='list-reset py1-ul pl1'>
<li class='h5'><span>Instance members</span></li>
<li><a
href='#order16033reset'
class='regular pre-open'>
#reset
</a></li>
</ul>
</div>
</li>
</ul>
</div>
<div class='mt1 h6 quiet'>
<a href='https://documentation.js.org/reading-documentation.html'>Need help reading this?</a>
</div>
</div>
</div>
<div id='split-right' class='relative overflow-auto height-viewport-100'>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='edi'>
Edi
</h3>
</div>
<p>Edi
this class serves as an Edi writer</p>
<p>before writing a new message, you must call the <code>.reset</code> method</p>
<div class='pre p1 fill-light mt0'>new Edi()</div>
<div class='py1 quiet mt1 prose-big'>Static Members</div>
<div class="clearfix">
<div class='border-bottom' id='ediescape'>
<div class="clearfix small pointer toggle-sibling">
<div class="py1 contain">
<a class='icon pin-right py1 dark-link caret-right'>▸</a>
<span class='code strong strong truncate'>escape(str)</span>
</div>
</div>
<div class="clearfix display-none toggle-target">
<section class='p2 mb2 clearfix bg-white minishadow'>
<p>for internal use only</p>
<div class='pre p1 fill-light mt0'>escape(str: any)</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>str</span> <code class='quiet'>(any)</code>
</div>
</div>
</div>
</section>
</div>
</div>
<div class='border-bottom' id='edicompact'>
<div class="clearfix small pointer toggle-sibling">
<div class="py1 contain">
<a class='icon pin-right py1 dark-link caret-right'>▸</a>
<span class='code strong strong truncate'>compact(lines)</span>
</div>
</div>
<div class="clearfix display-none toggle-target">
<section class='p2 mb2 clearfix bg-white minishadow'>
<p>remove the leading,trailing and LF in order to be complient with EDIFACT
EDIFACT strings are multiline in the test only for readability</p>
<div class='pre p1 fill-light mt0'>compact(lines: any)</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>lines</span> <code class='quiet'>(any)</code>
</div>
</div>
</div>
</section>
</div>
</div>
<div class='border-bottom' id='edidate'>
<div class="clearfix small pointer toggle-sibling">
<div class="py1 contain">
<a class='icon pin-right py1 dark-link caret-right'>▸</a>
<span class='code strong strong truncate'>date(datestr)</span>
</div>
</div>
<div class="clearfix display-none toggle-target">
<section class='p2 mb2 clearfix bg-white minishadow'>
<p>return a Date from an edi date str compatible with SQL</p>
<div class='pre p1 fill-light mt0'>date(datestr: any)</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>datestr</span> <code class='quiet'>(any)</code>
</div>
</div>
</div>
</section>
</div>
</div>
<div class='border-bottom' id='edidatetime'>
<div class="clearfix small pointer toggle-sibling">
<div class="py1 contain">
<a class='icon pin-right py1 dark-link caret-right'>▸</a>
<span class='code strong strong truncate'>datetime(dt)</span>
</div>
</div>
<div class="clearfix display-none toggle-target">
<section class='p2 mb2 clearfix bg-white minishadow'>
<p>convert dt to an datetime string YYYY-MM-DD HH:MM:SS</p>
<div class='pre p1 fill-light mt0'>datetime(dt: any)</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>dt</span> <code class='quiet'>(any)</code>
can either be an element
['YYYYMMD','HHMM']
or a YYYYMMDDHHMM string
</div>
</div>
</div>
</section>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Instance Members</div>
<div class="clearfix">
<div class='border-bottom' id='edireset'>
<div class="clearfix small pointer toggle-sibling">
<div class="py1 contain">
<a class='icon pin-right py1 dark-link caret-right'>▸</a>
<span class='code strong strong truncate'>reset()</span>
</div>
</div>
<div class="clearfix display-none toggle-target">
<section class='p2 mb2 clearfix bg-white minishadow'>
<p>reset
this method clear the current edifact string and reset the internal state of Edi</p>
<p>it has to be called before any new message.</p>
<div class='pre p1 fill-light mt0'>reset()</div>
</section>
</div>
</div>
<div class='border-bottom' id='ediwritesegment'>
<div class="clearfix small pointer toggle-sibling">
<div class="py1 contain">
<a class='icon pin-right py1 dark-link caret-right'>▸</a>
<span class='code strong strong truncate'>writeSegment(segment, elements)</span>
</div>
</div>
<div class="clearfix display-none toggle-target">
<section class='p2 mb2 clearfix bg-white minishadow'>
<p>writeSegement
write a segment of name <code>segment</code> with a number of elements.
if an element is a complex element (= with more than one component),
all components should be passed as an array.</p>
<p>If an element must be empty, pass undefined if this is not the last defined element.</p>
<div class='pre p1 fill-light mt0'>writeSegment(segment: any, elements: ...any)</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>segment</span> <code class='quiet'>(any)</code>
{string} the name of the segment (3 UpperCase chars)
</div>
</div>
<div class='space-bottom0'>
<div>
<span class='code bold'>elements</span> <code class='quiet'>(...any)</code>
{... string | array}
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Example</div>
<pre class='p1 overflow-auto round fill-light'><span class="hljs-keyword">let</span> edi = <span class="hljs-keyword">new</span> Edi();
edi.writeSegment(<span class="hljs-string">'UNB'</span>,[<span class="hljs-string">'UNOC'</span>,<span class="hljs-number">1</span>],<span class="hljs-string">'WS'</span>,<span class="hljs-string">'ESTORE'</span>,<span class="hljs-string">'NOV'</span>,[<span class="hljs-string">'20181001'</span>,<span class="hljs-string">'1255'</span>],<span class="hljs-string">'253006'</span>,<span class="hljs-literal">undefined</span>,<span class="hljs-string">'ESTORE'</span>);</pre>
</section>
</div>
</div>
<div class='border-bottom' id='ediwriteelements'>
<div class="clearfix small pointer toggle-sibling">
<div class="py1 contain">
<a class='icon pin-right py1 dark-link caret-right'>▸</a>
<span class='code strong strong truncate'>writeElements(elements)</span>
</div>
</div>
<div class="clearfix display-none toggle-target">
<section class='p2 mb2 clearfix bg-white minishadow'>
<p>for internal use only</p>
<div class='pre p1 fill-light mt0'>writeElements(elements: any)</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>elements</span> <code class='quiet'>(any)</code>
</div>
</div>
</div>
</section>
</div>
</div>
<div class='border-bottom' id='ediwritecomponent'>
<div class="clearfix small pointer toggle-sibling">
<div class="py1 contain">
<a class='icon pin-right py1 dark-link caret-right'>▸</a>
<span class='code strong strong truncate'>writeComponent(component)</span>
</div>
</div>
<div class="clearfix display-none toggle-target">
<section class='p2 mb2 clearfix bg-white minishadow'>
<p>for internal use only</p>
<div class='pre p1 fill-light mt0'>writeComponent(component: any)</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>component</span> <code class='quiet'>(any)</code>
</div>
</div>
</div>
</section>
</div>
</div>
</div>
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='segment'>
Segment
</h3>
</div>
<p>Segment
this class represent a segment with all elements / component</p>
<div class='pre p1 fill-light mt0'>new Segment(segment: any)</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>segment</span> <code class='quiet'>(any)</code>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Instance Members</div>
<div class="clearfix">
<div class='border-bottom' id='segmentval'>
<div class="clearfix small pointer toggle-sibling">
<div class="py1 contain">
<a class='icon pin-right py1 dark-link caret-right'>▸</a>
<span class='code strong strong truncate'>val(element, component)</span>
</div>
</div>
<div class="clearfix display-none toggle-target">
<section class='p2 mb2 clearfix bg-white minishadow'>
<p>return the value of a given element/component of the segment
if the element or component doen't exist, return undefined.</p>
<div class='pre p1 fill-light mt0'>val(element: int, component: int)</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>element</span> <code class='quiet'>(int)</code>
the number of the element of the segment
</div>
</div>
<div class='space-bottom0'>
<div>
<span class='code bold'>component</span> <code class='quiet'>(int)</code>
the number of the compenent of the element or undefined if all components must be returned
</div>
</div>
</div>
</section>
</div>
</div>
</div>
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='message'>
Message
</h3>
</div>
<p>Message
The super class for all message interpreters.</p>
<p>Implement the mechanism of message interpretation but does noting in itself
since it has no implementation of any segment</p>
<div class='pre p1 fill-light mt0'>new Message(encoding: any, segments: any, elements: any)</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>encoding</span> <code class='quiet'>(any)</code>
</div>
</div>
<div class='space-bottom0'>
<div>
<span class='code bold'>segments</span> <code class='quiet'>(any)</code>
</div>
</div>
<div class='space-bottom0'>
<div>
<span class='code bold'>elements</span> <code class='quiet'>(any)</code>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Instance Members</div>
<div class="clearfix">
<div class='border-bottom' id='messagereset'>
<div class="clearfix small pointer toggle-sibling">
<div class="py1 contain">
<a class='icon pin-right py1 dark-link caret-right'>▸</a>
<span class='code strong strong truncate'>reset()</span>
</div>
</div>
<div class="clearfix display-none toggle-target">
<section class='p2 mb2 clearfix bg-white minishadow'>
<p>reset is called at the beginning of interpret and must clear all previous data.</p>
<p>should be overwritten by the class that extends Message</p>
<div class='pre p1 fill-light mt0'>reset()</div>
</section>
</div>
</div>
<div class='border-bottom' id='messageinterpret'>
<div class="clearfix small pointer toggle-sibling">
<div class="py1 contain">
<a class='icon pin-right py1 dark-link caret-right'>▸</a>
<span class='code strong strong truncate'>interpret(edifact)</span>
</div>
</div>
<div class="clearfix display-none toggle-target">
<section class='p2 mb2 clearfix bg-white minishadow'>
<p>Interpret an EDIFACT Messaage by calling methods for each segment</p>
<p>Errors will be reported by exceptions</p>
<div class='pre p1 fill-light mt0'>interpret(edifact: <a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String">string</a>)</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>edifact</span> <code class='quiet'>(<a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String">string</a>)</code>
the edifact string
</div>
</div>
</div>
</section>
</div>
</div>
<div class='border-bottom' id='messageexpect'>
<div class="clearfix small pointer toggle-sibling">
<div class="py1 contain">
<a class='icon pin-right py1 dark-link caret-right'>▸</a>
<span class='code strong strong truncate'>expect(variable, values, message)</span>
</div>
</div>
<div class="clearfix display-none toggle-target">
<section class='p2 mb2 clearfix bg-white minishadow'>
<p>throw an error if variable has not an expected value</p>
<p>variable = the variable to check
values an expected value or an array of expected value. if undefined, doesn't check, just print the message</p>
<p>returns variable if everything ok</p>
<div class='pre p1 fill-light mt0'>expect(variable: any, values: any, message: any)</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>variable</span> <code class='quiet'>(any)</code>
</div>
</div>
<div class='space-bottom0'>
<div>
<span class='code bold'>values</span> <code class='quiet'>(any)</code>
</div>
</div>
<div class='space-bottom0'>
<div>
<span class='code bold'>message</span> <code class='quiet'>(any)</code>
</div>
</div>
</div>
</section>
</div>
</div>
<div class='border-bottom' id='messageexpectval'>
<div class="clearfix small pointer toggle-sibling">
<div class="py1 contain">
<a class='icon pin-right py1 dark-link caret-right'>▸</a>
<span class='code strong strong truncate'>expectVal(elementNumber, componentNumber, values)</span>
</div>
</div>
<div class="clearfix display-none toggle-target">
<section class='p2 mb2 clearfix bg-white minishadow'>
<p>check that a given component has a given value or is in a given set of values</p>
<div class='pre p1 fill-light mt0'>expectVal(elementNumber: any, componentNumber: any, values: any)</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>elementNumber</span> <code class='quiet'>(any)</code>
of the current segment
</div>
</div>
<div class='space-bottom0'>
<div>
<span class='code bold'>componentNumber</span> <code class='quiet'>(any)</code>
in the element
</div>
</div>
<div class='space-bottom0'>
<div>
<span class='code bold'>values</span> <code class='quiet'>(any)</code>
either a string or an array of string
</div>
</div>
</div>
</section>
</div>
</div>
<div class='border-bottom' id='messagesetprop'>
<div class="clearfix small pointer toggle-sibling">
<div class="py1 contain">
<a class='icon pin-right py1 dark-link caret-right'>▸</a>
<span class='code strong strong truncate'>setProp(obj, property, elementNumber, componentNumber)</span>
</div>
</div>
<div class="clearfix display-none toggle-target">
<section class='p2 mb2 clearfix bg-white minishadow'>
<p>set a property if the given element / component is defined</p>
<div class='pre p1 fill-light mt0'>setProp(obj: <a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object">object</a>, property: <a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String">string</a>, elementNumber: <a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number">number</a>, componentNumber: <a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number">number</a>)</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>obj</span> <code class='quiet'>(<a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object">object</a>)</code>
the object to set a property
</div>
</div>
<div class='space-bottom0'>
<div>
<span class='code bold'>property</span> <code class='quiet'>(<a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String">string</a>)</code>
the property name
</div>
</div>
<div class='space-bottom0'>
<div>
<span class='code bold'>elementNumber</span> <code class='quiet'>(<a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number">number</a>)</code>
the element number of the current segment
</div>
</div>
<div class='space-bottom0'>
<div>
<span class='code bold'>componentNumber</span> <code class='quiet'>(<a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number">number</a>)</code>
the number of the component to look for.
if undefined, the array of components is put into the property
<p>if either the element or element.component of the _currentSegment is undefined, nothing is done</p>
</div>
</div>
</div>
</section>
</div>
</div>
<div class='border-bottom' id='messageopensegment'>
<div class="clearfix small pointer toggle-sibling">
<div class="py1 contain">
<a class='icon pin-right py1 dark-link caret-right'>▸</a>
<span class='code strong strong truncate'>openSegment(segment)</span>
</div>
</div>
<div class="clearfix display-none toggle-target">
<section class='p2 mb2 clearfix bg-white minishadow'>
<p>understand the previous segment and open a new one in order to collect elements</p>
<div class='pre p1 fill-light mt0'>openSegment(segment: any)</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>segment</span> <code class='quiet'>(any)</code>
name of the segment
</div>
</div>
</div>
</section>
</div>
</div>
</div>
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='order16033'>
Order16033
</h3>
</div>
<p>Order16033
a parser for ORDERS according to ISO16033</p>
<div class='pre p1 fill-light mt0'>new Order16033()</div>
<p>
Extends
<a href="#message">Message</a>
</p>
<div class='py1 quiet mt1 prose-big'>Instance Members</div>
<div class="clearfix">
<div class='border-bottom' id='order16033reset'>
<div class="clearfix small pointer toggle-sibling">
<div class="py1 contain">
<a class='icon pin-right py1 dark-link caret-right'>▸</a>
<span class='code strong strong truncate'>reset()</span>
</div>
</div>
<div class="clearfix display-none toggle-target">
<section class='p2 mb2 clearfix bg-white minishadow'>
<p>reset must be call before interpreting a new message.</p>
<div class='pre p1 fill-light mt0'>reset()</div>
</section>
</div>
</div>
</div>
</section>
</div>
</div>
<script src='assets/anchor.js'></script>
<script src='assets/split.js'></script>
<script src='assets/site.js'></script>
</body>
</html>