#SUB

# From ben-wpan/bom, which in turn inherited it from gta02-core

-> T=unknown

R[0-9P]* {	# also handle RP...
    -> T=R
    VAL=*[0-9] -> R=${VAL}R
    VAL=$R -> R=$VAL
#    -> TOL=5%
    FN=$% -> TOL=$FN
}

RP[0-9]* {
    -> T=RA
    RP220[123] -> ARRAY=4
    # the other parameters have already been taken care of by R*
}

C[0-9]* {
    -> T=C
    VAL=*F -> C=$VAL
    VAL=(*F)/RF -> C=$VAL:1 X=RF	# *F/RF "wins" against the *F above
    FN=*V -> V=>=$FN
}

L[0-9]* {
    -> T=L
    VAL=*H -> L=$VAL
    FN=*A -> I=>=$FN
}

B[0-9]* {
    -> T=FILTER M=BEAD
    VAL=$R -> R=$VAL
    FN=*A -> I=$FN
    FN=*R -> Rdc=$FN
    FN=0.45R -> Rdc=450mR	# hack
}

D[0-9]* {
    -> T=D
    VAL=*F {	# heuristic to detect TVS
	-> M=TVS
	VAL=*F -> C=<=$VAL
	FN=(*V)ac -> Vac=$FN:1
	FN=(*V)dc -> Vdc=$FN:1

	#
	# Hack: some companies specify the class of varistors with Vdc = 9 V
	# as Vac = 6.5 V while others use Vac = 7 V. Sometimes, Vac is even
	# omitted entirely.
	#
	# Here, we work around the issue that Karmax use Vac = 6.5 V,
	# Cooper/Bussmann use Vac = 7V if at all, and out schematics specify
	# Vac = 6.5 V.
	#
	Vac=6.5V {
	    -> Vac=
	    -> Vdc=9V
	}
    }
}

VR[0-9]* -> T=D M=TVS {
	VAL=$V -> Vdc=$VAL	# neither clean nor consistent with the above
	FN=*F -> C=<=$FN
}

X[0-9]* {
    -> T=XTAL
    VAL=*Hz -> F=$VAL
    FN=*F -> C=$FN
    FN=*ppm -> TOL=<=$FN
}


FP=8:10-card -> VAL=8:10-card
FP=PAD_2mm -> VAL=PAD_2mm