singlePosition method
Implementation
@override
Parser singlePosition() => super.singlePosition().map((each) {
final e = each as List;
final unit = e.first as Money;
final allCost = e.elementAt(1) as List?;
final costType = allCost?.elementAt(0) as String?;
final isAbsoluteCost = costType == '{{';
var cost = allCost?.elementAt(1) as Cost?;
cost = cost?.copyWith(
value: costType != null && isAbsoluteCost && cost.value != null
? Money.fromFixedWithCurrency(
cost.value!.amount / (unit.amount * Fixed.fromNum(1.0)),
cost.value!.currency,
scale: 16)
: cost.value,
);
final price = e.elementAt(2) as List?;
final priceType = price?.first as String?;
final isAbsolutePrice = priceType == '@@';
var priceUnit = price?.last as Money?;
priceUnit = priceType != null && isAbsolutePrice && priceUnit != null
? Money.fromFixedWithCurrency(
priceUnit.amount / (unit.amount * Fixed.fromNum(1.0)),
priceUnit.currency,
scale: 16)
: priceUnit;
return Position(
unit: unit,
cost: costType != null ? (cost ?? Cost()) : null,
isAbsoluteCost: isAbsoluteCost,
price: priceUnit,
isAbsolutePrice: isAbsolutePrice,
);
});