defcommand works for OneEntry arguments
This commit is contained in:
@@ -89,30 +89,22 @@
|
|||||||
(let [argPairs
|
(let [argPairs
|
||||||
(groups (expList args) 2)
|
(groups (expList args) 2)
|
||||||
methodArgs
|
methodArgs
|
||||||
~(for [name type] argPairs
|
(for [name type] argPairs
|
||||||
// TODO write a macroCase macro that simplifies this terrible mess,
|
// TODO write a macroCase macro that simplifies this terrible mess,
|
||||||
// and maybe adds back precise pattern matching instead of relying
|
// and maybe adds back precise pattern matching instead of relying
|
||||||
// on partial string matching
|
// on partial string matching
|
||||||
(let [expAsStr (Std.string type)]
|
(let [expAsStr (Std.string type)]
|
||||||
(cond
|
(cond
|
||||||
((< -1 ~(max (expAsStr.indexOf "SelectedEntry") (expAsStr.indexOf "OneEntry"))) (typed "Entry" name))
|
((< -1 (max (expAsStr.indexOf "SelectedEntry") (expAsStr.indexOf "OneEntry"))) `:nat.Entry ,name)
|
||||||
((< -1 ~(max (expAsStr.indexOf "SelectedEntries") (expAsStr.indexof "Entries"))) (typed "Array<Entry>" name))
|
((< -1 (max (expAsStr.indexOf "SelectedEntries") (expAsStr.indexof "Entries"))) `:Array<nat.Entry> ,name)
|
||||||
((< -1 ~(expAsStr.indexOf "Text")) (typed "String" name))
|
((< -1 (expAsStr.indexOf "Text")) `:String ,name)
|
||||||
((< -1 ~(expAsStr.indexOf "Number")) (typed "Float" name)))))
|
((< -1 (expAsStr.indexOf "Number")) `:Float ,name))))
|
||||||
commandArgs
|
commandArgs
|
||||||
(for [name type] argPairs
|
(for [name type] argPairs
|
||||||
// TODO this is also a mess because for some reason quasiquote wouldn't work here
|
~`(object name ,(symbolName name) type ,type))]
|
||||||
~(call (symbol "object") [(symbol "name") (symbolNameExp name) (symbol "type") type]))]
|
|
||||||
`{
|
`{
|
||||||
(defmethod ,name ,methodArgs ,body)
|
(defmethod ,name [,@methodArgs] ,@body)
|
||||||
(dictSet commands ,(symbolNameExp name) (object args ,commandArgs handler ,name))}))
|
(dictSet commands ,(symbolName name) (object args [,@commandArgs] handler (the Function ,name)))}))
|
||||||
|
|
||||||
(defmethod selectEntries [:Array<Entry> e]
|
|
||||||
(set selectedEntries e))
|
|
||||||
|
|
||||||
(defmethod selectLastChangeSet []
|
|
||||||
(set selectedEntries lastChangeSet))
|
|
||||||
|
|
||||||
|
|
||||||
(defnew [&prop :Archive archive
|
(defnew [&prop :Archive archive
|
||||||
&prop :ArchiveUI ui]
|
&prop :ArchiveUI ui]
|
||||||
@@ -123,4 +115,13 @@
|
|||||||
(defcommand selectEntry [e OneEntry]
|
(defcommand selectEntry [e OneEntry]
|
||||||
(set selectedEntries [e]))
|
(set selectedEntries [e]))
|
||||||
|
|
||||||
)
|
/*
|
||||||
|
(defcommand selectEntries [entries (Entries null null)]
|
||||||
|
(set selectedEntries entries))
|
||||||
|
*/
|
||||||
|
|
||||||
|
(defcommand selectLastChangeSet []
|
||||||
|
(set selectedEntries lastChangeSet))
|
||||||
|
|
||||||
|
/*(defcommand createEntry [name (Text null null)]
|
||||||
|
~name)*/)
|
@@ -4,7 +4,7 @@
|
|||||||
(new ArchiveController
|
(new ArchiveController
|
||||||
(new Archive archiveDir)
|
(new Archive archiveDir)
|
||||||
(new CLI))]
|
(new CLI))]
|
||||||
(controller.runCommand (object args [(object name "str" type (Text 3 55)) (object name "int" type (Number 0 5 1))] handler (lambda [fuck shit] ~"string $fuck number $shit")))))
|
(controller.runCommand (dictGet controller.commands "selectEntry"))))
|
||||||
|
|
||||||
(defnew [])
|
(defnew [])
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user