@@ -12,42 +12,51 @@ Extension.__index = Extension
1212
1313Extension .allExtensions = Charm .atom ({} :: { [Extension ]: true })
1414
15- Extension .allCommands = Charm .computed (function (): { Command . Command }
15+ Extension .sortedByTitle = Charm .computed (function (): { Extension }
1616 local result = {}
1717 for extension in Extension .allExtensions () do
18- table.move ( extension . _commands , 1 , # extension . _commands , # result + 1 , result )
18+ table.insert ( result , extension )
1919 end
20- table.sort (result , Command .sortByTitle )
20+ table.sort (result , function (lhs : Extension , rhs : Extension ): boolean
21+ return lhs ._metadata .title < rhs ._metadata .title
22+ end )
2123 return result
2224end )
2325
2426Extension .extensionTitles = Charm .computed (function (): { string }
25- local allExtensions = Extension .allExtensions ()
27+ local allExtensions = Extension .sortedByTitle ()
2628 local result = table.create (# allExtensions ) :: { string }
27- for ext in allExtensions do
29+ for _ , ext in allExtensions do
2830 table.insert (result , ext ._metadata .title )
2931 end
3032 table.sort (result )
3133 return result
3234end )
3335
34- Extension .commandTitles = Charm .computed (function (): { string }
36+ Extension .allCommands = Charm .computed (function (): { Command .Command }
37+ local result = {}
38+ for extension in Extension .allExtensions () do
39+ table.move (extension ._commands , 1 , # extension ._commands , # result + 1 , result )
40+ end
41+ table.sort (result , Command .sortByTitle )
42+ return result
43+ end )
44+
45+ Extension .commandToIndex = Charm .computed (function (): { [Command .Command ]: number }
3546 local allCommands = Extension .allCommands ()
36- local result = table.create (# allCommands ) :: { string }
37- for i , cmd in allCommands do
38- result [i ] = cmd . _metadata . title
47+ local result = table.create (# allCommands ) :: { [ Command . Command ]: number }
48+ for index , command in allCommands do
49+ result [command ] = index
3950 end
4051 return result
4152end )
4253
43- Extension .sortedByTitle = Charm .computed (function (): { Extension }
44- local result = {}
45- for extension in Extension .allExtensions () do
46- table.insert (result , extension )
54+ Extension .commandTitles = Charm .computed (function (): { string }
55+ local allCommands = Extension .allCommands ()
56+ local result = table.create (# allCommands ) :: { string }
57+ for i , cmd in allCommands do
58+ result [i ] = cmd ._metadata .title
4759 end
48- table.sort (result , function (lhs : Extension , rhs : Extension ): boolean
49- return lhs ._metadata .title < rhs ._metadata .title
50- end )
5160 return result
5261end )
5362
0 commit comments