summaryrefslogtreecommitdiff
path: root/init.lua
diff options
context:
space:
mode:
authorWuzzy <almikes@aol.com>2016-08-13 10:19:34 +0200
committerWuzzy <almikes@aol.com>2016-08-13 10:19:34 +0200
commita8e72e500800f8493fb317cd0f00e5150e4f1950 (patch)
tree5d638005c5d01332ed05e2d9392243a706df4e5f /init.lua
parent5127c79c2069e3fe9d3ea4c327c67fb5bfe51c2f (diff)
Add support for custom entry sorting
Diffstat (limited to 'init.lua')
-rw-r--r--init.lua22
1 files changed, 19 insertions, 3 deletions
diff --git a/init.lua b/init.lua
index 6d27a81..6c12494 100644
--- a/init.lua
+++ b/init.lua
@@ -257,20 +257,36 @@ function doc.get_sorted_entry_names(cid)
local sort_table = {}
local entry_table = {}
local cat = doc.data.categories[cid]
+ local used_eids = {}
+ -- Predefined sorting
+ if cat.def.sorting == "custom" then
+ for i=1,#cat.def.sorting_data do
+ local new_entry = table.copy(cat.entries[cat.def.sorting_data[i]])
+ new_entry.eid = cat.def.sorting_data[i]
+ table.insert(entry_table, new_entry)
+ used_eids[cat.def.sorting_data[i]] = true
+ end
+ end
for eid,entry in pairs(cat.entries) do
local new_entry = table.copy(entry)
new_entry.eid = eid
- table.insert(entry_table, new_entry)
+ if not used_eids[eid] then
+ table.insert(entry_table, new_entry)
+ end
table.insert(sort_table, entry.name)
end
- table.sort(sort_table)
+ if cat.def.sorting == "custom" then
+ return entry_table
+ else
+ table.sort(sort_table)
+ end
local reverse_sort_table = table.copy(sort_table)
for i=1, #sort_table do
reverse_sort_table[sort_table[i]] = i
end
- -- Sorting algorithm
local comp
if cat.def.sorting ~= "nosort" then
+ -- Alphabetic sorting
if cat.def.sorting == "abc" or cat.def.sorting == nil then
comp = function(e1, e2)
if reverse_sort_table[e1.name] < reverse_sort_table[e2.name] then return true else return false end