BDNS Name parser

last update: by

Contents

Exported Functions
parse ()
parse_named($devname)
sortNamesBy($rA_names,$r_order)
sortNames($rA_names)
mkOrder($order)
setOrder()
cmpNamesBy($a,$b,$r_order)
cmpNames($a,$b)

Exported Functions

$MAXLENGTH, %pdom, %pfam, %psdom, cmpNames, parse, setOrder, sortNames

Es gibt ein Problem, wenn facility=P und entweder die Subdomain mit K beginnt oder die Subdomain leer ist, der letzte Buchstabe im Member einer gültigen Family entspricht und die family K ist. In diesem Fall ist ein eindeutiges Parsen nicht möglich!

Beispiele:

1.AICK3RP kann sowohl a. AI AI - member im regexp hier "non-greedy" C family control-system K3 subdomain K3 R Ring P PTB als auch b. AIC AIC - member im regexp hier "greedy" K family kicker/septa 3 counter 3 R Ring P PTB bedeuten

2.KIK1RP kann sowohl a. K K - member im regexp hier "non-greedy" I family insertion-device K1 subdomain K1 R Ring P PTB als auch b. KI KI - member im regexp hier "greedy" K family kicker/septa 1 counter 1 R Ring P PTB bedeuten

Im ersten Beispiel war der erste Fall gewünscht (1.a.), im zweiten der zweite (2.b.)! Blödes Dilemma...

Aktuell ist der Parser auf "non-greedy" gestellt, was zur Folge hat, daß im Fall KIK1RP eine subdomain angegeben werden muss(!) - also KIK1L4RP um den Namen korrekt aufzulösen. [sic]

parse ()

Parse device name and return array of:

  (member,allindex,index,subindex,family,counter,allsubdomain,subdomain,subdompre,subdomnumber,domain,facility)

parse_named($devname)

sortNamesBy($rA_names,$r_order)

Sort list of names according to the sortorder defined in setOrder or default [11,10,8,9,0,2,3,4,5]

sortNames($rA_names)

mkOrder($order)

Set sortorder by index or namelist or string

  0       1         2      3         4       5        6             7          8          9             10      11
  MEMBER, ALLINDEX, INDEX, SUBINDEX, FAMILY, COUNTER, ALLSUBDOMAIN, SUBDOMAIN, SUBDOMPRE, SUBDOMNUMBER, DOMAIN, FACILITY
  Name: VMI1-2V5S3M
  VMI     1-2       1      2         V       5        S3M           S3         S          3             M

Example for order definition synatx:

Reset to default sortorder:

  BDNS::setOrder("DEFAULT")

setOrder()

cmpNamesBy($a,$b,$r_order)

Compare function, used in function sortNames()

cmpNames($a,$b)