Line 32:
Line 32:
end
end
−
function Iterator.equipmentBy(context, n, pred)
+
function Iterator.equipmentBy(context, n, pred, pre)
local predKey = stringKey('pred', context, n)
local predKey = stringKey('pred', context, n)
if predKey then
if predKey then
Line 53:
Line 53:
local i = 1
local i = 1
local current = nil
local current = nil
+
local preFlag = true
return {
return {
next = function()
next = function()
Line 58:
Line 59:
local e = collection[i]
local e = collection[i]
if pred(e, i) then
if pred(e, i) then
+
if pre and preFlag then
+
local value = pre(e, i)
+
if value then
+
current = value
+
preFlag = false
+
return true
+
end
+
end
current = e._name
current = e._name
i = i + 1
i = i + 1
+
preFlag = true
return true
return true
end
end
Line 79:
Line 89:
return e._id >= from and e._id <= to
return e._id >= from and e._id <= to
end)
end)
+
end
+
+
function Iterator.equipmentByIdWithHeaders(context, n)
+
local from = numberKey('from', context, n, 1)
+
local to = numberKey('to', context, n, 500)
+
local prevMod = 0
+
return Iterator.equipmentBy(
+
context, n,
+
function(e)
+
return e._id >= from and e._id <= to
+
end,
+
function(e)
+
local currentMod = (e._id - 1) % 10
+
if currentMod <= prevMod then
+
prevMod = currentMod
+
return "!#No " .. U.pad(e._id - currentMod, 3, "0") .. " - " .. U.pad(e._id - currentMod + 9, 3, "0")
+
else
+
prevMod = currentMod
+
return false
+
end
+
end
+
)
end
end
Line 106:
Line 138:
end
end
testIterator('equipmentById', { from = '11', to = '20' })
testIterator('equipmentById', { from = '11', to = '20' })
+
testIterator('equipmentByIdWithHeaders', { from = '1', to = '30' })
testIterator('equipmentByType', { type = '2' })
testIterator('equipmentByType', { type = '2' })
testIterator('equipmentByType', { type = '1', sort = '_icon' })
testIterator('equipmentByType', { type = '1', sort = '_icon' })