From b300eab493628af8a2f9d9cc333ae6d34d3bb216 Mon Sep 17 00:00:00 2001 From: sebthom Date: Sun, 29 Dec 2024 01:22:07 +0100 Subject: [PATCH] feat: update API to match Clink 1.7.7 --- .github/workflows/build.yml | 4 +- CHANGELOG.md | 5 ++ src/clink/api/ArgMatcher.hx | 19 ++++- src/clink/api/Clink.hx | 156 ++++++++++++++++++++++++++++------ src/clink/api/Console.hx | 129 +++++++++++++++++++++++++--- src/clink/api/IO.hx | 32 +++++-- src/clink/api/LineState.hx | 23 ++++- src/clink/api/Log.hx | 5 +- src/clink/api/MatchBuilder.hx | 56 +++++++----- src/clink/api/OS.hx | 152 +++++++++++++++++++++++++++++---- src/clink/api/Path.hx | 11 ++- src/clink/api/RL.hx | 89 ++++++++++++++++--- src/clink/api/RLBuffer.hx | 34 +++++++- src/clink/api/Settings.hx | 38 ++++++--- src/clink/api/Unicode.hx | 6 ++ test/clink/TestRunner.hx | 47 +++++++++- 16 files changed, 693 insertions(+), 113 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fe5ce2b..a0b1e99 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -69,7 +69,6 @@ jobs: - nightly - latest - 4.3.6 - - 4.2.5 steps: - name: "Show: GitHub context" @@ -90,7 +89,7 @@ jobs: run: | set -eux pushd $HOME - curl -sSfL https://github.com/chrisant996/clink/releases/download/v1.4.24/clink.1.4.24.688975.zip -o clink.zip + curl -sSfL https://github.com/chrisant996/clink/releases/download/v1.7.7/clink.1.7.7.521fa7.zip -o clink.zip unzip clink.zip -d clink cp clink/clink_x64.exe clink/clink.exe @@ -118,7 +117,6 @@ jobs: uses: vegardit/haxe-reusable-workflows/.github/actions/setup-haxe@dev with: haxe-reusable-workflows-version: dev - haxe-version: ${{ matrix.haxe }} haxe-libs: | haxe-doctest diff --git a/CHANGELOG.md b/CHANGELOG.md index 952bc0c..4e45f67 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed +- require Haxe 4.3.6 or higher +- update API to match Clink 1.7.7 API + + ## [0.2.0] - 2023-05-18 ### Added diff --git a/src/clink/api/ArgMatcher.hx b/src/clink/api/ArgMatcher.hx index 59aaa6a..423ef01 100644 --- a/src/clink/api/ArgMatcher.hx +++ b/src/clink/api/ArgMatcher.hx @@ -114,72 +114,87 @@ abstract ArgMatcher(ArgMatcherExtern) from ArgMatcherExtern to ArgMatcherExtern } } +@:ClinkAPI("1.7.7") @:allow(clink.api.ArgMatcher) @:allow(clink.api.ArgBuilder) private extern class ArgMatcherExtern { /** https://chrisant996.github.io/clink/clink.html#_argmatcher:addarg * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/arguments.lua#L750 */ + @:SinceClink("1.0.0") @:native("addarg") private overload function _addarg(choices:LuaTable):ArgMatcher; /** https://chrisant996.github.io/clink/clink.html#_argmatcher:adddescriptions * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/arguments.lua#L986 */ + @:SinceClink("1.2.38") @:native("adddescriptions") private function _adddescriptions(...descr:LuaTable):ArgMatcher; /** https://chrisant996.github.io/clink/clink.html#_argmatcher:addflags * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/arguments.lua#L803 */ + @:SinceClink("1.0.0") @:native("addflags") private function _addflags(choices:LuaTable):ArgMatcher; /** https://chrisant996.github.io/clink/clink.html#_argmatcher:chaincommand * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/arguments.lua#L1090 */ + @:SinceClink("1.3.13") @:native("chaincommand") function chainCommand():ArgMatcher; /** https://chrisant996.github.io/clink/clink.html#_argmatcher:hideflags * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/arguments.lua#L860 */ + @:SinceClink("1.3.3") @:native("hideflags") function hideFlags(...flags:String):ArgMatcher; /** https://chrisant996.github.io/clink/clink.html#_argmatcher:loop * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/arguments.lua#L888 */ + @:SinceClink("0.4.9") function loop(index:Int):ArgMatcher; /** https://chrisant996.github.io/clink/clink.html#_argmatcher:nofiles * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/arguments.lua#L1084 */ + @:SinceClink("1.0.0") @:native("nofiles") function noFiles():ArgMatcher; /** https://chrisant996.github.io/clink/clink.html#_argmatcher:reset * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/arguments.lua#L722 */ + @:SinceClink("1.3.10") function reset():ArgMatcher; /** https://chrisant996.github.io/clink/clink.html#_argmatcher:setclassifier * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/arguments.lua#L1138 */ + @:SinceClink("1.3.10") @:native("setclassifier") function setClassifier(handler:Classifier):ArgMatcher; /** https://chrisant996.github.io/clink/clink.html#_argmatcher:setdelayinit * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/arguments.lua#L1151 */ + @:SinceClink("1.3.10") @:native("setdelayinit") function setDelayedInitializer(handler:(argMatcher:ArgMatcher, commandWord:String) -> Void):ArgMatcher; /** https://chrisant996.github.io/clink/clink.html#_argmatcher:setendofflags * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/arguments.lua#L964 */ + @:SinceClink("1.3.12") @:native("setendofflags") - public extern overload function setEndOfFlags(enabled:Bool):ArgMatcher; + overload function setEndOfFlags(enabled:Bool):ArgMatcher; + @:SinceClink("1.3.12") @:native("setendofflags") - public extern overload function setEndOfFlags(endofflags:String = "--"):ArgMatcher; + overload function setEndOfFlags(endofflags:String = "--"):ArgMatcher; /** https://chrisant996.github.io/clink/clink.html#_argmatcher:setflagprefix * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/arguments.lua#L907 */ + @:SinceClink("1.0.0") @:native("setflagprefix") function setFlagPrefix(...prefixes:String):ArgMatcher; /** https://chrisant996.github.io/clink/clink.html#_argmatcher:setflagsanywhere * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/arguments.lua#L947 */ + @:SinceClink("1.3.12") @:native("setflagsanywhere") function setFlagsAnywhere(enabled:Bool):ArgMatcher; } diff --git a/src/clink/api/Clink.hx b/src/clink/api/Clink.hx index 2ab8ab5..f1a01e6 100644 --- a/src/clink/api/Clink.hx +++ b/src/clink/api/Clink.hx @@ -45,160 +45,269 @@ abstract Clink(ClinkExtern) from ClinkExtern { @:allow(clink.api.Clink) @:native("clink") +@:ClinkAPI("1.7.7") private extern class ClinkExtern { + /** https://chrisant996.github.io/clink/clink.html#clink.applytheme */ + @:SinceClink("1.7.0") + @:native("applytheme") + static function applyTheme(theme:String, clearAll:Bool = false, noSave:Bool = false): /* TODO */ Dynamic; + /** https://chrisant996.github.io/clink/clink.html#clink.argmatcher * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/arguments.lua#L1714 */ + @:SinceClink("1.0.0") @:native("argmatcher") private static function _argmatcher(priority:Int, ...commands:String):ArgMatcher; + /** https://chrisant996.github.io/clink/clink.html#clink.classifier */ + @:SinceClink("1.1.49") + static function classifier(?priority:Int): /* TODO */ Dynamic; + /** https://chrisant996.github.io/clink/clink.html#clink.dirmatches * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/arguments.lua#L1785 */ + @:SinceClink("1.1.8") @:native("dirmatches") static function dirMatches(matchWord:String):LuaArray; + /** https://chrisant996.github.io/clink/clink.html#clink.dirmatchesexact */ + @:SinceClink("1.6.4") + @:native("dirmatchesexact") + static function dirMatchesExact(matchWord:String):LuaArray; + /** https://chrisant996.github.io/clink/clink.html#clink.filematches * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/arguments.lua#L1822 */ + @:SinceClink("1.1.8") @:native("filematches") static function fileMatches(matchWord:String):LuaArray; + /** https://chrisant996.github.io/clink/clink.html#clink.filematchesexact */ + @:SinceClink("1.6.4") + @:native("filematchesexact") + static function fileMatchesExact(matchWord:String):LuaArray; + /** https://chrisant996.github.io/clink/clink.html#clink.generator * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/generator.lua#L321 */ + @:SinceClink("1.0.0") static function generator(?priority:Int):MatchGenerator; /** https://chrisant996.github.io/clink/clink.html#clink.getansihost * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/src/clink_api.cpp#L807 */ + @:SinceClink("1.1.48") @:native("getansihost") static function getAnsiHost():String; /** https://chrisant996.github.io/clink/clink.html#clink.getargmatcher * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/arguments.lua#L2183 */ + @:SinceClink("1.3.12") @:native("getargmatcher") overload static function getArgMatcher(command:String):Null; + @:SinceClink("1.3.12") @:native("getargmatcher") overload static function getArgMatcher(lineState:LineState):Null; + /** https://chrisant996.github.io/clink/clink.html#clink.getclinkprompt */ + @:SinceClink("1.7.0") + @:native("getclinkprompt") + function getClinkPrompt(): /*TODO*/ Dynamic; + /** https://chrisant996.github.io/clink/clink.html#clink.getpopuplistcolors * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/src/clink_api.cpp#L746 */ + @:SinceClink("1.4.0") @:native("getpopuplistcolors") static function getPopupListColors():PopupColors; + /** https://chrisant996.github.io/clink/clink.html#clink.getprompts */ + @:SinceClink("1.7.0") + @:native("getprompts") + overload function getPrompts(): /*TODO*/ Dynamic; + + /** https://chrisant996.github.io/clink/clink.html#clink.getprompts */ + @:SinceClink("1.7.0") + @:native("getprompts") + overload function getPrompts(name:String):String; + /** https://chrisant996.github.io/clink/clink.html#clink.getsession * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/src/clink_api.cpp#L784 */ + @:SinceClink("1.4.44") @:native("getsession") static function getSession():String; + /** https://chrisant996.github.io/clink/clink.html#clink.getthemes */ + @:SinceClink("1.7.0") + @:native("getthemes") + overload function getThemes(): /*TODO*/ Dynamic; + + /** https://chrisant996.github.io/clink/clink.html#clink.getthemes */ + @:SinceClink("1.7.0") + @:native("getthemes") + overload function getThemes(name:String):String; + + /** https://chrisant996.github.io/clink/clink.html#clink.hinter */ + @:SinceClink("1.6.22") + static function hinter(?priority:Int): /*TODO*/ Dynamic; + + /** https://chrisant996.github.io/clink/clink.html#clink.lower + * ``` + * >>> Clink.lower("Äpfel") == "äpfel" + * ``` + */ + @:SinceClink("0.4.9") + @:allow(clink.TestRunner) + @:allow(clink.util.Strings) + private static function lower(text:String):String; + /** https://chrisant996.github.io/clink/clink.html#clink.onaftercommand * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/events.lua#L359 */ + @:SinceClink("1.2.50") @:native("onaftercommand") - static function onAfterCommand(func:() -> Void):Void; + static function onAfterCommand(func:() -> Any):Void; /** https://chrisant996.github.io/clink/clink.html#clink.onbeginedit * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/events.lua#L146 */ + @:SinceClink("1.1.11") @:native("onbeginedit") - static function onBeginEdit(func:() -> Void):Void; + static function onBeginEdit(func:() -> Any):Void; /** https://chrisant996.github.io/clink/clink.html#clink.oncommand * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/events.lua#L229 */ + @:SinceClink("1.3.12") @:native("oncommand") static function onCommand(func:(lineState:LineState, commandInfo:{ command:String, quoted:Bool, type:String, file:String - }) -> Void):Void; + }) -> Any):Void; /** https://chrisant996.github.io/clink/clink.html#clink.ondisplaymatches * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/events.lua#L250 */ + @:SinceClink("1.1.12") @:native("ondisplaymatches") static function onDisplayMatches(func:(matches:LuaArray, popup:Bool) -> LuaArray):Void; /** https://chrisant996.github.io/clink/clink.html#clink.onendedit * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/events.lua#L192 */ + @:SinceClink("1.1.20") @:native("onendedit") - static function onEndEdit(func:(line:String) -> Void):Void; + static function onEndEdit(func:(line:String) -> Any):Void; /** https://chrisant996.github.io/clink/clink.html#clink.onfilterinput * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/events.lua#L207 */ + @:SinceClink("1.2.16") @:native("onfilterinput") static function onFilterInput(func:(line:String) -> OnFilterInputResult):Void; /** https://chrisant996.github.io/clink/clink.html#clink.onfiltermatches * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/events.lua#L302 */ + @:SinceClink("1.1.41") @:native("onfiltermatches") static function onFilterMatches(func:(matches:LuaArray, completionType:CompletionType, filenameCompletionDesired:Bool) -> LuaArray):Void; + /** https://chrisant996.github.io/clink/clink.html#clink.onhistory */ + @:SinceClink("1.5.13") + @:native("onhistory") + static function onHistory(func:() -> Any):Void; + /** https://chrisant996.github.io/clink/clink.html#clink.oninject * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/events.lua#L136 */ + @:SinceClink("1.1.21") @:native("oninject") - static function onInject(func:() -> Void):Void; + static function onInject(func:() -> Any):Void; /** https://chrisant996.github.io/clink/clink.html#clink.oninputlinechanged * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/events.lua#L313 */ + @:SinceClink("1.4.18") @:native("oninputlinechanged") - static function onInputLineChanged(func:(line:String) -> Void):Void; + static function onInputLineChanged(func:(line:String) -> Any):Void; /** https://chrisant996.github.io/clink/clink.html#clink.onprovideline * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/scripts/events.lua#L313 */ + @:SinceClink("1.3.18") @:native("onprovideline") static function onProvideLine(func:(line:String) -> Null):Void; /** https://chrisant996.github.io/clink/clink.html#clink.parseline */ + @:SinceClink("1.3.37") @:native("parseline") static function parseLine(line:String):LuaArray; /** https://chrisant996.github.io/clink/clink.html#clink.popuplist * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/src/clink_api.cpp#L465 */ + @:SinceClink("1.2.17") @:native("popuplist") static function popupList(title:String, items:LuaArray<{value:String, ?display:String, ?description:String}>, ?index:Int, + @:SinceClink("1.3.41") ?del_callback:(index:Int) -> Bool):Null; /** https://chrisant996.github.io/clink/clink.html#clink.print * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/src/clink_api.cpp#L63 */ + @:SinceClink("1.2.11") static function print(...values:Any):Void; /** https://chrisant996.github.io/clink/clink.html#clink.promptcoroutine */ + @:SinceClink("1.2.10") @:native("promptcoroutine") static function promptCoroutine(func:() -> T):Null; /** https://chrisant996.github.io/clink/clink.html#clink.promptfilter */ + @:SinceClink("1.0.0") @:native("promptfilter") static function promptFilter(?priority:Int):PromptFilter; + /** https://chrisant996.github.io/clink/clink.html#clink.readtheme */ + @:SinceClink("1.7.0") + @:native("readtheme") + static function readTheme(?priority:Int): /* TODO */ Dynamic; + /** https://chrisant996.github.io/clink/clink.html#clink.reclassifyline */ + @:SinceClink("1.3.9") @:native("reclassifyline") static function reclassifyLine():Void; /** https://chrisant996.github.io/clink/clink.html#clink.recognizecommand */ + @:SinceClink("1.3.38") @:native("recognizecommand") overload static function recognizeCommand(line:String, word:String, ?quoted:Bool):RecognizeCommandResult; + /** https://chrisant996.github.io/clink/clink.html#clink.recognizecommand */ + @:SinceClink("1.3.38") @:native("recognizecommand") overload static function recognizeCommand(word:String, ?quoted:Bool):RecognizeCommandResult; /** https://chrisant996.github.io/clink/clink.html#clink.refilterafterterminalresize */ + @:SinceClink("1.4.0") @:native("refilterafterterminalresize") static function refilterAfterTerminalResize(refilter:Bool):Bool; /** https://chrisant996.github.io/clink/clink.html#clink.refilterprompt * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/src/clink_api.cpp#L975 */ + @:SinceClink("1.2.46") @:native("refilterPrompt") static function refilterprompt():Void; /** https://chrisant996.github.io/clink/clink.html#clink.reload * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/src/clink_api.cpp#L951 */ + @:SinceClink("1.2.29") static function reload():Void; /** https://chrisant996.github.io/clink/clink.html#clink.runcoroutineuntilcomplete */ + @:SinceClink("1.3.5") @:native("runcoroutineuntilcomplete") static function runCoroutineUntilComplete(corountine:Coroutine):Void; + /** https://chrisant996.github.io/clink/clink.html#clink.runonmain */ + @:SinceClink("1.5.21") + @:native("runonmain") + static function runOnMain(func:() -> Any):Void; + /** https://chrisant996.github.io/clink/clink.html#clink.setcoroutineinterval */ + @:SinceClink("1.3.1") @:native("setcoroutineinterval") static function setCoroutineInterval(corountine:Coroutine, ?interval:Int):Void; /** https://chrisant996.github.io/clink/clink.html#clink.setcoroutinename */ + @:SinceClink("1.3.1") @:native("setcoroutinename") static function setCoroutineName(corountine:Coroutine, name:String):Void; @@ -206,50 +315,49 @@ private extern class ClinkExtern { * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/app/scripts/suggest.lua#L126 * >>> Clink.suggester("somename") != null */ + @:SinceClink("1.2.47") static function suggester(name:String):Suggester; /** https://chrisant996.github.io/clink/clink.html#clink.translateslashes * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/src/clink_api.cpp#L858 */ + @:SinceClink("1.2.7") @:native("translateslashes") static function translateSlashes(?mode:SlashTranslation):Int; + /** https://chrisant996.github.io/clink/clink.html#clink.upper + * ``` + * >>> Clink.upper("äpfel") == "ÄPFEL" + * ``` + */ + @:SinceClink("1.1.5") + @:allow(clink.TestRunner) + @:allow(clink.util.Strings) + private static function upper(text:String):String; + /** https://chrisant996.github.io/clink/clink.html#clink.version_commit */ + @:SinceClink("1.1.10") @:native("version_commit") static final versionCommit:String; /** https://chrisant996.github.io/clink/clink.html#clink.version_encoded */ + @:SinceClink("1.1.10") @:native("version_encoded") static final versionEncoded:String; /** https://chrisant996.github.io/clink/clink.html#clink.version_major */ + @:SinceClink("1.1.10") @:native("version_major") static final versionMajor:Int; /** https://chrisant996.github.io/clink/clink.html#clink.version_minor */ + @:SinceClink("1.1.10") @:native("version_minor") static final versionMinor:Int; /** https://chrisant996.github.io/clink/clink.html#clink.version_patch */ + @:SinceClink("1.1.10") @:native("version_patch") static final versionPatch:Int; - - /** https://chrisant996.github.io/clink/clink.html#clink.lower - * ``` - * >>> Clink.lower("Äpfel") == "äpfel" - * ``` - */ - @:allow(clink.TestRunner) - @:allow(clink.util.Strings) - private static function lower(text:String):String; - - /** https://chrisant996.github.io/clink/clink.html#clink.upper - * ``` - * >>> Clink.upper("äpfel") == "ÄPFEL" - * ``` - */ - @:allow(clink.TestRunner) - @:allow(clink.util.Strings) - private static function upper(text:String):String; } diff --git a/src/clink/api/Console.hx b/src/clink/api/Console.hx index e04b482..3ca5ba7 100644 --- a/src/clink/api/Console.hx +++ b/src/clink/api/Console.hx @@ -6,43 +6,84 @@ */ package clink.api; +import lua.NativeIterator; +import clink.util.LuaTable; import haxe.extern.EitherType; - import clink.util.LuaArray; /** https://chrisant996.github.io/clink/clink.html#console * https://github.com/chrisant996/clink/blob/master/clink/lua/src/console_api.cpp */ +@:ClinkAPI("1.7.7") @:native("console") extern class Console { /** https://chrisant996.github.io/clink/clink.html#console.cellcount - * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/src/console_api.cpp#L83 */ + * ``` + * >>> Console.cellCount("hello") == 5 + * ``` + */ + @:SinceClink("1.2.5") @:native("cellcount") static function cellCount(text:String):Int; - /** https://chrisant996.github.io/clink/clink.html#console.checkinput - * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/src/console_api.cpp#L643 */ + /* https://chrisant996.github.io/clink/clink.html#console.cellcountiter */ + @:SinceClink("1.6.1") + @:native("cellcountiter") + static function cellCountIterator(text:String):NativeIterator; + + /** https://chrisant996.github.io/clink/clink.html#console.checkinput */ + @:SinceClink("1.3.42") @:native("checkinput") - static function checkInput(?timeout:Int):Bool; + static function checkInput(timeoutSeconds:Float = 0):Bool; - /** https://chrisant996.github.io/clink/clink.html#console.findnextline - * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/src/console_api.cpp#L553 */ + /** https://chrisant996.github.io/clink/clink.html#console.ellipsify + * ``` + * >>> Console.ellipsify("helloworld", 5).ellipsified == "hell…" + * ``` + */ + @:SinceClink("1.7.5") + static function ellipsify(text:String, limit:Int, mode:ElipsifyMode = ElipsifyMode.RIGHT, ellipsis:String = "…"):EllipsifyResult; + + /** https://chrisant996.github.io/clink/clink.html#console.explodeansi + * ``` + * >>> Console.explodeAnsi("\x1b[0;1mBold\x1b[m").toArray() == [ "\x1b[0;1m", "Bold", "\x1b[m" ] + * ``` + */ + @:SinceClink("1.6.1") + @:native("explodeansi") + static function explodeAnsi(text:String):LuaArray; + + /** https://chrisant996.github.io/clink/clink.html#console.findnextline */ + @:SinceClink("1.1.21") @:native("findnextline") static function findNextLine(startingLine:Int, ?text:String, ?mode:String, ?attr:EitherType>, ?mask:Mask):Int; - /** https://chrisant996.github.io/clink/clink.html#console.findprevline - * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/src/console_api.cpp#L507 */ + /** https://chrisant996.github.io/clink/clink.html#console.findprevline */ + @:SinceClink("1.1.21") @:native("findprevline") static function findPrevLine(startingLine:Int, ?text:String, ?mode:String, ?attr:EitherType>, ?mask:Mask):Int; + /** https://chrisant996.github.io/clink/clink.html#console.getcolortable */ + @:SinceClink("1.5.15") + @:native("getcolortable") + static function getColorTable():ColorTable; + + /** https://chrisant996.github.io/clink/clink.html#console.getcursorpos */ + @:SinceClink("1.4.28") + @:native("getcursorpos") + static function getCursorPos():CursorPos; + /** https://chrisant996.github.io/clink/clink.html#console.getheight */ + @:SinceClink("1.1.20") @:native("getheight") static function getHeight():Int; /** https://chrisant996.github.io/clink/clink.html#console.getlinetext */ + @:SinceClink("1.1.20") @:native("getlinetext") static function getLineText(line:Int):String; /** https://chrisant996.github.io/clink/clink.html#console.getnumlines */ + @:SinceClink("1.1.20") @:native("getnumlines") static function getNumLines():Int; @@ -51,50 +92,114 @@ extern class Console { * >>> Console.getTitle().length > 0 * ``` */ + @:SinceClink("1.1.32") @:native("gettitle") static function getTitle():String; /** https://chrisant996.github.io/clink/clink.html#console.gettop */ + @:SinceClink("1.1.20") @:native("getTop") static function getTop():Int; /** https://chrisant996.github.io/clink/clink.html#console.getwidth */ + @:SinceClink("1.1.20") @:native("getwidth") static function getWidth():Int; /** https://chrisant996.github.io/clink/clink.html#console.islinedefaultcolor */ + @:SinceClink("1.1.20") @:native("islinedefaultcolor") static function isLineDefaultColor(line:Int):Bool; /** https://chrisant996.github.io/clink/clink.html#console.linehascolor */ + @:SinceClink("1.1.21") @:native("linehascolor") static function lineHasColor(line:Int, ?attr:EitherType>, ?mask:Mask):Int; /** https://chrisant996.github.io/clink/clink.html#console.plaintext */ + @:SinceClink("1.2.5") static function plaintext(text:String):PlainTextResult; /** https://chrisant996.github.io/clink/clink.html#console.readinput */ + @:SinceClink("1.2.29") @:native("readinput") static function readInput(noCursor:Bool):Null; - /** https://chrisant996.github.io/clink/clink.html#console.scroll */ - static function scroll(mode:ScrollMode, amount:Int):Int; - /** https://chrisant996.github.io/clink/clink.html#console.screengrab */ + @:SinceClink("1.1.40") @:native("screengrab") static function screenGrab(candidatePattern:String, acceptAattern:String):LuaArray; + /** https://chrisant996.github.io/clink/clink.html#console.scroll */ + @:SinceClink("1.1.20") + static function scroll(mode:ScrollMode, amount:Int):Int; + /** https://chrisant996.github.io/clink/clink.html#console.settitle */ + @:SinceClink("1.1.32") @:native("settitle") static function setTitle(title:String):Void; } +abstract ColorTable(LuaTable) from LuaTable { + + public var background(get, never):Int; + public var foreground(get, never):Int; + public var isDefaultColorTable(get, never):Bool; + + public function get(colorIndex:Int):String { + return this.get(colorIndex); + } + + private function get_isDefaultColorTable():Bool { + return (cast this.get("default")) == true; + } + + private function get_background():Int { + return cast this.get("background"); + } + + private function get_foreground():Int { + return cast this.get("foreground"); + } +} + + +/** https://chrisant996.github.io/clink/clink.html#console.cellcountiter */ +@:multiReturn +extern class GlyphInfo { + final text:String; + final visibleCellsCount:Int; + final isEmoji:Bool; +} + + +enum abstract ElipsifyMode(String) to String { + final RIGHT = "right"; + final LEFT = "left"; + final PATH = "path"; +} + + +/** https://chrisant996.github.io/clink/clink.html#console.ellipsify */ +@:multiReturn +extern class EllipsifyResult { + final ellipsified:String; + final visibleCellsCount:Int; +} + enum abstract Mask(String) to String { final FOREGROUND = "fore"; final BACKGROUND = "back"; } +/** https://chrisant996.github.io/clink/clink.html#console.getcursorpos */ +@:multiReturn +extern class CursorPos { + final x:Int; + final y:Int; +} + /** https://chrisant996.github.io/clink/clink.html#console.plaintext */ @:multiReturn extern class PlainTextResult { diff --git a/src/clink/api/IO.hx b/src/clink/api/IO.hx index 8af7fe0..9466384 100644 --- a/src/clink/api/IO.hx +++ b/src/clink/api/IO.hx @@ -12,18 +12,27 @@ import lua.FileHandle; * https://chrisant996.github.io/clink/clink.html#io * https://github.com/chrisant996/clink/blob/master/clink/lua/src/io_api.cpp */ +@:ClinkAPI("1.7.7") @:native("io") extern class IO { - /** https://chrisant996.github.io/clink/clink.html#io.open - * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/src/io_api.cpp#L549 */ - static function open(filaname:String, ?mode:String):OpenResult; + /** https://chrisant996.github.io/clink/clink.html#io.open */ + @:SinceClink("0.0.1") + static function open(filaname:String, mode:String = "r"):OpenResult; - /** https://chrisant996.github.io/clink/clink.html#io.popenrw - * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/src/io_api.cpp#L337 */ + /** https://chrisant996.github.io/clink/clink.html#io.popenrw */ + @:SinceClink("1.1.42") static function popenrw(command:String, mode:FileMode = TEXT):PopenrwResult; - /** https://chrisant996.github.io/clink/clink.html#io.truncate - * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/src/io_api.cpp#L661 */ + /** https://chrisant996.github.io/clink/clink.html#io.popenrw */ + @:SinceClink("1.2.10") + static function popenyield(command:String, mode:FileMode = TEXT):PopenyieldResult; + + /** https://chrisant996.github.io/clink/clink.html#io.sopen */ + @:SinceClink("1.3.18") + static function sopen(filename:String, mode:String = "r", deny:String = ""):PopenyieldResult; + + /** https://chrisant996.github.io/clink/clink.html#io.truncate */ + @:SinceClink("1.3.41") static function truncate(file:FileHandle):TruncateResult; } @@ -49,6 +58,15 @@ extern class PopenrwResult { } +@:multiReturn +extern class PopenyieldResult { + final stdout:FileHandle; + + @:SinceClink("1.3.31") + final close:Void->Int; +} + + @:multiReturn extern class TruncateResult { final success:Int; diff --git a/src/clink/api/LineState.hx b/src/clink/api/LineState.hx index 70aa856..e79f380 100644 --- a/src/clink/api/LineState.hx +++ b/src/clink/api/LineState.hx @@ -6,32 +6,53 @@ */ package clink.api; -/** +/** * https://chrisant996.github.io/clink/clink.html#line_state * https://github.com/chrisant996/clink/blob/master/clink/lua/src/line_state_lua.cpp */ +@:ClinkAPI("1.7.7") extern class LineState { + @:SinceClink("1.0.0") @:native("getcommandoffset") function getCommandOffset():Int; + @:SinceClink("1.2.27") @:native("getcommandwordindex") function getCommandWordIndex():Int; + @:SinceClink("1.0.0") @:native("getcursor") function getCursor():Int; + @:SinceClink("1.0.0") @:native("getendword") function getEndWord():String; + @:SinceClink("1.6.2") + @:native("getendwordoffset") + function getEndWordOffset():Int; + + @:SinceClink("1.0.0") @:native("getline") function getLine():String; + @:SinceClink("1.6.1") + @:native("getrangelength") + function getRangeLength():Int; + + @:SinceClink("1.6.1") + @:native("getrangeoffset") + function getRangeOffset():Int; + + @:SinceClink("1.0.0") @:native("getword") function getWord(index:Int):String; + @:SinceClink("1.0.0") @:native("getwordcount") function getWordCount():Int; + @:SinceClink("1.0.0") @:native("getwordinfo") function getWordInfo(index:Int):WordInfo; } diff --git a/src/clink/api/Log.hx b/src/clink/api/Log.hx index 077f53b..adb7f43 100644 --- a/src/clink/api/Log.hx +++ b/src/clink/api/Log.hx @@ -6,16 +6,19 @@ */ package clink.api; -/** +/** * https://chrisant996.github.io/clink/clink.html#log * https://github.com/chrisant996/clink/blob/master/clink/lua/src/log_api.cpp */ +@:ClinkAPI("1.7.7") @:native("log") extern class Log { /** https://chrisant996.github.io/clink/clink.html#log.getfile */ + @:SinceClink("1.4.15") @:native("getfile") static function getFile():Null; /** https://chrisant996.github.io/clink/clink.html#log.info */ + @:SinceClink("1.1.3") static function info(message:String, level:Int = 1):Void; } diff --git a/src/clink/api/MatchBuilder.hx b/src/clink/api/MatchBuilder.hx index dcd114b..17b2950 100644 --- a/src/clink/api/MatchBuilder.hx +++ b/src/clink/api/MatchBuilder.hx @@ -12,52 +12,67 @@ import clink.util.LuaArray; * https://chrisant996.github.io/clink/clink.html#builder * https://github.com/chrisant996/clink/blob/master/clink/lua/src/match_builder_lua.cpp */ +@:ClinkAPI("1.7.7") extern class MatchBuilder { - /** https://chrisant996.github.io/clink/clink.html#builder:addmatch - * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/src/match_builder_lua.cpp#L55 */ + /** https://chrisant996.github.io/clink/clink.html#builder:addmatch */ + @:SinceClink("1.0.0") @:native("addmatch") overload function addMatch(match:String, ?type:String):Bool; + @:SinceClink("1.0.0") @:native("addmatch") overload function addMatch(match:Match):Bool; - /** https://chrisant996.github.io/clink/clink.html#builder:addmatches - * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/src/match_builder_lua.cpp#L320 */ + /** https://chrisant996.github.io/clink/clink.html#builder:addmatches */ + @:SinceClink("1.0.0") @:native("addmatches") overload function addMatches(matches:LuaArray):Bool; + @:SinceClink("1.0.0") @:native("addmatches") overload function addMatches(matches:LuaArray, ?type:String):Bool; + + @:SinceClink("1.0.0") @:native("addmatches") overload function addMatches(matches:LuaArray):Bool; - /** https://chrisant996.github.io/clink/clink.html#builder:isempty - * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/src/match_builder_lua.cpp#L143 */ + /** https://chrisant996.github.io/clink/clink.html#builder:isempty */ + @:SinceClink("1.3.9") @:native("isempty") function isEmpty():Bool; - /** https://chrisant996.github.io/clink/clink.html#builder:setforcequoting - * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/src/match_builder_lua.cpp#L214 */ + /** https://chrisant996.github.io/clink/clink.html#builder:setappendcharacter */ + @:SinceClink("1.1.2") + @:native("setappendcharacter") + function setAppendCharacter(?append:String):Void; + + /** https://chrisant996.github.io/clink/clink.html#builder:setforcequoting */ + @:SinceClink("1.4.19") @:native("setforcequoting") function setForceQuoting():Void; - /** https://chrisant996.github.io/clink/clink.html#builder:setnosort - * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/src/match_builder_lua.cpp#L224 */ + /** https://chrisant996.github.io/clink/clink.html#builder:setfullyqualify */ + @:SinceClink("1.5.3") + @:native("setfullyqualify") + function setFullyQualify(fullyQualify:Bool = true):Void; + + /** https://chrisant996.github.io/clink/clink.html#builder:setnosort */ + @:SinceClink("1.3.3") @:native("setnosort") function setNoSort():Void; - /** https://chrisant996.github.io/clink/clink.html#builder:setsuppressappend - * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/src/match_builder_lua.cpp#L174 */ + /** https://chrisant996.github.io/clink/clink.html#builder:setsuppressappend */ + @:SinceClink("1.1.2") @:native("setsuppressappend") function setSuppressAppend():Void; - /** https://chrisant996.github.io/clink/clink.html#builder:setsuppressquoting - * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/src/match_builder_lua.cpp#L191 */ + /** https://chrisant996.github.io/clink/clink.html#builder:setsuppressquoting */ + @:SinceClink("1.1.2") @:native("setsuppressquoting") function setSuppressQuoting():Void; - /** https://chrisant996.github.io/clink/clink.html#builder:setvolatile - * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/src/match_builder_lua.cpp#L234 */ + /** https://chrisant996.github.io/clink/clink.html#builder:setvolatile */ + @:SinceClink("1.3.37") @:native("setvolatile") function setVolatile():Void; } @@ -65,11 +80,12 @@ extern class MatchBuilder { /** https://chrisant996.github.io/clink/clink.html#builder:addmatch */ typedef Match = { match:String, - ?display:String, - ?description:String, + /* @:SinceClink("1.2.38") */ ?display:String, + /* @:SinceClink("1.5.4") */ ?arginfo:String, + /* @:SinceClink("1.2.38") */ ?description:String, ?type:MatchTypeWithModifiers, - ?appendchar:String, - ?suppressappend:Bool + /* @:SinceClink("1.3.1") */ ?appendchar:String, + /* @:SinceClink("1.3.1") */ ?suppressappend:Bool } /** diff --git a/src/clink/api/OS.hx b/src/clink/api/OS.hx index 5eedfbf..f06c1a7 100644 --- a/src/clink/api/OS.hx +++ b/src/clink/api/OS.hx @@ -6,7 +6,9 @@ */ package clink.api; +import clink.internal.EitherType3; import haxe.extern.EitherType; +import lua.NativeIterator; import clink.api.IO.FileMode; import clink.util.LuaArray; import clink.util.LuaMap; @@ -15,49 +17,93 @@ import clink.util.LuaMap; * https://chrisant996.github.io/clink/clink.html#os * https://github.com/chrisant996/clink/blob/master/clink/lua/src/os_api.cpp */ +@:ClinkAPI("1.7.7") @:native("os") extern class OS { - /** https://chrisant996.github.io/clink/clink.html#os.abbreviatepath */ + /** https://chrisant996.github.io/clink/clink.html#os.abbreviatepath + * ``` + * >>> OS.abbreviatePath("C:\\Windows\\System32\\Dism") == "C:\\Windows\\System3\\Dism" + * ``` + */ + @:SinceClink("1.4.1") @:native("abbreviatepath") static function abbreviatePath(path:String, ?decide:(path:String) -> Bool, ?transform:(name:String, isAbbreviated:Bool) -> Null):String; /** https://chrisant996.github.io/clink/clink.html#os.chdir */ + @:SinceClink("1.0.0") static function chdir(path:String):ResultOrError; + /** https://chrisant996.github.io/clink/clink.html#os.clock + * ``` + * >>> OS.clock() > 0 + * ``` + */ + @:SinceClink("1.2.30") + static function clock():Float; + /** https://chrisant996.github.io/clink/clink.html#os.copy */ + @:SinceClink("1.2.30") static function copy(src:String, dest:String):ResultOrError; + /** https://chrisant996.github.io/clink/clink.html#os.createguid + * ``` + * >>> OS.createGuid() .guid.length == 36 + * >>> OS.createGuid(true).guid.length == 36 + * ``` + */ + @:SinceClink("1.7.0") + @:native("createguid") + static function createGuid(?faster:Bool):Null; + /** https://chrisant996.github.io/clink/clink.html#os.createtmpfile */ + @:SinceClink("1.1.42") @:native("createtmpfile") static function createTmpFile(prefix:String = "tmp", ext:String = "", ?path:String, mode:FileMode = TEXT):ResultOrError>; /** https://chrisant996.github.io/clink/clink.html#os.debugprint */ + @:SinceClink("1.2.20") @:native("debugprint") static function debugPrint(anything:Dynamic):Void; + /** https://chrisant996.github.io/clink/clink.html#os.enumshares */ + @:SinceClink("1.6.0") + @:native("enumshares") + static function enumerateShares(server:String, hidden:Bool = false, timeout:Float = 0):NativeIterator>; + /** https://chrisant996.github.io/clink/clink.html#os.expandabbreviatedpath */ + @:SinceClink("1.4.1") @:native("expandabbreviatedpath") static function expandAbbreviatedPath(path:String):Null; /** https://chrisant996.github.io/clink/clink.html#os.expandenv */ + @:SinceClink("1.2.5") @:native("expandenv") static function expandEnv(value:String):String; + /** https://chrisant996.github.io/clink/clink.html#os.findfiles */ + @:SinceClink("1.6.13") + @:native("findfiles") + static function findFiles(pattern:String, ?extraInfo:EitherType, ?flags:FindFilesOpts):FindFilesResult; + /** https://chrisant996.github.io/clink/clink.html#os.getalias */ + @:SinceClink("1.1.4") @:native("getalias") static function getAlias(name:String):Null; /** https://chrisant996.github.io/clink/clink.html#os.getaliases */ + @:SinceClink("1.1.7") @:native("getaliases") static function getAliases():LuaMap; /** https://chrisant996.github.io/clink/clink.html#os.getbatterystatus */ + @:SinceClink("1.1.17") @:native("getbatterystatus") static function getBatteryStatus():BatteryStatus; /** https://chrisant996.github.io/clink/clink.html#os.getclipboardtext */ + @:SinceClink("1.2.32") @:native("getclipboardtext") static function getClipboardText():Null; @@ -66,6 +112,7 @@ extern class OS { * >>> OS.getCWD().length > 0 * ``` */ + @:SinceClink("1.0.0") @:native("getcwd") static function getCWD():String; @@ -74,14 +121,17 @@ extern class OS { * >>> OS.getDriveType() != null * ``` */ + @:SinceClink("1.3.37") @:native("getdrivetype") static function getDriveType():DriveType; /** https://chrisant996.github.io/clink/clink.html#os.getenv */ + @:SinceClink("1.0.0") @:native("getenv") static function getEnv(value:String):Null; /** https://chrisant996.github.io/clink/clink.html#os.getenvnames */ + @:SinceClink("1.0.0") @:native("getenvnames") static function getEnvNames():LuaArray; @@ -90,14 +140,17 @@ extern class OS { * >>> OS.getErrorLevel() == 0 * ``` */ + @:SinceClink("1.2.14") @:native("geterrorlevel") static function getErrorLevel():Int; /** https://chrisant996.github.io/clink/clink.html#os.getfileversion */ + @:SinceClink("1.4.17") @:native("getfileversion") static function getFileVersion(name:String):Null; /** https://chrisant996.github.io/clink/clink.html#os.getfullpathname */ + @:SinceClink("1.1.42") @:native("getfullpathname") static function getFullPath(path:String):ResultOrError>; @@ -106,14 +159,17 @@ extern class OS { * >>> OS.getHost().length > 0 * ``` */ + @:SinceClink("1.0.0") @:native("gethost") static function getHost():String; /** https://chrisant996.github.io/clink/clink.html#os.getlongpathname */ + @:SinceClink("1.1.42") @:native("getlongpathname") static function getLongPath(path:String):ResultOrError>; /** https://chrisant996.github.io/clink/clink.html#os.getnetconnectionname */ + @:SinceClink("1.2.27") @:native("getnetconnectionname") static function getNetConnectionName(path:String):ResultOrError>; @@ -122,100 +178,131 @@ extern class OS { * >>> OS.getPID() > 0 * ``` */ + @:SinceClink("1.1.41") @:native("getpid") static function getPID():Int; + /** https://chrisant996.github.io/clink/clink.html#os.getpushddepth */ + @:SinceClink("1.5.6") + @:native("getpushddepth") + static function getPushdDepth():GetPushdDepthResult; + /** https://chrisant996.github.io/clink/clink.html#os.getscreeninfo */ + @:SinceClink("1.1.2") @:native("getscreeninfo") static function getScreenInfo():ScreenInfo; /** https://chrisant996.github.io/clink/clink.html#os.getshortpathname */ + @:SinceClink("1.1.42") @:native("getshortpathname") static function getShortPath(path:String):ResultOrError>; /** https://chrisant996.github.io/clink/clink.html#os.gettemppath */ + @:SinceClink("1.3.18") @:native("gettemppath") static function getTempPath():ResultOrError>; - /** https://chrisant996.github.io/clink/clink.html#os.globmatch - * @since clink 1.4.24 */ - @:native("globmatch") - overload static function globMatch(pattern:String):LuaArray; - - /** https://chrisant996.github.io/clink/clink.html#os.globmatch - * @since clink 1.4.24 */ - @:native("globmatch") - overload static function globMatch(pattern:String, ?extraInfo:EitherType, - ?filter:GlobFilterOpts):LuaArray>; - /** https://chrisant996.github.io/clink/clink.html#os.globdirs */ + @:SinceClink("1.0.0") @:native("globdirs") overload static function globDirs(pattern:String):LuaArray; /** https://chrisant996.github.io/clink/clink.html#os.globdirs */ + @:SinceClink("1.0.0") @:native("globdirs") overload static function globDirs(pattern:String, ?extraInfo:EitherType, - ?filter:GlobFilterOpts):LuaArray>; + ?filter:GlobFilterOpts):LuaArray>; /** https://chrisant996.github.io/clink/clink.html#os.globfiles */ + @:SinceClink("1.0.0") @:native("globfiles") overload static function globFiles(pattern:String):LuaArray; /** https://chrisant996.github.io/clink/clink.html#os.globfiles */ + @:SinceClink("1.0.0") @:native("globfiles") overload static function globFiles(pattern:String, ?extraInfo:EitherType, - ?filter:GlobFilterOpts):LuaArray>; + ?filter:GlobFilterOpts):LuaArray>; + + /** https://chrisant996.github.io/clink/clink.html#os.globmatch */ + @:SinceClink("1.4.24") + @:native("globmatch") + overload static function globMatch(pattern:String):LuaArray; + + /** https://chrisant996.github.io/clink/clink.html#os.globmatch */ + @:SinceClink("1.4.24") + @:native("globmatch") + overload static function globMatch(pattern:String, ?extraInfo:EitherType, + ?filter:GlobFilterOpts):LuaArray>; /** https://chrisant996.github.io/clink/clink.html#os.isdir * ``` * >>> OS.isDir('C:\\') == true * ``` */ + @:SinceClink("1.0.0") @:native("isdir") static function isDir(path:String):Bool; /** https://chrisant996.github.io/clink/clink.html#os.isfile */ + @:SinceClink("1.0.0") @:native("isfile") static function isFile(path:String):Bool; /** https://chrisant996.github.io/clink/clink.html#os.issignaled */ + @:SinceClink("1.3.14") @:native("issignaled") static function isSignaled():Bool; /** https://chrisant996.github.io/clink/clink.html#os.isuseradmin */ + @:SinceClink("1.4.17") @:native("isuseradmin") static function isUserAdmin():Bool; /** https://chrisant996.github.io/clink/clink.html#os.mkdir */ + @:SinceClink("1.0.0") @:native("mkdir") static function mkDir(path:String):ResultOrError; /** https://chrisant996.github.io/clink/clink.html#os.move */ + @:SinceClink("1.0.0") static function move(src:String, dest:String):ResultOrError; /** https://chrisant996.github.io/clink/clink.html#os.resolvealias */ + @:SinceClink("1.3.12") @:native("resolvealias") static function resolveAlias(text:String):Null>; /** https://chrisant996.github.io/clink/clink.html#os.rmdir */ + @:SinceClink("1.0.0") @:native("rmdir") static function rmDir(path:String):ResultOrError; + /** https://chrisant996.github.io/clink/clink.html#os.setalias */ + @:native("setalias") + @:SinceClink("1.6.11") + static function setAlias(name:String, command:String):Bool; + /** https://chrisant996.github.io/clink/clink.html#os.setclipboardtext */ @:native("setclipboardtext") + @:SinceClink("1.2.32") static function setClipboardText(text:String):Bool; /** https://chrisant996.github.io/clink/clink.html#os.setenv */ + @:SinceClink("1.0.0") @:native("setenv") static function setEnv(name:String, value:String):ResultOrError; /** https://chrisant996.github.io/clink/clink.html#os.sleep */ + @:SinceClink("1.3.16") static function sleep(seconds:Int):Void; /** https://chrisant996.github.io/clink/clink.html#os.touch */ + @:SinceClink("1.2.31") static function touch(path:String, ?atime:Int, ?mtime:Int):ResultOrError; /** https://chrisant996.github.io/clink/clink.html#os.unlink */ + @:SinceClink("1.0.0") static function unlink(path:String):ResultOrError; } @@ -226,12 +313,40 @@ extern class OS { } +/** https://chrisant996.github.io/clink/clink.html#rl.createguid */ +@:multiReturn +extern class CreateGuidResult { + final guid:String; + final isOnlyLocallyUnique:Bool; +} + /** https://chrisant996.github.io/clink/clink.html#os.createtmpfile */ typedef CreateTempFileResult = { handle:Any, name:String } +enum abstract ShareInfoStatus(String) to String { + final CANCELED = "canceled"; +} + + +/** https://chrisant996.github.io/clink/clink.html#os.findfiles */ +typedef FindFilesOpts = { + ?files:Bool, + ?dirs:Bool, + ?hidden:Bool, + ?system:Bool, + ?dirsuffix:Bool +} + +extern class FindFilesResult { + function next():Null>; + function files():NativeIterator>; + function close():Void; +} + + /** https://chrisant996.github.io/clink/clink.html#os.globdirs * https://chrisant996.github.io/clink/clink.html#os.globfiles */ typedef GlobFilterOpts = { @@ -241,7 +356,7 @@ typedef GlobFilterOpts = { /** https://chrisant996.github.io/clink/clink.html#os.globdirs * https://chrisant996.github.io/clink/clink.html#os.globfiles */ -typedef GlobFileInfo = { +typedef FileInfo = { name:String, type:String, ?size:Int, @@ -313,6 +428,13 @@ typedef FileFlags = { specialbuild:String, } +/** https://chrisant996.github.io/clink/clink.html#rl.getpushddepth */ +@:multiReturn +extern class GetPushdDepthResult { + final depth:Int; + final isDepthKnown:Bool; +} + /** https://chrisant996.github.io/clink/clink.html#os.getscreeninfo */ typedef ScreenInfo = { bufwidth:Int, diff --git a/src/clink/api/Path.hx b/src/clink/api/Path.hx index 29ecda8..64a2297 100644 --- a/src/clink/api/Path.hx +++ b/src/clink/api/Path.hx @@ -10,6 +10,7 @@ package clink.api; * https://chrisant996.github.io/clink/clink.html#path * https://github.com/chrisant996/clink/blob/master/clink/lua/src/path_api.cpp */ +@:ClinkAPI("1.7.7") @:native("path") extern class Path { @@ -18,8 +19,8 @@ extern class Path { * >>> Path.fnMatch("[[:digit:]]*", "1") == true * >>> Path.fnMatch("[[:digit:]]*", "a") == false * ``` - * @since clink 1.4.24 */ + @:SinceClink("1.4.24") @:native("fnmatch") static function fnMatch(pattern:String, path:String, ?flag:String):Bool; @@ -28,6 +29,7 @@ extern class Path { * >>> Path.getBaseName("foo\\bar") == "bar" * ``` */ + @:SinceClink("1.1.0") @:native("getbasename") static function getBaseName(path:String):String; @@ -36,6 +38,7 @@ extern class Path { * >>> Path.getDirectory("foo\\bar") == "foo" * ``` */ + @:SinceClink("1.1.0") @:native("getdirectory") static function getDirectory(path:String):Null; @@ -45,6 +48,7 @@ extern class Path { * >>> Path.getDrive("foo\\bar") == null * ``` */ + @:SinceClink("1.1.0") @:native("getdrive") static function getDrive(path:String):Null; @@ -54,6 +58,7 @@ extern class Path { * >>> Path.getExtension("C:\\foo\\bar") == "" * ``` */ + @:SinceClink("1.1.0") @:native("getextension") static function getExtension(path:String):String; @@ -63,14 +68,17 @@ extern class Path { * >>> Path.getExtension("C:\\foo\\bar") == "" * ``` */ + @:SinceClink("1.1.0") @:native("getname") static function getName(path:String):String; /** https://chrisant996.github.io/clink/clink.html#path.isexecext */ + @:SinceClink("1.1.5") @:native("isexecext") static function isExecExt(path:String):Bool; /** https://chrisant996.github.io/clink/clink.html#path.join */ + @:SinceClink("1.1.0") static function join(first:String, second:String):String; /** https://chrisant996.github.io/clink/clink.html#path.normalise */ @@ -78,6 +86,7 @@ extern class Path { static function normalize(path:String, ?separator:String):String; /** https://chrisant996.github.io/clink/clink.html#path.toparent */ + @:SinceClink("1.2.0") @:native("toparent") static function toParent(path:String, ?separator:String):ToParentResult; } diff --git a/src/clink/api/RL.hx b/src/clink/api/RL.hx index 8ae0960..f2a0c2c 100644 --- a/src/clink/api/RL.hx +++ b/src/clink/api/RL.hx @@ -13,101 +13,135 @@ import clink.util.LuaArray; * https://chrisant996.github.io/clink/clink.html#rl * https://github.com/chrisant996/clink/blob/master/clink/lua/src/rl_api.cpp */ +@:ClinkAPI("1.7.7") @:native("rl") extern class RL { + /** https://chrisant996.github.io/clink/clink.html#rl.bracketpromptcodes */ + @:SinceClink("1.6.1") + @:native("bracketpromptcodes ") + static function bracketPromptCodes(prompt:String):String; + /** https://chrisant996.github.io/clink/clink.html#rl.collapsetilde */ + @:SinceClink("1.1.6") @:native("collapsetilde") - static function collapseTilde(path:String, ?force:Bool):String; + static function collapseTilde(path:String, force:Bool = false):String; /** https://chrisant996.github.io/clink/clink.html#rl.describemacro */ + @:SinceClink("1.3.41") @:native("describemacro") static function describeMacro(macroString:String, description:String):Void; /** https://chrisant996.github.io/clink/clink.html#rl.expandtilde */ + @:SinceClink("1.1.6") @:native("expandtilde") - static function expandTilde(path:String, ?wholeLine:Bool):ExpandTildeResult; + static function expandTilde(path:String, wholeLine:Bool = false):ExpandTildeResult; /** https://chrisant996.github.io/clink/clink.html#rl.getbinding */ + @:SinceClink("1.2.46") @:native("getbinding") static function getBinding(key:String, ?keymap:String):GetBindingResult; + /** https://chrisant996.github.io/clink/clink.html#rl.getcommandbindings */ + @:SinceClink("1.5.1") + @:native("getcommandbindings") + static function getCommandBindings(command:String, raw:Bool):Null; + /** https://chrisant996.github.io/clink/clink.html#rl.gethistorycount */ + @:SinceClink("1.3.18") @:native("gethistorycount") static function getHistoryCount():Int; /** https://chrisant996.github.io/clink/clink.html#rl.gethistoryitems */ + @:SinceClink("1.3.18") @:native("gethistoryitems") static function getHistoryItems():Int; + /** https://chrisant996.github.io/clink/clink.html#rl.getinputrcfilename */ + @:SinceClink("1.6.1") + @:native("getinputrcfilename") + static function getInputrcFilename():GetInputrcFilenameResult; + /** https://chrisant996.github.io/clink/clink.html#rl.getkeybindings */ + @:SinceClink("1.2.16") @:native("getkeybindings") - static function getKeyBindings(raw:Bool, mode:Int):LuaArray; + static function getKeyBindings(raw:Bool, mode:Int = 0):LuaArray; /** https://chrisant996.github.io/clink/clink.html#rl.getlastcommand */ + @:SinceClink("1.1.40") @:native("getlastcommand") - static function getLastCommand():String; + static function getLastCommand():GetLastCommandResult; /** https://chrisant996.github.io/clink/clink.html#rl.getmatchcolor */ + @:SinceClink("1.3.4") @:native("getmatchcolor") overload static function getMatchColor(match:String, ?type:String):String; /** https://chrisant996.github.io/clink/clink.html#rl.getmatchcolor */ + @:SinceClink("1.3.4") @:native("getmatchcolor") overload static function getMatchColor(match:Match):String; /** https://chrisant996.github.io/clink/clink.html#rl.getpromptinfo */ + @:SinceClink("1.2.28") @:native("getpromptinfo") static function getPromptInfo():PromptInfo; /** https://chrisant996.github.io/clink/clink.html#rl.getvariable */ + @:SinceClink("1.1.6") @:native("getvariable") static function getVariable(name:String):Null; /** https://chrisant996.github.io/clink/clink.html#rl.insertmode */ + @:SinceClink("1.2.50") @:native("insertmode") static function insertMode(?insert:Bool):Bool; /** https://chrisant996.github.io/clink/clink.html#rl.invokecommand */ + @:SinceClink("1.1.26") @:native("invokecommand") - static function invokeCommand(command:String, ?count:Int):Null; + static function invokeCommand(command:String, count:Int = 1):Null; /** https://chrisant996.github.io/clink/clink.html#rl.islineequal */ + @:SinceClink("1.4.14") @:native("islineequal") - static function isLineEqual(text:String, ?toCursor:Bool):Bool; + static function isLineEqual(text:String, toCursor:Bool = false):Bool; /** https://chrisant996.github.io/clink/clink.html#rl.ismodifiedline */ + @:SinceClink("1.2.51") @:native("ismodifiedline") static function isModifiedLine():Bool; /** https://chrisant996.github.io/clink/clink.html#rl.isvariabletrue */ + @:SinceClink("1.1.6") @:native("isvariabletrue") static function isVariableTrue(name:String):Null; /** https://chrisant996.github.io/clink/clink.html#rl.isvariabletrue */ + @:SinceClink("1.4.8") @:native("needquotes") static function needQuotes(text:String):Bool; /** https://chrisant996.github.io/clink/clink.html#rl.setbinding */ + @:SinceClink("1.2.46") @:native("setbinding") static function setBinding(key:String, binding:Null, ?keymap:String):Bool; /** https://chrisant996.github.io/clink/clink.html#rl.setmatches */ + @:SinceClink("1.1.40") @:native("setmatches") static function setMatches(matches:SetMatchesArray, ?type:String):Bool; /** https://chrisant996.github.io/clink/clink.html#rl.setvariable */ + @:SinceClink("1.1.46") @:native("setvariable") static function setVariable(name:String, value:String):Bool; -} -function foo() { - new LuaArray(); - var m = SetMatchesArray.fromArray([{match: "ff"}]); - m.nosort = true; - RL.setMatches(m); + /** https://chrisant996.github.io/clink/clink.html#rl.translatekey */ + @:SinceClink("1.1.46") + @:native("translatekey") + static function translateKey(input:String, form:TranslateKeyFormat):Null; } - /** https://chrisant996.github.io/clink/clink.html#rl.setmatches */ @:forward abstract SetMatchesArray(LuaArray) from LuaArray to LuaArray { @@ -133,6 +167,13 @@ abstract SetMatchesArray(LuaArray) from LuaArray to LuaArray +} + /** https://chrisant996.github.io/clink/clink.html#rl.expandtilde */ @:multiReturn extern class ExpandTildeResult { @@ -147,6 +188,20 @@ extern class GetBindingResult { final type:String; } +/** https://chrisant996.github.io/clink/clink.html#rl.getinputrcfilename */ +@:multiReturn +extern class GetInputrcFilenameResult { + var path:Null; + var filename:Null; +} + +/** https://chrisant996.github.io/clink/clink.html#rl.getlastcommand */ +@:multiReturn +extern class GetLastCommandResult { + var command:String; + var luaFunctionName:String; +} + /** https://chrisant996.github.io/clink/clink.html#rl.getkeybindings */ typedef KeyBinding = { key:String, @@ -165,3 +220,11 @@ typedef PromptInfo = { inputline:Int, inputlinecount:Int } + +/** https://chrisant996.github.io/clink/clink.html#rl.translatekey */ +enum abstract TranslateKeyFormat(Int) to Int { + final InputSeqToReadableName = 1; + final InputSeqToBindableSeq = 2; + final BindingSeqToReadableName = 3; + final BindingSeqToInputSeq = 4; +} diff --git a/src/clink/api/RLBuffer.hx b/src/clink/api/RLBuffer.hx index 105b489..683b2cd 100644 --- a/src/clink/api/RLBuffer.hx +++ b/src/clink/api/RLBuffer.hx @@ -10,57 +10,89 @@ package clink.api; * https://chrisant996.github.io/clink/clink.html#rl_buffer * https://github.com/chrisant996/clink/blob/master/clink/lua/src/rl_buffer_lua.cpp */ +@:ClinkAPI("1.7.7") extern class RLBuffer { /** https://chrisant996.github.io/clink/clink.html#rl_buffer:beginoutput */ + @:SinceClink("1.1.20") @:native("beginoutput") function beginOutput():Void; - /** https://chrisant996.github.io/clink/clink.html#rl_buffer:beginundogroup */ + /** https://chrisant996.github.io/clink/clink.html#rl_buffer:beginundogroup */ + @:SinceClink("1.1.20") @:native("beginundogroup") function beginUndoGroup():Void; /** https://chrisant996.github.io/clink/clink.html#rl_buffer:ding */ + @:SinceClink("1.1.20") function ding():Void; /** https://chrisant996.github.io/clink/clink.html#rl_buffer:endundogroup */ + @:SinceClink("1.1.20") @:native("endundogroup") function endUndoGroup():Void; /** https://chrisant996.github.io/clink/clink.html#rl_buffer:getanchor */ + @:SinceClink("1.2.35") @:native("getanchor") function getAnchor():Null; /** https://chrisant996.github.io/clink/clink.html#rl_buffer:getargument */ + @:SinceClink("1.2.22") @:native("getargument") function getArgument():Null; /** https://chrisant996.github.io/clink/clink.html#rl_buffer:getbuffer */ + @:SinceClink("1.0.0") @:native("getbuffer") function getBuffer():String; /** https://chrisant996.github.io/clink/clink.html#rl_buffer:getcursor */ + @:SinceClink("1.1.20") @:native("getcursor") function getCursor():Int; /** https://chrisant996.github.io/clink/clink.html#rl_buffer:getlength */ + @:SinceClink("1.1.20") @:native("getlength") function getLength():Int; /** https://chrisant996.github.io/clink/clink.html#rl_buffer:insert */ + @:SinceClink("1.1.20") function insert(txt:String):Void; + /** https://chrisant996.github.io/clink/clink.html#rl_buffer:insertsuggestion */ + @:SinceClink("1.6.4") + @:native("insertsuggestion") + function insertSuggestion(amount:Amount = Amount.ALL):Void; + /** https://chrisant996.github.io/clink/clink.html#rl_buffer:refreshline */ + @:SinceClink("1.4.41") @:native("refreshline") function refreshLine():Void; /** https://chrisant996.github.io/clink/clink.html#rl_buffer:remove */ + @:SinceClink("1.1.20") function remove(from:Int, to:Int):Void; /** https://chrisant996.github.io/clink/clink.html#rl_buffer:setargument */ + @:SinceClink("1.2.32") @:native("setargument") function setArgument(argument:Null):Void; + /** https://chrisant996.github.io/clink/clink.html#rl_buffer:setcommentrow */ + @:SinceClink("1.7.5") + @:native("setcommentrow") + function setCommentRow():Void; + /** https://chrisant996.github.io/clink/clink.html#rl_buffer:setcursor */ + @:SinceClink("1.1.20") @:native("setcursor") function setCursor(cursor:Int):Void; } + +/** https://chrisant996.github.io/clink/clink.html#rl_buffer:insertsuggestion */ +enum abstract Amount(String) to String { + final ALL = "all"; + final WORD = "word"; + final FULLWORD = "fullword"; +} \ No newline at end of file diff --git a/src/clink/api/Settings.hx b/src/clink/api/Settings.hx index 29dcd20..a346872 100644 --- a/src/clink/api/Settings.hx +++ b/src/clink/api/Settings.hx @@ -6,31 +6,49 @@ */ package clink.api; +import clink.internal.EitherType3; import clink.util.LuaArray; /** * https://chrisant996.github.io/clink/clink.html#settings * https://github.com/chrisant996/clink/blob/master/clink/lua/src/settings_api.cpp */ +@:ClinkAPI("1.7.7") @:native("settings") extern class Settings { /** https://chrisant996.github.io/clink/clink.html#settings.add - * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/src/settings_api.cpp#L178 */ - static function add(name:String, defaultValue:Bool_Int_String, ?shortDescr:String, ?longDescr:String):Bool; + * https://github.com/chrisant996/clink/blob/521fa70ed480621d3004e6dfca35aa0f4a56c5d0/clink/lua/src/settings_api.cpp#L383 */ + @:SinceClink("1.0.0") + static function add(name:String, defaultValue:EitherType3, ?shortDescr:String, ?longDescr:String):Bool; /** https://chrisant996.github.io/clink/clink.html#settings.add - * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/src/settings_api.cpp#L178 */ + * https://github.com/chrisant996/clink/blob/521fa70ed480621d3004e6dfca35aa0f4a56c5d0/clink/lua/src/settings_api.cpp#L383 */ + @:SinceClink("1.0.0") @:native("add") static function addEnum(name:String, enumValues:LuaArray, ?shortDescr:String, ?longDescr:String):Bool; + /** https://chrisant996.github.io/clink/clink.html#settings.clear + * https://github.com/chrisant996/clink/blob/521fa70ed480621d3004e6dfca35aa0f4a56c5d0/clink/lua/src/settings_api.cpp#L172 */ + @:SinceClink("1.7.0") + static function clear(name:String):Void; + + /** https://chrisant996.github.io/clink/clink.html#settings.formatcolor + * https://github.com/chrisant996/clink/blob/521fa70ed480621d3004e6dfca35aa0f4a56c5d0/clink/lua/src/settings_api.cpp#L507 */ + @:SinceClink("1.7.0") + static function formatcolor(code:String, compat:Bool = false):Null; + /** https://chrisant996.github.io/clink/clink.html#settings.get - * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/src/settings_api.cpp#L24 */ - extern static function get(name:String, ?descriptive:Bool):Null; // Bool|Integer|String + * https://github.com/chrisant996/clink/blob/521fa70ed480621d3004e6dfca35aa0f4a56c5d0/clink/lua/src/settings_api.cpp#L23 */ + @:SinceClink("1.0.0") + static function get(name:String, descriptive:Bool = false):EitherType3; - /** https://chrisant996.github.io/clink/clink.html#settings.set - * https://github.com/chrisant996/clink/blob/236abadf5f9569bc93c8b92f0912709154a527aa/clink/lua/src/settings_api.cpp#L87 */ - extern static function set(name:String, value:Bool_Int_String):Bool; -} + /** https://chrisant996.github.io/clink/clink.html#settings.formatcolor + * https://github.com/chrisant996/clink/blob/521fa70ed480621d3004e6dfca35aa0f4a56c5d0/clink/lua/src/settings_api.cpp#L477 */ + @:SinceClink("1.7.0") + static function parsecolor(code:String):Null; -abstract Bool_Int_String(Dynamic) from Bool from Int from String to Bool to Int to String { + /** https://chrisant996.github.io/clink/clink.html#settings.set + * https://github.com/chrisant996/clink/blob/521fa70ed480621d3004e6dfca35aa0f4a56c5d0/clink/lua/src/settings_api.cpp#L100 */ + @:SinceClink("1.0.0") + static function set(name:String, value:EitherType3):Bool; } diff --git a/src/clink/api/Unicode.hx b/src/clink/api/Unicode.hx index dc318e1..137a181 100644 --- a/src/clink/api/Unicode.hx +++ b/src/clink/api/Unicode.hx @@ -12,24 +12,30 @@ import lua.NativeIterator; * https://chrisant996.github.io/clink/clink.html#unicode * https://github.com/chrisant996/clink/blob/master/clink/lua/src/unicode_api.cpp */ +@:ClinkAPI("1.7.7") @:native("unicode") extern class Unicode { /** https://chrisant996.github.io/clink/clink.html#unicode.fromcodepage */ + @:SinceClink("1.3.27") @:native("fromcodepage") static function fromCodePage(text:String, ?codepage:Int):Null; /** https://chrisant996.github.io/clink/clink.html#unicode.isnormalized */ + @:SinceClink("1.3.26") @:native("isnormalized") static function isNormalized(form:NormalizationForm, text:String):IsNormalizedResult; /** https://chrisant996.github.io/clink/clink.html#unicode.iter */ + @:SinceClink("1.3.26") @:native("iter") static function iterator(text:String):NativeIterator; /** https://chrisant996.github.io/clink/clink.html#unicode.normalize */ + @:SinceClink("1.3.26") static function normalize(form:NormalizationForm, text:String):NormalizeResult; /** https://chrisant996.github.io/clink/clink.html#unicode.tocodepage */ + @:SinceClink("1.3.27") @:native("tocodepage") static function toCodePage(text:String, ?codepage:Int):Null; } diff --git a/test/clink/TestRunner.hx b/test/clink/TestRunner.hx index 41a2158..e165a95 100644 --- a/test/clink/TestRunner.hx +++ b/test/clink/TestRunner.hx @@ -45,6 +45,16 @@ class TestRunner extends DocTestRunner { assertNotNull(Clink.versionPatch); } + function testConsole() { + final colorTable = Console.getColorTable(); + if (Sys.getEnv("CI") == "true" && colorTable == null) { + return; + } + assertNotNull(colorTable.get(1)); + assertNotNull(colorTable.get(colorTable.background)); + assertNotNull(colorTable.get(colorTable.foreground)); + } + function testOS() { final orig = OS.getClipboardText(); OS.setClipboardText("clink-test"); @@ -60,11 +70,38 @@ class TestRunner extends DocTestRunner { assertEquals(OS.getCWD(), Sys.getCwd()); } + function testOS_findFiles() { + final findResult = OS.findFiles("*", 1); + final files1 = new Map(); + var file:Dynamic; + while ((file = findResult.next()) != null) { + final fileInfo:OS.FileInfo = cast file; + files1.set(fileInfo.name, fileInfo); + } + findResult.close(); + assertTrue(files1.exists("README.md")); + + final files2 = new Map(); + final findResult = OS.findFiles("*", 1); + for (file in findResult.files().toIterator()) { + final fileInfo:OS.FileInfo = cast file; + files2.set(fileInfo.name, fileInfo); + } + findResult.close(); + assertTrue(files2.exists("README.md")); + assertEquals(files1, files2); + } + function testSettings() { + assertEquals(Settings.formatcolor("0;1"), "bold"); + assertEquals(Settings.formatcolor("1"), "sgr 1"); + assertEquals(Settings.parsecolor("bold"), "0;1"); + assertEquals(Settings.parsecolor("underline green"), "0;4;32"); + assertNull(Settings.get("enum")); assertTrue(Settings.addEnum("enum", ["a", "b"])); assertEquals(Settings.get("enum"), "a"); - assertTrue(Settings.set("enum", "b")); + Settings.set("enum", "b"); assertEquals(Settings.get("enum"), "b"); assertFalse(Settings.set("enum", "c")); assertEquals(Settings.get("enum"), "b"); @@ -72,18 +109,22 @@ class TestRunner extends DocTestRunner { assertNull(Settings.get("bool")); assertTrue(Settings.add("bool", true)); assertEquals(Settings.get("bool"), true); - assertTrue(Settings.set("bool", false)); + Settings.set("bool", false); assertEquals(Settings.get("bool"), false); assertFalse(Settings.set("bool", "foo")); assertEquals(Settings.get("bool"), false); + Settings.clear("bool"); + assertEquals(Settings.get("bool"), true); assertNull(Settings.get("int")); assertTrue(Settings.add("int", 1)); assertEquals(Settings.get("int"), 1); - assertTrue(Settings.set("int", 2)); + Settings.set("int", 2); assertEquals(Settings.get("int"), 2); assertFalse(Settings.set("int", "foo")); assertEquals(Settings.get("int"), 2); + Settings.clear("int"); + assertEquals(Settings.get("int"), 1); } function testLuaArray() {