'use strict'

const createParseBitmask = (profile) => {
	const defaultProducts = {}
	let withBitmask = []
	for (let product of profile.products) {
		defaultProducts[product.id] = false
		for (let bitmask of product.bitmasks) {
			withBitmask.push([bitmask, product])
		}
	}
	withBitmask.sort((a, b) => b[0] - a[0]) // descending

	const parseBitmask = (bitmask) => {
		const res = Object.assign({}, defaultProducts)

		for (let [pBitmask, product] of withBitmask) {
			if ((pBitmask & bitmask) > 0) {
				res[product.id] = true
				bitmask -= pBitmask
			}
			else{
				res[product.id] = false
			}
		}

		return res
	}
	return parseBitmask
}

module.exports = createParseBitmask