diff --git a/packages/info/claude.art b/packages/info/claude.art index 7bb17a9..001ccc9 100644 --- a/packages/info/claude.art +++ b/packages/info/claude.art @@ -14,8 +14,8 @@ tags: [ "claude-api" ] stats: #[ - stars: 2 - watch: 2 + stars: 4 + watch: 4 ] author: #[ name: "drkameleon" diff --git a/packages/info/fianchetto.art b/packages/info/fianchetto.art new file mode 100644 index 0000000..a35d863 --- /dev/null +++ b/packages/info/fianchetto.art @@ -0,0 +1,26 @@ + +name: "fianchetto.art" +fullName: "drkameleon/fianchetto.art" +url: "https://github.com/drkameleon/fianchetto.art" +description: "Chess-aware custom types, FEN/PGN parsing & more" +tags: [ + "arturo" + "arturo-language" + "arturo-package" + "chess" + "chess-programming" + "fen" + "fen-parsing" + "pgn" + "pgn-parser" + ] +stats: #[ + stars: 1 + watch: 1 + ] +author: #[ + name: "drkameleon" + url: "https://github.com/drkameleon" + avatar: "https://avatars.githubusercontent.com/u/1265028?v=4" + ] + diff --git a/packages/info/grace.art b/packages/info/grace.art index fc61217..e000640 100644 --- a/packages/info/grace.art +++ b/packages/info/grace.art @@ -12,8 +12,8 @@ tags: [ "syntax-highlighting" ] stats: #[ - stars: 7 - watch: 7 + stars: 9 + watch: 9 ] author: #[ name: "drkameleon" diff --git a/packages/info/grafito.art b/packages/info/grafito.art index 41fd076..e2fa117 100644 --- a/packages/info/grafito.art +++ b/packages/info/grafito.art @@ -19,8 +19,8 @@ tags: [ "sqlite3" ] stats: #[ - stars: 151 - watch: 151 + stars: 153 + watch: 153 ] author: #[ name: "arturo-lang" diff --git a/packages/info/tabular.art b/packages/info/tabular.art index 047e6a5..12ccecd 100644 --- a/packages/info/tabular.art +++ b/packages/info/tabular.art @@ -14,8 +14,8 @@ tags: [ "terminal" ] stats: #[ - stars: 1 - watch: 1 + stars: 5 + watch: 5 ] author: #[ name: "drkameleon" diff --git a/packages/info/validator.art b/packages/info/validator.art index fdfb551..b750ae1 100644 --- a/packages/info/validator.art +++ b/packages/info/validator.art @@ -13,8 +13,8 @@ tags: [ "validator" ] stats: #[ - stars: 7 - watch: 7 + stars: 8 + watch: 8 ] author: #[ name: "drkameleon" diff --git a/packages/version/fianchetto.art b/packages/version/fianchetto.art new file mode 100644 index 0000000..87823a9 --- /dev/null +++ b/packages/version/fianchetto.art @@ -0,0 +1,263 @@ +[ + #[ + version: 0.0.1 + date: to :date "2024-11-28T15:25:05+00:00" + link: "https://github.com/drkameleon/fianchetto.art/releases/tag/v0.0.1" + details: #[ + size: 47311 + files: 16 + readme: { + +

+

+ Chess-aware components / custom types,
and more...
+

+ + + + + + +

+ + + + --- + + + + * [What does this package do?](#what-does-this-package-do) + * [How do I use it?](#how-do-i-use-it) + * [Type Reference](#type-reference) + * [chessCoords](#chesscoords) + * [chessPiece](#chesspiece) + * [chessMove](#chessmove) + * [chessBoard](#chessboard) + * [chessPosition](#chessposition) + * [chessGame](#chessgame) + * [License](#license) + + + + --- + + ### What does this package do? + + This package includes different useful types for chess programming & analysis: pieces, boards, moves, positions, games. It also comes with FEN & PGN parsing/output capabilities and can - potentially - serve as the foundation of other chess-related apps & packages. + + ### How do I use it? + + Simply `import` it and use any of the provided helper functions or types: + + ```red + import .withHelpers "fianchetto"! + + ; Let's create a new chess game! + game: newGame ø! + + ; What about showing the FEN string? + print ["Initial FEN:" game\position] + + ; Make moves using coordinates + game\makeMove "e2e4" + game\makeMove "e7e5" + game\makeMove "g1f3" + + ; and... let's print board! + print "Final position:" + print game\position\board + ``` + + Will produce: + + ``` + Initial FEN: rnbkqbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBKQBNR w KQkq - 0 1 + Final position: + +---+---+---+---+---+---+---+---+ + | r | n | b | q | k | b | n | r | + | p | p | p | p | - | p | p | p | + | - | - | - | - | - | - | - | - | + | - | - | - | - | p | - | - | - | + | - | - | - | - | P | - | - | - | + | - | - | - | - | - | N | - | - | + | P | P | P | P | - | P | P | P | + | R | N | B | Q | K | B | - | R | + +---+---+---+---+---+---+---+---+ + ``` + + ### Type reference + + #### chessCoords + + Mainly used to hold square coordinates, or a file-rank pair. + + ##### constructor + +
+                                to :chessCoords [coords :string :block :integer]
+                                
+ + ##### fields + + - `\file` + - `\rank` + + ##### methods + + - `\index` + + #### chessPiece + + The main chess piece representation + + ##### constructor + +
+                                to :chessPiece [ch :char :literal :string]
+                                
+ + ##### fields + + - `\color` + - `\kind` + + ##### methods + + - `\white?` + - `\getMovePattern [fromSq :chessCoords, toSq :chessCoords]` + + #### chessMove + + A move type, encapsulating an origin and a target square. + + ##### constructor + +
+                                to :chessMove [coordset :string :block]
+                                
+ + ##### fields + + - `\fromSq` + - `\toSq` + + #### chessBoard + + The main chess board + + ##### constructor + +
+                                to :chessBoard []
+                                
+ + ##### fields + + - `\squares` + + ##### methods + + - `\getPiece [coords :chessCoords]` + - `\setPiece [coords :chessCoords piece :null :chessPiece]` + + #### chessPosition + + A given chess position + + ##### constructor + +
+                                to :chessPosition [source :string :null]
+                                
+ + ##### fields + + - `\board` + - `\activeColor` + - `\castling` + - `\enPassant` + - `\halfmove` + - `\fullmove` + + ##### methods + + - `\validateMove [newMove :chessMove]` + - `\applyMove [newMove :chessMove]` + + > [!TIP] + > You can initialize a `:chessPosition` by directly using a FEN string; or exporting a given position back to FEN, using `to :string`. 😉 + + #### chessGame + + The main chess game container + + ##### constructor + +
+                                to :chessGame [source :string :null]
+                                
+ + ##### fields + + - `\position` + - `\moves` + - `\result` + - `\metadata` + + ##### methods + + - `\makeMove: [coords :chessMove :string]` + + > [!WARNING] + > Although the future goal of the `:chessGame` constructor is to fully support any type of PGN file input, right now support should be considered extremely limited! + +
+ + ### License + + MIT License + + Copyright (c) 2024 Yanis Zafirópulos + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + + } + license: #[ + name: "MIT" + url: "https://choosealicense.com/licenses/mit/" + ] + ] + url: "https://api.github.com/repos/drkameleon/fianchetto.art/zipball/v0.0.1" + info: #[ + entry: "src/fianchetto.art" + depends: [ + [ + tabular + >= + 0.0.1 + ] + ] + requires: [ + > + 0.9.83 + ] + executable: false + ] + ] +] diff --git a/public/_packages/artsembly/0.3.0/index.html b/public/_packages/artsembly/0.3.0/index.html index 674463a..743a2b7 100644 --- a/public/_packages/artsembly/0.3.0/index.html +++ b/public/_packages/artsembly/0.3.0/index.html @@ -1,4 +1,4 @@ -Artsembly • Arturo Packager
  

artsembly

Arturo VM Bytecode assembler

assembler bytecode bytecode compiler vm

ArtSembly

Arturo VM Bytecode assembler for Arturo


What does this package do?

This package features a bytecode "assembler" for the Arturo programming language. In a few words, it allows to write bytecode for the Arturo VM directly, only in a friendly, Assembly-style fashion.

Warning
This package is to be considered mostly an - adventurous - experiment, highlighting what is possible and is not meant to be neither a replacement of Arturo nor a 100% functional bytecode assembler that aims to cover everything!

How do I use it?

All you have to do is import it and then pass a block (or text) of valid ArtSembly code. The returned value is always a Bytecode object, which means that you can either run it directly (via do) or manipulate it further, if you wish.

Example

import "artsembly"!
+Artsembly • Arturo Packager
  

artsembly

Arturo VM Bytecode assembler

assembler bytecode bytecode compiler vm

ArtSembly

Arturo VM Bytecode assembler for Arturo


What does this package do?

This package features a bytecode "assembler" for the Arturo programming language. In a few words, it allows to write bytecode for the Arturo VM directly, only in a friendly, Assembly-style fashion.

Warning

This package is to be considered mostly an - adventurous - experiment, highlighting what is possible and is not meant to be neither a replacement of Arturo nor a 100% functional bytecode assembler that aims to cover everything!

How do I use it?

All you have to do is import it and then pass a block (or text) of valid ArtSembly code. The returned value is always a Bytecode object, which means that you can either run it directly (via do) or manipulate it further, if you wish.

Example

import "artsembly"!
 
 do assemble {
     push 0                 ; x: 0
@@ -31,7 +31,7 @@
 3
 4
 finished!
-

Available commands

NameArgumentsDescription
push:anypush a value onto the stack
store:literal, :stringstore topmost stack item to given symbol
load:literal, :stringpush given symbol value to stack
call:literal, :stringcall given function by name
goto:literal, :stringgo to given label
jmpIf:literal, :stringjump forward to given label if topmost stack value is true
jmpIfNot:literal, :stringjump forward to given label if topmost stack value is not true

Tip
As highlighted in the example above, all commands listed here are to be used solely within an assemble call.


License

MIT License

Copyright (c) 2024 Yanis Zafirópulos

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

  -
  
  5
Version
0.3.0Latest
License
MIT

Executable?
No
Requires
Arturo > 0.9.83
  

artsembly

Arturo VM Bytecode assembler

assembler bytecode bytecode compiler vm

ArtSembly

Arturo VM Bytecode assembler for Arturo


What does this package do?

This package features a bytecode "assembler" for the Arturo programming language. In a few words, it allows to write bytecode for the Arturo VM directly, only in a friendly, Assembly-style fashion.

Warning
This package is to be considered mostly an - adventurous - experiment, highlighting what is possible and is not meant to be neither a replacement of Arturo nor a 100% functional bytecode assembler that aims to cover everything!

How do I use it?

All you have to do is import it and then pass a block (or text) of valid ArtSembly code. The returned value is always a Bytecode object, which means that you can either run it directly (via do) or manipulate it further, if you wish.

Example

import "artsembly"!
+Artsembly • Arturo Packager
  

artsembly

Arturo VM Bytecode assembler

assembler bytecode bytecode compiler vm

ArtSembly

Arturo VM Bytecode assembler for Arturo


What does this package do?

This package features a bytecode "assembler" for the Arturo programming language. In a few words, it allows to write bytecode for the Arturo VM directly, only in a friendly, Assembly-style fashion.

Warning

This package is to be considered mostly an - adventurous - experiment, highlighting what is possible and is not meant to be neither a replacement of Arturo nor a 100% functional bytecode assembler that aims to cover everything!

How do I use it?

All you have to do is import it and then pass a block (or text) of valid ArtSembly code. The returned value is always a Bytecode object, which means that you can either run it directly (via do) or manipulate it further, if you wish.

Example

import "artsembly"!
 
 do assemble {
     push 0                 ; x: 0
@@ -31,7 +31,7 @@
 3
 4
 finished!
-

Available commands

NameArgumentsDescription
push:anypush a value onto the stack
store:literal, :stringstore topmost stack item to given symbol
load:literal, :stringpush given symbol value to stack
call:literal, :stringcall given function by name
goto:literal, :stringgo to given label
jmpIf:literal, :stringjump forward to given label if topmost stack value is true
jmpIfNot:literal, :stringjump forward to given label if topmost stack value is not true

Tip
As highlighted in the example above, all commands listed here are to be used solely within an assemble call.


License

MIT License

Copyright (c) 2024 Yanis Zafirópulos

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

  -
  
  5
Version
0.3.0Latest
License
MIT

Executable?
No
Requires
Arturo > 0.9.83
  

fianchetto

Chess-aware custom types, FEN/PGN parsing & more

chess chess programming fen fen parsing pgn pgn parser

Chess-aware components / custom types,
and more...




What does this package do?

This package includes different useful types for chess programming & analysis: pieces, boards, moves, positions, games. It also comes with FEN & PGN parsing/output capabilities and can - potentially - serve as the foundation of other chess-related apps & packages.

How do I use it?

Simply import it and use any of the provided helper functions or types:

import .withHelpers "fianchetto"!
+
+; Let's create a new chess game!
+game: newGame ø!
+
+; What about showing the FEN string?
+print ["Initial FEN:" game\position]
+
+; Make moves using coordinates
+game\makeMove "e2e4"
+game\makeMove "e7e5"
+game\makeMove "g1f3"
+
+; and... let's print board!
+print "Final position:"
+print game\position\board
+

Will produce:

Initial FEN: rnbkqbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBKQBNR w KQkq - 0 1 
+Final position:
++---+---+---+---+---+---+---+---+
+| r | n | b | q | k | b | n | r |
+| p | p | p | p | - | p | p | p |
+| - | - | - | - | - | - | - | - |
+| - | - | - | - | p | - | - | - |
+| - | - | - | - | P | - | - | - |
+| - | - | - | - | - | N | - | - |
+| P | P | P | P | - | P | P | P |
+| R | N | B | Q | K | B | - | R |
++---+---+---+---+---+---+---+---+
+

Type reference

chessCoords

Mainly used to hold square coordinates, or a file-rank pair.

constructor
+to :chessCoords [coords :string :block :integer]
+
fields
  • \file
  • \rank
methods
  • \index

chessPiece

The main chess piece representation

constructor
+to :chessPiece [ch :char :literal :string]
+
fields
  • \color
  • \kind
methods
  • \white?
  • \getMovePattern [fromSq :chessCoords, toSq :chessCoords]

chessMove

A move type, encapsulating an origin and a target square.

constructor
+to :chessMove [coordset :string :block]
+
fields
  • \fromSq
  • \toSq

chessBoard

The main chess board

constructor
+to :chessBoard []
+
fields
  • \squares
methods
  • \getPiece [coords :chessCoords]
  • \setPiece [coords :chessCoords piece :null :chessPiece]

chessPosition

A given chess position

constructor
+to :chessPosition [source :string :null]
+
fields
  • \board
  • \activeColor
  • \castling
  • \enPassant
  • \halfmove
  • \fullmove
methods
  • \validateMove [newMove :chessMove]
  • \applyMove [newMove :chessMove]

Tip

You can initialize a :chessPosition by directly using a FEN string; or exporting a given position back to FEN, using to :string. 😉

chessGame

The main chess game container

constructor
+to :chessGame [source :string :null]
+
fields
  • \position
  • \moves
  • \result
  • \metadata
methods
  • \makeMove: [coords :chessMove :string]

Warning

Although the future goal of the :chessGame constructor is to fully support any type of PGN file input, right now support should be considered extremely limited!


License

MIT License

Copyright (c) 2024 Yanis Zafirópulos

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

  -
  
  1
Version
0.0.1Latest
License
MIT

Executable?
No
Requires
Arturo > 0.9.83

          

Arturo Programming Language
Copyright © 2019-2024 Yanis Zafirópulos

Website built and generated using Arturo + Webize. Running on DigitalOcean.
Source code licensed under MIT. Website content licensed under CC BY NC SA 4.0.

\ No newline at end of file diff --git a/public/_packages/fianchetto/0.0.1/spec b/public/_packages/fianchetto/0.0.1/spec new file mode 100644 index 0000000..30c851f --- /dev/null +++ b/public/_packages/fianchetto/0.0.1/spec @@ -0,0 +1,19 @@ +name: "fianchetto" +description: "Chess-aware custom types, FEN/PGN parsing & more" +license: "MIT" +author: "drkameleon" +version: 0.0.1 +url: "https://api.github.com/repos/drkameleon/fianchetto.art/zipball/v0.0.1" +entry: "src/fianchetto.art" +executable: false +depends: [ + [ + tabular + >= + 0.0.1 + ] + ] +requires: [ + > + 0.9.83 + ] \ No newline at end of file diff --git a/public/_packages/fianchetto/index.html b/public/_packages/fianchetto/index.html new file mode 100644 index 0000000..073d8a6 --- /dev/null +++ b/public/_packages/fianchetto/index.html @@ -0,0 +1,113 @@ +Fianchetto • Arturo Packager
  

fianchetto

Chess-aware custom types, FEN/PGN parsing & more

chess chess programming fen fen parsing pgn pgn parser

Chess-aware components / custom types,
and more...




What does this package do?

This package includes different useful types for chess programming & analysis: pieces, boards, moves, positions, games. It also comes with FEN & PGN parsing/output capabilities and can - potentially - serve as the foundation of other chess-related apps & packages.

How do I use it?

Simply import it and use any of the provided helper functions or types:

import .withHelpers "fianchetto"!
+
+; Let's create a new chess game!
+game: newGame ø!
+
+; What about showing the FEN string?
+print ["Initial FEN:" game\position]
+
+; Make moves using coordinates
+game\makeMove "e2e4"
+game\makeMove "e7e5"
+game\makeMove "g1f3"
+
+; and... let's print board!
+print "Final position:"
+print game\position\board
+

Will produce:

Initial FEN: rnbkqbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBKQBNR w KQkq - 0 1 
+Final position:
++---+---+---+---+---+---+---+---+
+| r | n | b | q | k | b | n | r |
+| p | p | p | p | - | p | p | p |
+| - | - | - | - | - | - | - | - |
+| - | - | - | - | p | - | - | - |
+| - | - | - | - | P | - | - | - |
+| - | - | - | - | - | N | - | - |
+| P | P | P | P | - | P | P | P |
+| R | N | B | Q | K | B | - | R |
++---+---+---+---+---+---+---+---+
+

Type reference

chessCoords

Mainly used to hold square coordinates, or a file-rank pair.

constructor
+to :chessCoords [coords :string :block :integer]
+
fields
  • \file
  • \rank
methods
  • \index

chessPiece

The main chess piece representation

constructor
+to :chessPiece [ch :char :literal :string]
+
fields
  • \color
  • \kind
methods
  • \white?
  • \getMovePattern [fromSq :chessCoords, toSq :chessCoords]

chessMove

A move type, encapsulating an origin and a target square.

constructor
+to :chessMove [coordset :string :block]
+
fields
  • \fromSq
  • \toSq

chessBoard

The main chess board

constructor
+to :chessBoard []
+
fields
  • \squares
methods
  • \getPiece [coords :chessCoords]
  • \setPiece [coords :chessCoords piece :null :chessPiece]

chessPosition

A given chess position

constructor
+to :chessPosition [source :string :null]
+
fields
  • \board
  • \activeColor
  • \castling
  • \enPassant
  • \halfmove
  • \fullmove
methods
  • \validateMove [newMove :chessMove]
  • \applyMove [newMove :chessMove]

Tip

You can initialize a :chessPosition by directly using a FEN string; or exporting a given position back to FEN, using to :string. 😉

chessGame

The main chess game container

constructor
+to :chessGame [source :string :null]
+
fields
  • \position
  • \moves
  • \result
  • \metadata
methods
  • \makeMove: [coords :chessMove :string]

Warning

Although the future goal of the :chessGame constructor is to fully support any type of PGN file input, right now support should be considered extremely limited!


License

MIT License

Copyright (c) 2024 Yanis Zafirópulos

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

  -
  
  1
Version
0.0.1Latest
License
MIT

Executable?
No
Requires
Arturo > 0.9.83

          

Arturo Programming Language
Copyright © 2019-2024 Yanis Zafirópulos

Website built and generated using Arturo + Webize. Running on DigitalOcean.
Source code licensed under MIT. Website content licensed under CC BY NC SA 4.0.

\ No newline at end of file diff --git a/public/_packages/fianchetto/spec b/public/_packages/fianchetto/spec new file mode 100644 index 0000000..30c851f --- /dev/null +++ b/public/_packages/fianchetto/spec @@ -0,0 +1,19 @@ +name: "fianchetto" +description: "Chess-aware custom types, FEN/PGN parsing & more" +license: "MIT" +author: "drkameleon" +version: 0.0.1 +url: "https://api.github.com/repos/drkameleon/fianchetto.art/zipball/v0.0.1" +entry: "src/fianchetto.art" +executable: false +depends: [ + [ + tabular + >= + 0.0.1 + ] + ] +requires: [ + > + 0.9.83 + ] \ No newline at end of file diff --git a/public/_packages/grace/0.0.1/index.html b/public/_packages/grace/0.0.1/index.html index 470c622..1a67115 100644 --- a/public/_packages/grace/0.0.1/index.html +++ b/public/_packages/grace/0.0.1/index.html @@ -1,7 +1,7 @@ Grace • Arturo Packager
  

grace

A minimalistic code editor, inspired by Monaco/VSCode, based on Ace & written in Arturo

code code editor editor syntax highlighting

Minimalistic & Lightweight
code editor written in Arturo




What does this package do?

This package include a simple code editor, that should by no means be considered anything other than a very draft example of what we could do with Arturo's UI. :-)

How do I use it?

Simply import it and use the included grace function:

import "grace"!
 
 grace
-

License

MIT License

Copyright (c) 2024 Yanis Zafirópulos

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

  -
  
  7
Version
0.0.1Latest
License
MIT

Executable?
Yes
Requires
Arturo > 0.9.83
  

grace

A minimalistic code editor, inspired by Monaco/VSCode, based on Ace & written in Arturo

code code editor editor syntax highlighting

Minimalistic & Lightweight
code editor written in Arturo




What does this package do?

This package include a simple code editor, that should by no means be considered anything other than a very draft example of what we could do with Arturo's UI. :-)

How do I use it?

Simply import it and use the included grace function:

import "grace"!
 
 grace
-

License

MIT License

Copyright (c) 2024 Yanis Zafirópulos

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

  -
  
  7
Version
0.0.1Latest
License
MIT

Executable?
Yes
Requires
Arturo > 0.9.83
  

MIME content type registry & recognition

file http mimetype web server

Mimetypes

MIME content type registry & recognition package for Arturo



What does this package do?

This package provides an ample (2000+) entry database of MIME content typse and their corresponding extensions and allows to easily look up the suitable extensions by file extension (or file path). It also supports the reverse operation: look up possible mime types, based on a given extension.

Tip
For the data, the package has been based on the very useful list compiled by the mime-db project.

How do I use it?

Simply import it and use the included mimetype function:

import "mimetypes"!
+Mimetypes • Arturo Packager
  

MIME content type registry & recognition

file http mimetype web server

Mimetypes

MIME content type registry & recognition package for Arturo



What does this package do?

This package provides an ample (2000+) entry database of MIME content typse and their corresponding extensions and allows to easily look up the suitable extensions by file extension (or file path). It also supports the reverse operation: look up possible mime types, based on a given extension.

Tip

For the data, the package has been based on the very useful list compiled by the mime-db project.

How do I use it?

Simply import it and use the included mimetype function:

import "mimetypes"!
 
 mimetype "jpg"              ; => ["image/jpeg"]
 mimetype "somefile.jpg"     ; => ["image/jpeg"]
@@ -6,9 +6,9 @@
 
 mimetype.extensions "image/jpeg"
 ; => ["jpe","jpeg","jpg"]
-

Important
In case no suitable MIME type has been found for a given extension/path, or if the given MIME type isn't associated with any known extensions, then mimetype will return an empty block!

Function reference

mimetype

Description

get mimetype(s) from given extension/filepath

Usage
+

Important

In case no suitable MIME type has been found for a given extension/path, or if the given MIME type isn't associated with any known extensions, then mimetype will return an empty block!

Function reference

mimetype

Description

get mimetype(s) from given extension/filepath

Usage
 mimetype location :string
-
Attributes
OptionType(s)Description
extensionsget possible file extensions for given mimetype instead
Returns
  • :block

License

MIT License

Copyright (c) 2024 Yanis Zafirópulos

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

  -
  
  4
Version
License
MIT

Executable?
No
Requires
Arturo > 0.9.83
  

MIME content type registry & recognition

file http mimetype web server

Mimetypes

MIME content type registry & recognition package for Arturo



What does this package do?

This package provides an ample (2000+) entry database of MIME content typse and their corresponding extensions and allows to easily look up the suitable extensions by file extension (or file path). It also supports the reverse operation: look up possible mime types, based on a given extension.

Tip
For the data, the package has been based on the very useful list compiled by the mime-db project.

How do I use it?

Simply import it and use the included mimetype function:

import "mimetypes"!
+Mimetypes • Arturo Packager
  

MIME content type registry & recognition

file http mimetype web server

Mimetypes

MIME content type registry & recognition package for Arturo



What does this package do?

This package provides an ample (2000+) entry database of MIME content typse and their corresponding extensions and allows to easily look up the suitable extensions by file extension (or file path). It also supports the reverse operation: look up possible mime types, based on a given extension.

Tip

For the data, the package has been based on the very useful list compiled by the mime-db project.

How do I use it?

Simply import it and use the included mimetype function:

import "mimetypes"!
 
 mimetype "jpg"              ; => ["image/jpeg"]
 mimetype "somefile.jpg"     ; => ["image/jpeg"]
@@ -6,9 +6,9 @@
 
 mimetype.extensions "image/jpeg"
 ; => ["jpe","jpeg","jpg"]
-

Important
In case no suitable MIME type has been found for a given extension/path, or if the given MIME type isn't associated with any known extensions, then mimetype will return an empty block!

Function reference

mimetype

Description

get mimetype(s) from given extension/filepath

Usage
+

Important

In case no suitable MIME type has been found for a given extension/path, or if the given MIME type isn't associated with any known extensions, then mimetype will return an empty block!

Function reference

mimetype

Description

get mimetype(s) from given extension/filepath

Usage
 mimetype location :string
-
Attributes
OptionType(s)Description
extensionsget possible file extensions for given mimetype instead
Returns
  • :block

License

MIT License

Copyright (c) 2024 Yanis Zafirópulos

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

  -
  
  4
Version
License
MIT

Executable?
No
Requires
Arturo > 0.9.83
  

MIME content type registry & recognition

file http mimetype web server

Mimetypes

MIME content type registry & recognition package for Arturo



What does this package do?

This package provides an ample (2000+) entry database of MIME content typse and their corresponding extensions and allows to easily look up the suitable extensions by file extension (or file path). It also supports the reverse operation: look up possible mime types, based on a given extension.

Tip
For the data, the package has been based on the very useful list compiled by the mime-db project.

How do I use it?

Simply import it and use the included mimetype function:

import "mimetypes"!
+Mimetypes • Arturo Packager
  

MIME content type registry & recognition

file http mimetype web server

Mimetypes

MIME content type registry & recognition package for Arturo



What does this package do?

This package provides an ample (2000+) entry database of MIME content typse and their corresponding extensions and allows to easily look up the suitable extensions by file extension (or file path). It also supports the reverse operation: look up possible mime types, based on a given extension.

Tip

For the data, the package has been based on the very useful list compiled by the mime-db project.

How do I use it?

Simply import it and use the included mimetype function:

import "mimetypes"!
 
 mimetype "jpg"              ; => ["image/jpeg"]
 mimetype "somefile.jpg"     ; => ["image/jpeg"]
@@ -6,9 +6,9 @@
 
 mimetype.extensions "image/jpeg"
 ; => ["jpe","jpeg","jpg"]
-

Important
In case no suitable MIME type has been found for a given extension/path, or if the given MIME type isn't associated with any known extensions, then mimetype will return an empty block!

Function reference

mimetype

Description

get mimetype(s) from given extension/filepath

Usage
+

Important

In case no suitable MIME type has been found for a given extension/path, or if the given MIME type isn't associated with any known extensions, then mimetype will return an empty block!

Function reference

mimetype

Description

get mimetype(s) from given extension/filepath

Usage
 mimetype location :string
-
Attributes
OptionType(s)Description
extensionsget possible file extensions for given mimetype instead
Returns
  • :block

License

MIT License

Copyright (c) 2024 Yanis Zafirópulos

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

  -
  
  4
Version
License
MIT

Executable?
No
Requires
Arturo > 0.9.83
  

mimetypes

MIME content type registry & recognition

file http mimetype web server

Mimetypes

MIME content type registry & recognition package for Arturo



What does this package do?

This package provides an ample (2000+) entry database of MIME content typse and their corresponding extensions and allows to easily look up the suitable extensions by file extension (or file path). It also supports the reverse operation: look up possible mime types, based on a given extension.

Tip
For the data, the package has been based on the very useful list compiled by the mime-db project.

How do I use it?

Simply import it and use the included mimetype function:

import "mimetypes"!
+Mimetypes • Arturo Packager
  

mimetypes

MIME content type registry & recognition

file http mimetype web server

Mimetypes

MIME content type registry & recognition package for Arturo



What does this package do?

This package provides an ample (2000+) entry database of MIME content typse and their corresponding extensions and allows to easily look up the suitable extensions by file extension (or file path). It also supports the reverse operation: look up possible mime types, based on a given extension.

Tip

For the data, the package has been based on the very useful list compiled by the mime-db project.

How do I use it?

Simply import it and use the included mimetype function:

import "mimetypes"!
 
 mimetype "jpg"              ; => ["image/jpeg"]
 mimetype "somefile.jpg"     ; => ["image/jpeg"]
@@ -6,9 +6,9 @@
 
 mimetype.extensions "image/jpeg"
 ; => ["jpe","jpeg","jpg"]
-

Important
In case no suitable MIME type has been found for a given extension/path, or if the given MIME type isn't associated with any known extensions, then mimetype will return an empty block!

Function reference

mimetype

Description

get mimetype(s) from given extension/filepath

Usage
+

Important

In case no suitable MIME type has been found for a given extension/path, or if the given MIME type isn't associated with any known extensions, then mimetype will return an empty block!

Function reference

mimetype

Description

get mimetype(s) from given extension/filepath

Usage
 mimetype location :string
-
Attributes
OptionType(s)Description
extensionsget possible file extensions for given mimetype instead
bestget only best match for given path
Returns
  • :block

License

MIT License

Copyright (c) 2024 Yanis Zafirópulos

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

  -
  
  4
Version
0.0.4Latest
License
MIT

Executable?
No
Requires
Arturo > 0.9.83
  

mimetypes

MIME content type registry & recognition

file http mimetype web server

Mimetypes

MIME content type registry & recognition package for Arturo



What does this package do?

This package provides an ample (2000+) entry database of MIME content typse and their corresponding extensions and allows to easily look up the suitable extensions by file extension (or file path). It also supports the reverse operation: look up possible mime types, based on a given extension.

Tip
For the data, the package has been based on the very useful list compiled by the mime-db project.

How do I use it?

Simply import it and use the included mimetype function:

import "mimetypes"!
+Mimetypes • Arturo Packager
  

mimetypes

MIME content type registry & recognition

file http mimetype web server

Mimetypes

MIME content type registry & recognition package for Arturo



What does this package do?

This package provides an ample (2000+) entry database of MIME content typse and their corresponding extensions and allows to easily look up the suitable extensions by file extension (or file path). It also supports the reverse operation: look up possible mime types, based on a given extension.

Tip

For the data, the package has been based on the very useful list compiled by the mime-db project.

How do I use it?

Simply import it and use the included mimetype function:

import "mimetypes"!
 
 mimetype "jpg"              ; => ["image/jpeg"]
 mimetype "somefile.jpg"     ; => ["image/jpeg"]
@@ -6,9 +6,9 @@
 
 mimetype.extensions "image/jpeg"
 ; => ["jpe","jpeg","jpg"]
-

Important
In case no suitable MIME type has been found for a given extension/path, or if the given MIME type isn't associated with any known extensions, then mimetype will return an empty block!

Function reference

mimetype

Description

get mimetype(s) from given extension/filepath

Usage
+

Important

In case no suitable MIME type has been found for a given extension/path, or if the given MIME type isn't associated with any known extensions, then mimetype will return an empty block!

Function reference

mimetype

Description

get mimetype(s) from given extension/filepath

Usage
 mimetype location :string
-
Attributes
OptionType(s)Description
extensionsget possible file extensions for given mimetype instead
bestget only best match for given path
Returns
  • :block

License

MIT License

Copyright (c) 2024 Yanis Zafirópulos

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

  -
  
  4
Version
0.0.4Latest
License
MIT

Executable?
No
Requires
Arturo > 0.9.83
  

Lightning-fast command-line benchmarking tool & library

benchmark benchmarking utility cli terminal tool

Lightning-fast command-line
benchmarking tool & library for Arturo



What does this package do?

This is a benchmarker tool to help you measure and compare different scripts, in an ultra-customizeable way, see the results in an intuitive way and... even export them (Json & Markdown supported so far!) in case you want to keep them for further processing.

Note
Peregrino has shamelessly been inspired by a tool I personally love: Hyperfine. See it mostly as a double personal challenge: a) see how easily this could be done in Arturo, using what we already have, and... b) make something even better and more user-friendly!

How do I use it?

Peregrino comes in a hybrid package; that is: you may use it as a library (via import), or you can actually run it via the command-line, after installing it.

As a library

import {peregrino}!
+Peregrino • Arturo Packager
  

Lightning-fast command-line benchmarking tool & library

benchmark benchmarking utility cli terminal tool

Lightning-fast command-line
benchmarking tool & library for Arturo



What does this package do?

This is a benchmarker tool to help you measure and compare different scripts, in an ultra-customizeable way, see the results in an intuitive way and... even export them (Json & Markdown supported so far!) in case you want to keep them for further processing.

Note

Peregrino has shamelessly been inspired by a tool I personally love: Hyperfine. See it mostly as a double personal challenge: a) see how easily this could be done in Arturo, using what we already have, and... b) make something even better and more user-friendly!

How do I use it?

Peregrino comes in a hybrid package; that is: you may use it as a library (via import), or you can actually run it via the command-line, after installing it.

As a library

import {peregrino}!
 
 P: to :peregrino @["command one", "command two"]!
 P\benchmark ; and that's it!
@@ -23,8 +23,8 @@
 
     -h, --help                  Show this help screen 
     -v, --version               Print version 
-

Important
Arturo - and thus Peregrino - use the Nim-inspired way of parsing command-line params. Thus, for setting the --run param, you should use : before the value, e.g.:

peregrino --run:10 "some command" "another command" ...
-

License

MIT License

Copyright (c) 2024 Yanis Zafirópulos

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

  -
  
  2
Version
License
MIT

Executable?
Yes
Requires
Arturo > 0.9.83
  

peregrino

Lightning-fast command-line benchmarking tool & library

benchmark benchmarking utility cli terminal tool

Lightning-fast command-line
benchmarking tool & library for Arturo



What does this package do?

This is a benchmarker tool to help you measure and compare different scripts, in an ultra-customizeable way, see the results in an intuitive way and... even export them (Json & Markdown supported so far!) in case you want to keep them for further processing.

Note
Peregrino has shamelessly been inspired by a tool I personally love: Hyperfine. See it mostly as a double personal challenge: a) see how easily this could be done in Arturo, using what we already have, and... b) make something even better and more user-friendly!

How do I use it?

Peregrino comes in a hybrid package; that is: you may use it as a library (via import), or you can actually run it via the command-line, after installing it.

As a library

import {peregrino}!
+Peregrino • Arturo Packager
  

peregrino

Lightning-fast command-line benchmarking tool & library

benchmark benchmarking utility cli terminal tool

Lightning-fast command-line
benchmarking tool & library for Arturo



What does this package do?

This is a benchmarker tool to help you measure and compare different scripts, in an ultra-customizeable way, see the results in an intuitive way and... even export them (Json & Markdown supported so far!) in case you want to keep them for further processing.

Note

Peregrino has shamelessly been inspired by a tool I personally love: Hyperfine. See it mostly as a double personal challenge: a) see how easily this could be done in Arturo, using what we already have, and... b) make something even better and more user-friendly!

How do I use it?

Peregrino comes in a hybrid package; that is: you may use it as a library (via import), or you can actually run it via the command-line, after installing it.

As a library

import {peregrino}!
 
 P: to :peregrino @["command one", "command two"]!
 P\benchmark ; and that's it!
@@ -23,8 +23,8 @@
 
     -h, --help                  Show this help screen 
     -v, --version               Print version 
-

Important
Arturo - and thus Peregrino - use the Nim-inspired way of parsing command-line params. Thus, for setting the --run param, you should use : before the value, e.g.:

peregrino --run:10 "some command" "another command" ...
-

License

MIT License

Copyright (c) 2024 Yanis Zafirópulos

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

  -
  
  2
Version
0.0.2Latest
License
MIT

Executable?
Yes
Requires
Arturo > 0.9.83
  

peregrino

Lightning-fast command-line benchmarking tool & library

benchmark benchmarking utility cli terminal tool

Lightning-fast command-line
benchmarking tool & library for Arturo



What does this package do?

This is a benchmarker tool to help you measure and compare different scripts, in an ultra-customizeable way, see the results in an intuitive way and... even export them (Json & Markdown supported so far!) in case you want to keep them for further processing.

Note
Peregrino has shamelessly been inspired by a tool I personally love: Hyperfine. See it mostly as a double personal challenge: a) see how easily this could be done in Arturo, using what we already have, and... b) make something even better and more user-friendly!

How do I use it?

Peregrino comes in a hybrid package; that is: you may use it as a library (via import), or you can actually run it via the command-line, after installing it.

As a library

import {peregrino}!
+Peregrino • Arturo Packager
  

peregrino

Lightning-fast command-line benchmarking tool & library

benchmark benchmarking utility cli terminal tool

Lightning-fast command-line
benchmarking tool & library for Arturo



What does this package do?

This is a benchmarker tool to help you measure and compare different scripts, in an ultra-customizeable way, see the results in an intuitive way and... even export them (Json & Markdown supported so far!) in case you want to keep them for further processing.

Note

Peregrino has shamelessly been inspired by a tool I personally love: Hyperfine. See it mostly as a double personal challenge: a) see how easily this could be done in Arturo, using what we already have, and... b) make something even better and more user-friendly!

How do I use it?

Peregrino comes in a hybrid package; that is: you may use it as a library (via import), or you can actually run it via the command-line, after installing it.

As a library

import {peregrino}!
 
 P: to :peregrino @["command one", "command two"]!
 P\benchmark ; and that's it!
@@ -23,8 +23,8 @@
 
     -h, --help                  Show this help screen 
     -v, --version               Print version 
-

Important
Arturo - and thus Peregrino - use the Nim-inspired way of parsing command-line params. Thus, for setting the --run param, you should use : before the value, e.g.:

peregrino --run:10 "some command" "another command" ...
-

License

MIT License

Copyright (c) 2024 Yanis Zafirópulos

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

  -
  
  2
Version
0.0.2Latest
License
MIT

Executable?
Yes
Requires
Arturo > 0.9.83
  

Unicode-friendly string case converter

camelcase casing kebabcase snakecase string manipulation titlecase

Recase

Unicode-friendly string case converter for Arturo



What does this package do?

This package provides an function (recase) that allows to convert to and from different case styles, with full support of Unicode characters:

  • TitleCase
  • camelCase
  • snake_case
  • kebab-case

Important
All whitespace within the string will be stripped, to allow for a more efficient "word" separation.

How do I use it?

Simply import it and use the included recase function:

import "recase"!
+Recase • Arturo Packager
  

Unicode-friendly string case converter

camelcase casing kebabcase snakecase string manipulation titlecase

Recase

Unicode-friendly string case converter for Arturo



What does this package do?

This package provides an function (recase) that allows to convert to and from different case styles, with full support of Unicode characters:

  • TitleCase
  • camelCase
  • snake_case
  • kebab-case

Important

All whitespace within the string will be stripped, to allow for a more efficient "word" separation.

How do I use it?

Simply import it and use the included recase function:

import "recase"!
 
 recase.snake "This is an example"
 ; => "this_is_an_example"
@@ -7,7 +7,7 @@
 ; => "printSQL"
 

Function reference

recase

Description

convert case of given string

Usage
 recase str :string
-
Attributes
OptionType(s)Description
titleconvert to TitleCase
camelconvert to camelCase
snakeconvert to snake_case
kebabconvert to kebab-case
Returns
  • :string

License

MIT License

Copyright (c) 2024 Yanis Zafirópulos

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

  -
  
  5
Version
License
MIT

Executable?
No
Requires
Arturo > 0.9.83
  

Unicode-friendly string case converter

camelcase casing kebabcase snakecase string manipulation titlecase

Recase

Unicode-friendly string case converter for Arturo



What does this package do?

This package provides an function (recase) that allows to convert to and from different case styles, with full support of Unicode characters:

  • TitleCase
  • camelCase
  • snake_case
  • kebab-case

Important
All whitespace within the string will be stripped, to allow for a more efficient "word" separation.

How do I use it?

Simply import it and use the included recase function:

import "recase"!
+Recase • Arturo Packager
  

Unicode-friendly string case converter

camelcase casing kebabcase snakecase string manipulation titlecase

Recase

Unicode-friendly string case converter for Arturo



What does this package do?

This package provides an function (recase) that allows to convert to and from different case styles, with full support of Unicode characters:

  • TitleCase
  • camelCase
  • snake_case
  • kebab-case

Important

All whitespace within the string will be stripped, to allow for a more efficient "word" separation.

How do I use it?

Simply import it and use the included recase function:

import "recase"!
 
 recase.snake "This is an example"
 ; => "this_is_an_example"
@@ -7,7 +7,7 @@
 ; => "printSQL"
 

Function reference

recase

Description

convert case of given string

Usage
 recase str :string
-
Attributes
OptionType(s)Description
titleconvert to TitleCase
camelconvert to camelCase
snakeconvert to snake_case
kebabconvert to kebab-case
Returns
  • :string

License

MIT License

Copyright (c) 2024 Yanis Zafirópulos

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

  -
  
  5
Version
License
MIT

Executable?
No
Requires
Arturo > 0.9.83
  

recase

Unicode-friendly string case converter

camelcase casing kebabcase snakecase string manipulation titlecase

Recase

Unicode-friendly string case converter for Arturo



What does this package do?

This package provides an function (recase) that allows to convert to and from different case styles, with full support of Unicode characters:

  • TitleCase
  • camelCase
  • snake_case
  • kebab-case
  • plain case

Important
All whitespace within the string will be stripped, to allow for a more efficient "word" separation.

How do I use it?

Simply import it and use the included recase function:

import "recase"!
+Recase • Arturo Packager
  

recase

Unicode-friendly string case converter

camelcase casing kebabcase snakecase string manipulation titlecase

Recase

Unicode-friendly string case converter for Arturo



What does this package do?

This package provides an function (recase) that allows to convert to and from different case styles, with full support of Unicode characters:

  • TitleCase
  • camelCase
  • snake_case
  • kebab-case
  • plain case

Important

All whitespace within the string will be stripped, to allow for a more efficient "word" separation.

How do I use it?

Simply import it and use the included recase function:

import "recase"!
 
 recase.snake "This is an example"
 ; => "this_is_an_example"
@@ -7,7 +7,7 @@
 ; => "printSQL"
 

Function reference

recase

Description

convert case of given string

Usage
 recase str :string
-
Attributes
OptionType(s)Description
titleconvert to TitleCase
camelconvert to camelCase
snakeconvert to snake_case
kebabconvert to kebab-case
plainconvert to plain case
Returns
  • :string

License

MIT License

Copyright (c) 2024 Yanis Zafirópulos

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

  -
  
  5
Version
0.0.3Latest
License
MIT

Executable?
No
Requires
Arturo > 0.9.83
  

recase

Unicode-friendly string case converter

camelcase casing kebabcase snakecase string manipulation titlecase

Recase

Unicode-friendly string case converter for Arturo



What does this package do?

This package provides an function (recase) that allows to convert to and from different case styles, with full support of Unicode characters:

  • TitleCase
  • camelCase
  • snake_case
  • kebab-case
  • plain case

Important
All whitespace within the string will be stripped, to allow for a more efficient "word" separation.

How do I use it?

Simply import it and use the included recase function:

import "recase"!
+Recase • Arturo Packager
  

recase

Unicode-friendly string case converter

camelcase casing kebabcase snakecase string manipulation titlecase

Recase

Unicode-friendly string case converter for Arturo



What does this package do?

This package provides an function (recase) that allows to convert to and from different case styles, with full support of Unicode characters:

  • TitleCase
  • camelCase
  • snake_case
  • kebab-case
  • plain case

Important

All whitespace within the string will be stripped, to allow for a more efficient "word" separation.

How do I use it?

Simply import it and use the included recase function:

import "recase"!
 
 recase.snake "This is an example"
 ; => "this_is_an_example"
@@ -7,7 +7,7 @@
 ; => "printSQL"
 

Function reference

recase

Description

convert case of given string

Usage
 recase str :string
-
Attributes
OptionType(s)Description
titleconvert to TitleCase
camelconvert to camelCase
snakeconvert to snake_case
kebabconvert to kebab-case
plainconvert to plain case
Returns
  • :string

License

MIT License

Copyright (c) 2024 Yanis Zafirópulos

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

  -
  
  5
Version
0.0.3Latest
License
MIT

Executable?
No
Requires
Arturo > 0.9.83
  

states

:states is a lean Finite State Machine package for the Arturo Programming Language

finite state machine fsm

:states

:states is a basic Finite State Machine (FSM) package for the Arturo Programming language

Arturo logo Arturo logo

At a Glance

Running states.art screenshot

Inspiration

This package was highly inspired by Harrington Joseph's 1 talk "When Booleans Are Not Enough... State Machines?" 2. By consequence, this is inspired by the pytransitions package.

Tip
If you want to know why you need a FSM, I recommend you to watch his talk first.

Trying :states

Defining a finite state-machine is simple like that:

import {states}!
+States • Arturo Packager
  

states

:states is a lean Finite State Machine package for the Arturo Programming Language

finite state machine fsm

:states

:states is a basic Finite State Machine (FSM) package for the Arturo Programming language

Arturo logo Arturo logo

At a Glance

Running states.art screenshot

Inspiration

This package was highly inspired by Harrington Joseph's 1 talk "When Booleans Are Not Enough... State Machines?" 2.
By consequence, this is inspired by the pytransitions package.

Tip

If you want to know why you need a FSM, I recommend you to watch his talk first.

Trying :states

Defining a finite state-machine is simple like that:

import {states}!
 
 turnstile: to :states ['locked [
     push        /  locked    ~>  locked
@@ -6,7 +6,7 @@
     insertCoin  /  locked    ~>  unlocked
     insertCoin  /  unlocked  ~>  unlocked
 ]]
-

Explanation

  • The first parameter is the initial state,
  • The second parameter is the definition os the transitions, this must follow the following order: event, source, fate, being or not separated by symbols.
  • You can choose what symbol to use to separate them, or even choose by don't use them, making this a trilema.

Getting the current state

To get the current state, you must call the state method:

turnstile\state 
+

Explanation

  • The first parameter is the initial state,
  • The second parameter is the definition os the transitions,
    this must follow the following order: event, source, fate, being or not separated by symbols.
  • You can choose what symbol to use to separate them, or even choose by don't use them, making this a trilema.

Getting the current state

To get the current state, you must call the state method:

turnstile\state 
 ; => locked
 

Transitioning between states

There are two equivalent ways of transitioning between states, you can use <fsm>/<event> or <fsm>\changeFrom '<event>:

turnstile\state                   
 ; => locked
@@ -21,7 +21,7 @@
 ; => locked
 turnstile\changeFrom 'insertCoin 
 ; => unlocked
-

Background photo on "At a Glance" by Jack Anstey on Unsplash

  1. You can find him on Twitter or Github as @harph.

  2. "When Booleans Are Not Enough... State Machines?" by Harrington Joseph can be found in two places, on the Channel Next Day Video Presented on PyTexas 2019 and on the Channel SF Python presented on SF Python Meetup Feb 2019.

  -
  
  2
Version
0.1.0Latest
License
MIT

Executable?
No
Requires
Arturo > 0.9.83
  

states

:states is a lean Finite State Machine package for the Arturo Programming Language

finite state machine fsm

:states

:states is a basic Finite State Machine (FSM) package for the Arturo Programming language

Arturo logo Arturo logo

At a Glance

Running states.art screenshot

Inspiration

This package was highly inspired by Harrington Joseph's 1 talk "When Booleans Are Not Enough... State Machines?" 2. By consequence, this is inspired by the pytransitions package.

Tip
If you want to know why you need a FSM, I recommend you to watch his talk first.

Trying :states

Defining a finite state-machine is simple like that:

import {states}!
+States • Arturo Packager
  

states

:states is a lean Finite State Machine package for the Arturo Programming Language

finite state machine fsm

:states

:states is a basic Finite State Machine (FSM) package for the Arturo Programming language

Arturo logo Arturo logo

At a Glance

Running states.art screenshot

Inspiration

This package was highly inspired by Harrington Joseph's 1 talk "When Booleans Are Not Enough... State Machines?" 2.
By consequence, this is inspired by the pytransitions package.

Tip

If you want to know why you need a FSM, I recommend you to watch his talk first.

Trying :states

Defining a finite state-machine is simple like that:

import {states}!
 
 turnstile: to :states ['locked [
     push        /  locked    ~>  locked
@@ -6,7 +6,7 @@
     insertCoin  /  locked    ~>  unlocked
     insertCoin  /  unlocked  ~>  unlocked
 ]]
-

Explanation

  • The first parameter is the initial state,
  • The second parameter is the definition os the transitions, this must follow the following order: event, source, fate, being or not separated by symbols.
  • You can choose what symbol to use to separate them, or even choose by don't use them, making this a trilema.

Getting the current state

To get the current state, you must call the state method:

turnstile\state 
+

Explanation

  • The first parameter is the initial state,
  • The second parameter is the definition os the transitions,
    this must follow the following order: event, source, fate, being or not separated by symbols.
  • You can choose what symbol to use to separate them, or even choose by don't use them, making this a trilema.

Getting the current state

To get the current state, you must call the state method:

turnstile\state 
 ; => locked
 

Transitioning between states

There are two equivalent ways of transitioning between states, you can use <fsm>/<event> or <fsm>\changeFrom '<event>:

turnstile\state                   
 ; => locked
@@ -21,7 +21,7 @@
 ; => locked
 turnstile\changeFrom 'insertCoin 
 ; => unlocked
-

Background photo on "At a Glance" by Jack Anstey on Unsplash

  1. You can find him on Twitter or Github as @harph.

  2. "When Booleans Are Not Enough... State Machines?" by Harrington Joseph can be found in two places, on the Channel Next Day Video Presented on PyTexas 2019 and on the Channel SF Python presented on SF Python Meetup Feb 2019.

  -
  
  2
Version
0.1.0Latest
License
MIT

Executable?
No
Requires
Arturo > 0.9.83
  

tabular

Feature-rich ASCII table generator for the terminal

ascii cli csv table table generator terminal

Feature-rich ASCII table generator
for Arturo




What does this package do?

This package includes a simple - but powerful - ASCII table generator, with all the (tabular) bells and whistles, bundled in an easy-to-use package for Arturo.

How do I use it?

Simply import it and use any of the provided helper functions; mainly, one: tabular.

Tip
The code below generates the exact same tables you may see in the screenshot above^ :wink:

import "tabular"!
+Tabular • Arturo Packager
  

tabular

Feature-rich ASCII table generator for the terminal

ascii cli csv table table generator terminal

Feature-rich ASCII table generator
for Arturo




What does this package do?

This package includes a simple - but powerful - ASCII table generator, with all the (tabular) bells and whistles, bundled in an easy-to-use package for Arturo.

How do I use it?

Simply import it and use any of the provided helper functions; mainly, one: tabular.

Tip

The code below generates the exact same tables
you may see in the screenshot above^ 😉

import "tabular"!
 
 ; A simple table
 print tabular [
@@ -34,7 +34,7 @@
 ]
 

Function reference

tabular

Description

Create a new ASCII table with given rows

Usage
 tabular rows :block
-
Attributes
OptionType(s)Description
header:blockset table header columns
align:literal, :blockset column alignments (single value or array)
unicode:logicaluse Unicode characters
padding:integer, :blockset custom padding per column (single value or array)
Returns
  • :string

License

MIT License

Copyright (c) 2024 Yanis Zafirópulos

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

  -
  
  1
Version
0.0.1Latest
License
MIT

Executable?
No
Requires
Arturo > 0.9.83
  

tabular

Feature-rich ASCII table generator for the terminal

ascii cli csv table table generator terminal

Feature-rich ASCII table generator
for Arturo




What does this package do?

This package includes a simple - but powerful - ASCII table generator, with all the (tabular) bells and whistles, bundled in an easy-to-use package for Arturo.

How do I use it?

Simply import it and use any of the provided helper functions; mainly, one: tabular.

Tip
The code below generates the exact same tables you may see in the screenshot above^ :wink:

import "tabular"!
+Tabular • Arturo Packager
  

tabular

Feature-rich ASCII table generator for the terminal

ascii cli csv table table generator terminal

Feature-rich ASCII table generator
for Arturo




What does this package do?

This package includes a simple - but powerful - ASCII table generator, with all the (tabular) bells and whistles, bundled in an easy-to-use package for Arturo.

How do I use it?

Simply import it and use any of the provided helper functions; mainly, one: tabular.

Tip

The code below generates the exact same tables
you may see in the screenshot above^ 😉

import "tabular"!
 
 ; A simple table
 print tabular [
@@ -34,7 +34,7 @@
 ]
 

Function reference

tabular

Description

Create a new ASCII table with given rows

Usage
 tabular rows :block
-
Attributes
OptionType(s)Description
header:blockset table header columns
align:literal, :blockset column alignments (single value or array)
unicode:logicaluse Unicode characters
padding:integer, :blockset custom padding per column (single value or array)
Returns
  • :string

License

MIT License

Copyright (c) 2024 Yanis Zafirópulos

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

  -
  
  1
Version
0.0.1Latest
License
MIT

Executable?
No
Requires
Arturo > 0.9.83
  

tasks

A rake-inspired task system for Arturo

Tasks

Tasks is a lean tasking system based on Ruby's Rake

Arturo logo Arturo logo

At a Glance

Running Tasks from terminal Running Tasks from terminal

Trying Tasks

Tasks may be splited into two sections: runner and definitions.

The runner is the section responsible to get the user input and then execute the defined tasks. While the definitions are responsible to group the rules and logic of each task.

At your task file, you can do:

import {tasks}!
+Tasks • Arturo Packager
  

tasks

A rake-inspired task system for Arturo

Tasks

Tasks is a lean tasking system based on Ruby's Rake

Arturo logo Arturo logo

At a Glance

Running Tasks from terminal Running Tasks from terminal

Trying Tasks

Tasks may be splited into two sections: runner and definitions.

The runner is the section responsible to get the user input and then execute the defined tasks.
While the definitions are responsible to group the rules and logic of each task.

At your task file, you can do:

import {tasks}!
 
 ; here goes the task definition
 
 runTask "my-task"
 

And then, runnning with:

arturo tasks.art
-

Tip
You may want to use a hashbang to don't need to call arturo for every run. Try: #! arturo

Tip
To dynamically select the task via CLI, use:

 import {tasks}!
+

Tip

You may want to use a hashbang to don't need to call arturo for every run.
Try: #! arturo

Tip

To dynamically select the task via CLI, use:

 import {tasks}!
  
  ; tasks goes here
 
@@ -64,7 +64,7 @@
 ==================================================================================
 
 
-

Documentation

Runner

  • runTask: $[target :string :literal]: Runs the target task

Task Definition

  • directory: $[path :string]: Creates a directory. The same as write.directory path null.
  • file: $[filename :string action :block]: Defines a file. Files may require other files to exist. And also can be threated by other name using .as.
    • .as :literal: Wraps the file and its requirements into a dictionary: #[file :string requires [:string]]
    • .requires: The required files to this file exist. If none is passed, the files depends on itself.
  • exec $[command :string :literal params :string]: Executes a command on shell.
    • alias: |>.
    • OBS.: This function is only available into actions from routines and tasks.
  • routine: $[name :string :literal, action :block]: Defines a :routine that executes an action.
  • task: $[name :string :literal, action :block]: Defines a :task, every task is a :routine but executable direclty from the executeTask.
    • .requires [:literal :string :word]: Defines the required routines to run this.
    • .defers [:literal :string :word]: Defines the required defer routines.

Warning
Never import this lib as .lean, or this will break the current code. This happens due to the nature of Arturo (being kind-of concatenative).


Screenshot's wallpaper photo by Nick Scheerbart on Unsplash

  -
  
  6
Version
1.0.0Latest
License
--

Executable?
No
Requires
Arturo > 0.9.83
  

tasks

A rake-inspired task system for Arturo

Tasks

Tasks is a lean tasking system based on Ruby's Rake

Arturo logo Arturo logo

At a Glance

Running Tasks from terminal Running Tasks from terminal

Trying Tasks

Tasks may be splited into two sections: runner and definitions.

The runner is the section responsible to get the user input and then execute the defined tasks. While the definitions are responsible to group the rules and logic of each task.

At your task file, you can do:

import {tasks}!
+Tasks • Arturo Packager
  

tasks

A rake-inspired task system for Arturo

Tasks

Tasks is a lean tasking system based on Ruby's Rake

Arturo logo Arturo logo

At a Glance

Running Tasks from terminal Running Tasks from terminal

Trying Tasks

Tasks may be splited into two sections: runner and definitions.

The runner is the section responsible to get the user input and then execute the defined tasks.
While the definitions are responsible to group the rules and logic of each task.

At your task file, you can do:

import {tasks}!
 
 ; here goes the task definition
 
 runTask "my-task"
 

And then, runnning with:

arturo tasks.art
-

Tip
You may want to use a hashbang to don't need to call arturo for every run. Try: #! arturo

Tip
To dynamically select the task via CLI, use:

 import {tasks}!
+

Tip

You may want to use a hashbang to don't need to call arturo for every run.
Try: #! arturo

Tip

To dynamically select the task via CLI, use:

 import {tasks}!
  
  ; tasks goes here
 
@@ -64,7 +64,7 @@
 ==================================================================================
 
 
-

Documentation

Runner

  • runTask: $[target :string :literal]: Runs the target task

Task Definition

  • directory: $[path :string]: Creates a directory. The same as write.directory path null.
  • file: $[filename :string action :block]: Defines a file. Files may require other files to exist. And also can be threated by other name using .as.
    • .as :literal: Wraps the file and its requirements into a dictionary: #[file :string requires [:string]]
    • .requires: The required files to this file exist. If none is passed, the files depends on itself.
  • exec $[command :string :literal params :string]: Executes a command on shell.
    • alias: |>.
    • OBS.: This function is only available into actions from routines and tasks.
  • routine: $[name :string :literal, action :block]: Defines a :routine that executes an action.
  • task: $[name :string :literal, action :block]: Defines a :task, every task is a :routine but executable direclty from the executeTask.
    • .requires [:literal :string :word]: Defines the required routines to run this.
    • .defers [:literal :string :word]: Defines the required defer routines.

Warning
Never import this lib as .lean, or this will break the current code. This happens due to the nature of Arturo (being kind-of concatenative).


Screenshot's wallpaper photo by Nick Scheerbart on Unsplash

  -
  
  6
Version
1.0.0Latest
License
--

Executable?
No
Requires
Arturo > 0.9.83
  

Unicode -> ASCII converter

ascii unicode unicode converter unidecode

Arturo logo Arturo logo Unidecode

Unicode -> ASCII converter package for Arturo


What does this package do?

Let's say you have a Unicode string, with different characters, in different languages, e.g. characters with accents, in cyrillic, Mandarin Chinese, etc and - for whatever reason - want to have a close approximation to what it would be like using only ASCII characters, then this package is for you.

Tip
The package has been based on Nim's implementation, of the same name - which in turn has been based on the Python's Unidecode module by Tomaz Solc.

How do I use it?

Simply import it and use the included unidecode function:

import "unidecode"!
+Unidecode • Arturo Packager
  

Unicode -> ASCII converter

ascii unicode unicode converter unidecode

Arturo logo Arturo logo Unidecode

Unicode -> ASCII converter package for Arturo


What does this package do?

Let's say you have a Unicode string, with different characters, in different languages, e.g. characters with accents, in cyrillic, Mandarin Chinese, etc and - for whatever reason - want to have a close approximation to what it would be like using only ASCII characters, then this package is for you.

Tip

The package has been based on Nim's implementation, of the same name - which in turn has been based on the Python's Unidecode module by Tomaz Solc.

How do I use it?

Simply import it and use the included unidecode function:

import "unidecode"!
 
 print unidecode "доброе утро!"
 ; will print:
 ; dobroe utro!
-

Important
The package cannot possibly guarantee that the output will be "accurate", not is it 100% easy to say what would be accurate in every possible case - it's an approximate Unicode -> ASCII transformation. So, if you need a better solution for your specific needs, you might be better of writing a custom solution yourself!


License

MIT License

Copyright (c) 2024 Yanis Zafirópulos

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

  -
  
  4
Version
License
MIT

Executable?
No
Requires
Arturo > 0.9.83
  

Unicode -> ASCII converter

ascii unicode unicode converter unidecode

Unidecode

Unicode -> ASCII converter package for Arturo


What does this package do?

Let's say you have a Unicode string, with different characters, in different languages, e.g. characters with accents, in cyrillic, Mandarin Chinese, etc and - for whatever reason - want to have a close approximation to what it would be like using only ASCII characters, then this package is for you.

Tip
The package has been based on Nim's implementation, of the same name - which in turn has been based on the Python's Unidecode module by Tomaz Solc.

How do I use it?

Simply import it and use the included unidecode function:

import "unidecode"!
+Unidecode • Arturo Packager
  

Unicode -> ASCII converter

ascii unicode unicode converter unidecode

Unidecode

Unicode -> ASCII converter package for Arturo


What does this package do?

Let's say you have a Unicode string, with different characters, in different languages, e.g. characters with accents, in cyrillic, Mandarin Chinese, etc and - for whatever reason - want to have a close approximation to what it would be like using only ASCII characters, then this package is for you.

Tip

The package has been based on Nim's implementation, of the same name - which in turn has been based on the Python's Unidecode module by Tomaz Solc.

How do I use it?

Simply import it and use the included unidecode function:

import "unidecode"!
 
 print unidecode "доброе утро!"
 ; will print:
 ; dobroe utro!
-

Important
The package cannot possibly guarantee that the output will be "accurate", not is it 100% easy to say what would be accurate in every possible case - it's an approximate Unicode -> ASCII transformation. So, if you need a better solution for your specific needs, you might be better of writing a custom solution yourself!


License

MIT License

Copyright (c) 2024 Yanis Zafirópulos

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

  -
  
  4
Version
License
MIT

Executable?
No
Requires
Arturo > 0.9.83
  

unidecode

Unicode -> ASCII converter

ascii unicode unicode converter unidecode

Unidecode

Unicode -> ASCII converter package for Arturo


What does this package do?

Let's say you have a Unicode string, with different characters, in different languages, e.g. characters with accents, in cyrillic, Mandarin Chinese, etc and - for whatever reason - want to have a close approximation to what it would be like using only ASCII characters, then this package is for you.

Tip
The package has been based on Nim's implementation, of the same name - which in turn has been based on the Python's Unidecode module by Tomaz Solc.

How do I use it?

Simply import it and use the included unidecode function:

import "unidecode"!
+Unidecode • Arturo Packager
  

unidecode

Unicode -> ASCII converter

ascii unicode unicode converter unidecode

Unidecode

Unicode -> ASCII converter package for Arturo


What does this package do?

Let's say you have a Unicode string, with different characters, in different languages, e.g. characters with accents, in cyrillic, Mandarin Chinese, etc and - for whatever reason - want to have a close approximation to what it would be like using only ASCII characters, then this package is for you.

Tip

The package has been based on Nim's implementation, of the same name - which in turn has been based on the Python's Unidecode module by Tomaz Solc.

How do I use it?

Simply import it and use the included unidecode function:

import "unidecode"!
 
 print unidecode "доброе утро!"
 ; will print:
 ; dobroe utro!
-

Important
The package cannot possibly guarantee that the output will be "accurate", not is it 100% easy to say what would be accurate in every possible case - it's an approximate Unicode -> ASCII transformation. So, if you need a better solution for your specific needs, you might be better of writing a custom solution yourself!


License

MIT License

Copyright (c) 2024 Yanis Zafirópulos

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

  -
  
  4
Version
0.0.3Latest
License
MIT

Executable?
No
Requires
Arturo > 0.9.83
  

unidecode

Unicode -> ASCII converter

ascii unicode unicode converter unidecode

Unidecode

Unicode -> ASCII converter package for Arturo


What does this package do?

Let's say you have a Unicode string, with different characters, in different languages, e.g. characters with accents, in cyrillic, Mandarin Chinese, etc and - for whatever reason - want to have a close approximation to what it would be like using only ASCII characters, then this package is for you.

Tip
The package has been based on Nim's implementation, of the same name - which in turn has been based on the Python's Unidecode module by Tomaz Solc.

How do I use it?

Simply import it and use the included unidecode function:

import "unidecode"!
+Unidecode • Arturo Packager
  

unidecode

Unicode -> ASCII converter

ascii unicode unicode converter unidecode

Unidecode

Unicode -> ASCII converter package for Arturo


What does this package do?

Let's say you have a Unicode string, with different characters, in different languages, e.g. characters with accents, in cyrillic, Mandarin Chinese, etc and - for whatever reason - want to have a close approximation to what it would be like using only ASCII characters, then this package is for you.

Tip

The package has been based on Nim's implementation, of the same name - which in turn has been based on the Python's Unidecode module by Tomaz Solc.

How do I use it?

Simply import it and use the included unidecode function:

import "unidecode"!
 
 print unidecode "доброе утро!"
 ; will print:
 ; dobroe utro!
-

Important
The package cannot possibly guarantee that the output will be "accurate", not is it 100% easy to say what would be accurate in every possible case - it's an approximate Unicode -> ASCII transformation. So, if you need a better solution for your specific needs, you might be better of writing a custom solution yourself!


License

MIT License

Copyright (c) 2024 Yanis Zafirópulos

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

  -
  
  4
Version
0.0.3Latest
License
MIT

Executable?
No
Requires
Arturo > 0.9.83
  

Unitt is a basic unit-test tool for the Arturo Programming language.

unit tests

Unitt

Unitt is a basic unit-test tool for the Arturo Programming language

Arturo logo Arturo logo

At a Glance

Running Unitt from terminal

Trying Unitt

Unitt may be splited into two sections: the tester and the tests.

The tester is the section responsible to find, run and return error codes to the final user. While the tests are responsible to group the rules and logic of the tests.

Initial setup

It's recomended that your runner be at the root of your directory, right before your tests folder.

All of your tests must begin with the test prefix and end with the .art extension to be found, since you may want to mix them with some other files.

Being that said, that is the right way of setting up your tester:

Let's consider that you have the following directory:

src/
+Unitt • Arturo Packager
  

Unitt is a basic unit-test tool for the Arturo Programming language.

unit tests

Unitt

Unitt is a basic unit-test tool for the Arturo Programming language

Arturo logo Arturo logo

At a Glance

Running Unitt from terminal

Trying Unitt

Unitt may be splited into two sections: the tester and the tests.

The tester is the section responsible to find, run and return error codes to the final user.
While the tests are responsible to group the rules and logic of the tests.

Initial setup

It's recomended that your runner be at the root of your directory, right before your tests folder.

All of your tests must begin with the test prefix and end with the .art extension to be found,
since you may want to mix them with some other files.

Being that said, that is the right way of setting up your tester:

Let's consider that you have the following directory:

src/
     ...
 tests/
     ...
@@ -9,7 +9,7 @@
 do ::
     runTests "tests"
 

To run it, call:

arturo tester.art
-

Tip
You may want to use a hashbang to don't need to call arturo for every run.

The tests itself

A real example of tests:

test "appending binaries with integer is working" [
+

Tip

You may want to use a hashbang to don't need to call arturo for every run.

The tests itself

A real example of tests:

test "appending binaries with integer is working" [
     b: to :binary 0
     assert -> as.binary 2 = append b 1
     assert -> as.binary 1 = b ++ 1
@@ -31,7 +31,7 @@
 
 ✅ - assert that appending binaries with integer returns a binary
      assertion : [binary? b ++ 1]
-

Note
Property-based tests have ~ as separator.

Documentation

Runner

  • runTests: $[folder :string]: The runner function, this function will look for tests inside the relative folder. Remember that all tests must begin with the test prefix, and be an .art extension.

Tests

  • test: $[description :string, testCase :block]: The test case itself, you need to pass a clear description to it, And the logic that you're trying to assert.
    • .prop: Indicates that a test is property-based.
  • assert: $[condition :block]: A function that is only available inside the test case, makes an assertion given the condition.

Background photo on "At a Glance" by Jack Anstey on Unsplash

  -
  
  2
Version
License
MIT

Executable?
No
Requires
Arturo > 0.9.83
  

Unitt is a basic unit-test tool for the Arturo Programming language.

unit tests

Unitt

Unitt is a basic unit-test tool for the Arturo Programming language

Arturo logo Arturo logo

At a Glance

Running Unitt from terminal

Trying Unitt

Unitt may be splited into two sections: the tester and the tests.

The tester is the section responsible to find, run and return error codes to the final user. While the tests are responsible to group the rules and logic of the tests.

Initial setup

It's recomended that your runner be at the root of your directory, right before your tests folder.

All of your tests must begin with the test prefix and end with the .art extension to be found, since you may want to mix them with some other files.

Being that said, that is the right way of setting up your tester:

Let's consider that you have the following directory:

src/
+Unitt • Arturo Packager
  

Unitt is a basic unit-test tool for the Arturo Programming language.

unit tests

Unitt

Unitt is a basic unit-test tool for the Arturo Programming language

Arturo logo Arturo logo

At a Glance

Running Unitt from terminal

Trying Unitt

Unitt may be splited into two sections: the tester and the tests.

The tester is the section responsible to find, run and return error codes to the final user.
While the tests are responsible to group the rules and logic of the tests.

Initial setup

It's recomended that your runner be at the root of your directory, right before your tests folder.

All of your tests must begin with the test prefix and end with the .art extension to be found,
since you may want to mix them with some other files.

Being that said, that is the right way of setting up your tester:

Let's consider that you have the following directory:

src/
     ...
 tests/
     ...
@@ -9,7 +9,7 @@
 do ::
     runTests "tests"
 

To run it, call:

arturo tester.art
-

Tip
You may want to use a hashbang to don't need to call arturo for every run.

The tests itself

A real example of tests:

unix?: true
+

Tip

You may want to use a hashbang to don't need to call arturo for every run.

The tests itself

A real example of tests:

unix?: true
 
 test "appending binaries with integer is working" [
     b: to :binary 0
@@ -40,7 +40,7 @@
 
 ⏩ - assert that split is working for windows's paths      
       skipped!
-

Note
Property-based tests have ~ as separator.

Documentation

Runner

  • runTests: $[folder :string]: The runner function, this function will look for tests inside the relative folder. Remember that all tests must begin with the test prefix, and be an .art extension.

Tests

  • test: $[description :string, testCase :block]: The test case itself, you need to pass a clear description to it, And the logic that you're trying to assert.
    • .prop: Indicates that a test is property-based.
    • .skip :logical: Skips tests for some condition. If none condition is given, this will just skip the test.
  • assert: $[condition :block]: A function that is only available inside the test case, makes an assertion given the condition.

Background photo on "At a Glance" by Jack Anstey on Unsplash

  -
  
  2
Version
License
MIT

Executable?
No
Requires
Arturo > 0.9.83
  

Unitt is a basic unit-test tool for the Arturo Programming language.

unit tests

Unitt

Unitt is a basic unit-test tool for the Arturo Programming language

Arturo logo Arturo logo

At a Glance

Running Unitt from terminal

Trying Unitt

Unitt may be splited into two sections: runner and the tests.

The runner is the section responsible to find, run and return error codes to the final user. While the tests are responsible to group the rules and logic of the tests.

Initial setup

It's recomended that your runner be at the root of your directory, right before your tests folder.

All of your tests must begin with the test prefix and end with the .art extension to be found, since you may want to mix them with some other files.

Being that said, that is the right way of setting up your runner:

Let's consider that you have the following directory:

src/
+Unitt • Arturo Packager
  

Unitt is a basic unit-test tool for the Arturo Programming language.

unit tests

Unitt

Unitt is a basic unit-test tool for the Arturo Programming language

Arturo logo Arturo logo

At a Glance

Running Unitt from terminal

Trying Unitt

Unitt may be splited into two sections: runner and the tests.

The runner is the section responsible to find, run and return error codes to the final user.
While the tests are responsible to group the rules and logic of the tests.

Initial setup

It's recomended that your runner be at the root of your directory, right before your tests folder.

All of your tests must begin with the test prefix and end with the .art extension to be found,
since you may want to mix them with some other files.

Being that said, that is the right way of setting up your runner:

Let's consider that you have the following directory:

src/
     ...
 tests/
     ...
@@ -9,7 +9,7 @@
 do ::
     runTests "tests"
 

To run it, call:

arturo tester.art
-

Tip
You may want to use a hashbang to don't need to call arturo for every run.

The tests itself

A real example of tests:

unix?: true
+

Tip

You may want to use a hashbang to don't need to call arturo for every run.

The tests itself

A real example of tests:

unix?: true
 
 test "appending binaries with integer is working" [
     b: to :binary 0
@@ -40,7 +40,7 @@
 
 ⏩ - assert that split is working for windows's paths      
       skipped!
-

Note
Property-based tests have ~ as separator.

The Runner

Basically, you can run your tests units without a runner. But there are some reasons why you should prefer to use a runTests function to run them.

First, your runner's output will give you important information about the current run. This will show you the file being runned, the tests's status and at the end a summary of failed, skipped and passed tests:

===== Statistics =====
+

Note

Property-based tests have ~ as separator.

The Runner

Basically, you can run your tests units without a runner.
But there are some reasons why you should prefer to use a runTests function to run them.

First, your runner's output will give you important information about the current run.
This will show you the file being runned,
the tests's status
and at the end a summary of failed, skipped and passed tests:

===== Statistics =====
 
 ⏏️   TOTAL: 24 assertions
 ✅  PASSED: 20 assertions
@@ -48,7 +48,7 @@
 ❌  FAILED: 4 assertions
 
 ===== ========== =====
-

Also, the runner is able to return an error code, so that is great if you're working with Continuous Integration.

Documentation

Runner

  • runTests: $[folder :string]: The runner function, this function will look for tests inside the relative folder. Remember that all tests must begin with the test prefix, and be an .art extension.
    • .failFast: Fails on the first error found. This works at file scope due to our current way of running tests.
    • .pattern :string: Defines what is a test-file via a kind-of glob pattern. Use a * as spliter.
      • Obs.: That is a kind-of glob pattern, not a real one. So just use one and only one * to split the pre and suffix.
    • .suppress: Suppress panic, this means: this won't terminate your tests, won't return an error code and won't print a panic message.

Tests

  • test: $[description :string, testCase :block]: The test case itself, you need to pass a clear description to it, And the logic that you're trying to assert.
    • .prop: Indicates that a test is property-based.
    • .skip :logical: Skips tests for some condition. If none condition is given, this will just skip the test.
  • assert: $[condition :block]: A function that is only available inside the test case, makes an assertion given the condition.

Background photo on "At a Glance" by Jack Anstey on Unsplash

  -
  
  2
Version
License
MIT

Executable?
No
Requires
Arturo > 0.9.83
  

Unitt is a basic unit-test tool for the Arturo Programming language.

unit tests

Unitt

Unitt is a basic unit-test tool for the Arturo Programming language

Arturo logo Arturo logo

At a Glance

Running Unitt from terminal

Trying Unitt

Unitt may be splited into two sections: runner and the tests.

The runner is the section responsible to find, run and return error codes to the final user. While the tests are responsible to group the rules and logic of the tests.

Initial setup

It's recomended that your runner be at the root of your directory, right before your tests folder.

All of your tests must begin with the test prefix and end with the .art extension to be found, since you may want to mix them with some other files.

Being that said, that is the right way of setting up your runner:

Let's consider that you have the following directory:

src/
+Unitt • Arturo Packager
  

Unitt is a basic unit-test tool for the Arturo Programming language.

unit tests

Unitt

Unitt is a basic unit-test tool for the Arturo Programming language

Arturo logo Arturo logo

At a Glance

Running Unitt from terminal

Trying Unitt

Unitt may be splited into two sections: runner and the tests.

The runner is the section responsible to find, run and return error codes to the final user.
While the tests are responsible to group the rules and logic of the tests.

Initial setup

It's recomended that your runner be at the root of your directory, right before your tests folder.

All of your tests must begin with the test prefix and end with the .art extension to be found,
since you may want to mix them with some other files.

Being that said, that is the right way of setting up your runner:

Let's consider that you have the following directory:

src/
     ...
 tests/
     ...
@@ -8,7 +8,7 @@
 
 runTests "tests"
 

To run it, call:

arturo tester.art
-

Tip
You may want to use a hashbang to don't need to call arturo for every run.

The tests itself

A real example of tests:

unix?: true
+

Tip

You may want to use a hashbang to don't need to call arturo for every run.

The tests itself

A real example of tests:

unix?: true
 
 test "appending binaries with integer is working" [
     b: to :binary 0
@@ -39,7 +39,7 @@
 
 ⏩ - assert that split is working for windows's paths      
       skipped!
-

Note
Property-based tests have ~ as separator.

The Runner

Basically, you can run your tests units without a runner. But there are some reasons why you should prefer to use a runTests function to run them.

First, your runner's output will give you important information about the current run. This will show you the file being runned, the tests's status and at the end a summary of failed, skipped and passed tests:

===== Statistics =====
+

Note

Property-based tests have ~ as separator.

The Runner

Basically, you can run your tests units without a runner.
But there are some reasons why you should prefer to use a runTests function to run them.

First, your runner's output will give you important information about the current run.
This will show you the file being runned,
the tests's status
and at the end a summary of failed, skipped and passed tests:

===== Statistics =====
 
 ⏏️   TOTAL: 24 assertions
 ✅  PASSED: 20 assertions
@@ -47,7 +47,7 @@
 ❌  FAILED: 4 assertions
 
 ===== ========== =====
-

Also, the runner is able to return an error code, so that is great if you're working with Continuous Integration.

Documentation

Runner

  • runTests: $[folder :string]: The runner function, this function will look for tests inside the relative folder. Remember that all tests must begin with the test prefix, and be an .art extension.
    • .failFast: Fails on the first error found. This works at file scope due to our current way of running tests.
    • .pattern :string: Defines what is a test-file via a kind-of glob pattern. Use a * as spliter.
      • Obs.: That is a kind-of glob pattern, not a real one. So just use one and only one * to split the pre and suffix.
    • .suppress: Suppress panic, this means: this won't terminate your tests, won't return an error code and won't print a panic message.

Tests

  • test: $[description :string, testCase :block]: The test case itself, you need to pass a clear description to it, And the logic that you're trying to assert.
    • .prop: Indicates that a test is property-based.
    • .skip :logical: Skips tests for some condition. If none condition is given, this will just skip the test.
    • .static: :block: Defines what will and what won't be evaluated.
    • .static: :logical: Disable runtime evaluation, and forces static display.
  • assert: $[condition :block]: A function that is only available inside the test case, makes an assertion given the condition.
  • suite: $[description :string tests :block]: Visually groups tests together.

Warning
Never import this lib as .lean, or this will break the current code. This happens due to the nature of Arturo (being concatenative), and the way we importings are working right now. This may change in future.


Background photo on "At a Glance" by Jack Anstey on Unsplash

  -
  
  2
Version
License
MIT

Executable?
No
Requires
Arturo > 0.9.83
  

Unitt is a basic unit-test tool for the Arturo Programming language.

unit tests

Unitt

Unitt is a basic unit-test tool for the Arturo Programming language

Arturo logo Arturo logo

At a Glance

Running Unitt from terminal

Trying Unitt

Unitt may be splited into two sections: runner and the tests.

The runner is the section responsible to find, run and return error codes to the final user. While the tests are responsible to group the rules and logic of the tests.

Initial setup

It's recomended that your tester be at the root of your directory, right before your tests folder.

All of your tests must begin with the test prefix and end with the .art extension to be found, since you may want to mix them with some other files.

Being that said, that is the right way of setting up your tester:

Let's consider that you have the following directory:

src/
+Unitt • Arturo Packager
  

Unitt is a basic unit-test tool for the Arturo Programming language.

unit tests

Unitt

Unitt is a basic unit-test tool for the Arturo Programming language

Arturo logo Arturo logo

At a Glance

Running Unitt from terminal

Trying Unitt

Unitt may be splited into two sections: runner and the tests.

The runner is the section responsible to find, run and return error codes to the final user.
While the tests are responsible to group the rules and logic of the tests.

Initial setup

It's recomended that your tester be at the root of your directory, right before your tests folder.

All of your tests must begin with the test prefix and end with the .art extension to be found,
since you may want to mix them with some other files.

Being that said, that is the right way of setting up your tester:

Let's consider that you have the following directory:

src/
     ...
 tests/
     ...
@@ -8,7 +8,7 @@
 
 runTests findTests "tests"
 

To run it, call:

arturo tester.art
-

Tip
You may want to use a hashbang to don't need to call arturo for every run.

Tip
If you want be able to test some specific tests from the CLI, you can:

 import {unitt}!
+

Tip

You may want to use a hashbang to don't need to call arturo for every run.

Tip

If you want be able to test some specific tests from the CLI, you can:

 import {unitt}!
  
  runTests (empty? arg)? 
      -> findTests "tests"
@@ -58,7 +58,7 @@
 
 ✅ - assert that split is works for unix path
      assertion: ["." "splited" "path"] = split .path "./splited/path"
-

Note
Property-based tests have ~ as separator.

The Runner

Basically, you can run your tests units without a runner. But there are some reasons why you should prefer to use a runTests function to run them.

First, your runner's output will give you important information about the current run. This will show you the file being runned, the tests's status and at the end a summary of failed, skipped and passed tests:

===== Statistics =====
+

Note

Property-based tests have ~ as separator.

The Runner

Basically, you can run your tests units without a runner.
But there are some reasons why you should prefer to use a runTests function to run them.

First, your runner's output will give you important information about the current run.
This will show you the file being runned,
the tests's status
and at the end a summary of failed, skipped and passed tests:

===== Statistics =====
 
 ⏏️   TOTAL: 24 assertions
 ✅  PASSED: 20 assertions
@@ -66,7 +66,7 @@
 ❌  FAILED: 4 assertions
 
 ===== ========== =====
-

Also, the runner is able to return an error code, so that is great if you're working with Continuous Integration.

Documentation

Runner

  • runTests: $[tests [:string]]: The runner function, this executes all tests, show statistics and return a value.
    • .failFast: Fails on the first error found. This works at file scope due to our current way of running tests.
    • .suppress: Suppress panic, this means: this won't terminate your tests, won't return an error code and won't print a panic message.
  • findTests: $[folder :string]: The finder function, this function will look for tests inside the relative folder. The default test pattern is "test*.art".
    • .thatMatches :string: Defines what is a test-file via a kind-of glob pattern. Use a * as spliter.
      • Obs.: That is a kind-of glob pattern, not a real one. So just use one and only one * to split the pre and suffix.

Tests

  • test: $[description :string, testCase :block]: The test case itself, you need to pass a clear description to it, And the logic that you're trying to assert.
    • .prop: Indicates that a test is property-based.
    • .skip :logical: Skips tests for some condition. If none condition is given, this will just skip the test.
    • .static: :block: Defines what will and what won't be evaluated.
    • .static: :logical: Disable runtime evaluation, and forces static display.
  • assert: $[condition :block]: A function that is only available inside the test case, makes an assertion given the condition.
  • suite: $[description :string tests :block]: Visually groups tests together.

Warning
Never import this lib as .lean, or this will break the current code. This happens due to the nature of Arturo (being concatenative), and the way we importings are working right now. This may change in future.


Background photo on "At a Glance" by Jack Anstey on Unsplash

  -
  
  2
Version
License
MIT

Executable?
No
Requires
Arturo > 0.9.83
  

unitt

Unitt is a basic unit-test tool for the Arturo Programming language.

unit tests

Unitt

Unitt is a basic unit-test tool for the Arturo Programming language

Arturo logo Arturo logo

At a Glance

Running Unitt from terminal

Trying Unitt

Unitt may be splited into two sections: runner and the tests.

The runner is the section responsible to find, run and return error codes to the final user. While the tests are responsible to group the rules and logic of the tests.

Initial setup

It's recomended that your tester be at the root of your directory, right before your tests folder.

All of your tests must begin with the test prefix and end with the .art extension to be found, since you may want to mix them with some other files.

Being that said, that is the right way of setting up your tester:

Let's consider that you have the following directory:

src/
+Unitt • Arturo Packager
  

unitt

Unitt is a basic unit-test tool for the Arturo Programming language.

unit tests

Unitt

Unitt is a basic unit-test tool for the Arturo Programming language

Arturo logo Arturo logo

At a Glance

Running Unitt from terminal

Trying Unitt

Unitt may be splited into two sections: runner and the tests.

The runner is the section responsible to find, run and return error codes to the final user.
While the tests are responsible to group the rules and logic of the tests.

Initial setup

It's recomended that your tester be at the root of your directory, right before your tests folder.

All of your tests must begin with the test prefix and end with the .art extension to be found,
since you may want to mix them with some other files.

Being that said, that is the right way of setting up your tester:

Let's consider that you have the following directory:

src/
     ...
 tests/
     ...
@@ -8,7 +8,7 @@
 
 runTests findTests "tests"
 

To run it, call:

arturo tester.art
-

Tip
You may want to use a hashbang to don't need to call arturo for every run.

Tip
If you want be able to test some specific tests from the CLI, you can:

 import {unitt}!
+

Tip

You may want to use a hashbang to don't need to call arturo for every run.

Tip

If you want be able to test some specific tests from the CLI, you can:

 import {unitt}!
  
  runTests (empty? arg)? 
      -> findTests "tests"
@@ -58,7 +58,7 @@
 
 ✅ - assert that split is works for unix path
      assertion: ["." "splited" "path"] = split .path "./splited/path"
-

Note
Property-based tests have ~ as separator.

The Runner

Basically, you can run your tests units without a runner. But there are some reasons why you should prefer to use a runTests function to run them.

First, your runner's output will give you important information about the current run. This will show you the file being runned, the tests's status and at the end a summary of failed, skipped and passed tests:

===== Statistics =====
+

Note

Property-based tests have ~ as separator.

The Runner

Basically, you can run your tests units without a runner.
But there are some reasons why you should prefer to use a runTests function to run them.

First, your runner's output will give you important information about the current run.
This will show you the file being runned,
the tests's status
and at the end a summary of failed, skipped and passed tests:

===== Statistics =====
 
 ⏏️   TOTAL: 24 assertions
 ✅  PASSED: 20 assertions
@@ -66,7 +66,7 @@
 ❌  FAILED: 4 assertions
 
 ===== ========== =====
-

Also, the runner is able to return an error code, so that is great if you're working with Continuous Integration.

Documentation

Runner

  • runTests: $[tests [:string]]: The runner function, this executes all tests, show statistics and return a value.
    • .failFast: Fails on the first error found. This works at file scope due to our current way of running tests.
    • .suppress: Suppress panic, this means: this won't terminate your tests, won't return an error code and won't print a panic message.
  • findTests: $[folder :string]: The finder function, this function will look for tests inside the relative folder. The default test pattern is "test*.art".
    • .thatMatches :string: Defines what is a test-file via a kind-of glob pattern. Use a * as spliter.
      • Obs.: That is a kind-of glob pattern, not a real one. So just use one and only one * to split the pre and suffix.

Tests

  • test: $[description :string, testCase :block]: The test case itself, you need to pass a clear description to it, And the logic that you're trying to assert.
    • .prop: Indicates that a test is property-based.
    • .skip :logical: Skips tests for some condition. If none condition is given, this will just skip the test.
    • .static: :block: Defines what will and what won't be evaluated.
    • .static: :logical: Disable runtime evaluation, and forces static display.
  • assert: $[condition :block]: A function that is only available inside the test case, makes an assertion given the condition.
  • suite: $[description :string tests :block]: Visually groups tests together.

Warning
Never import this lib as .lean, or this will break the current code. This happens due to the nature of Arturo (being concatenative), and the way we importings are working right now. This may change in future.


Background photo on "At a Glance" by Jack Anstey on Unsplash

  -
  
  2
Version
1.1.2Latest
License
MIT

Executable?
No
Requires
Arturo > 0.9.83
  

unitt

Unitt is a basic unit-test tool for the Arturo Programming language.

unit tests

Unitt

Unitt is a basic unit-test tool for the Arturo Programming language

Arturo logo Arturo logo

At a Glance

Running Unitt from terminal

Trying Unitt

Unitt may be splited into two sections: runner and the tests.

The runner is the section responsible to find, run and return error codes to the final user. While the tests are responsible to group the rules and logic of the tests.

Initial setup

It's recomended that your tester be at the root of your directory, right before your tests folder.

All of your tests must begin with the test prefix and end with the .art extension to be found, since you may want to mix them with some other files.

Being that said, that is the right way of setting up your tester:

Let's consider that you have the following directory:

src/
+Unitt • Arturo Packager
  

unitt

Unitt is a basic unit-test tool for the Arturo Programming language.

unit tests

Unitt

Unitt is a basic unit-test tool for the Arturo Programming language

Arturo logo Arturo logo

At a Glance

Running Unitt from terminal

Trying Unitt

Unitt may be splited into two sections: runner and the tests.

The runner is the section responsible to find, run and return error codes to the final user.
While the tests are responsible to group the rules and logic of the tests.

Initial setup

It's recomended that your tester be at the root of your directory, right before your tests folder.

All of your tests must begin with the test prefix and end with the .art extension to be found,
since you may want to mix them with some other files.

Being that said, that is the right way of setting up your tester:

Let's consider that you have the following directory:

src/
     ...
 tests/
     ...
@@ -8,7 +8,7 @@
 
 runTests findTests "tests"
 

To run it, call:

arturo tester.art
-

Tip
You may want to use a hashbang to don't need to call arturo for every run.

Tip
If you want be able to test some specific tests from the CLI, you can:

 import {unitt}!
+

Tip

You may want to use a hashbang to don't need to call arturo for every run.

Tip

If you want be able to test some specific tests from the CLI, you can:

 import {unitt}!
  
  runTests (empty? arg)? 
      -> findTests "tests"
@@ -58,7 +58,7 @@
 
 ✅ - assert that split is works for unix path
      assertion: ["." "splited" "path"] = split .path "./splited/path"
-

Note
Property-based tests have ~ as separator.

The Runner

Basically, you can run your tests units without a runner. But there are some reasons why you should prefer to use a runTests function to run them.

First, your runner's output will give you important information about the current run. This will show you the file being runned, the tests's status and at the end a summary of failed, skipped and passed tests:

===== Statistics =====
+

Note

Property-based tests have ~ as separator.

The Runner

Basically, you can run your tests units without a runner.
But there are some reasons why you should prefer to use a runTests function to run them.

First, your runner's output will give you important information about the current run.
This will show you the file being runned,
the tests's status
and at the end a summary of failed, skipped and passed tests:

===== Statistics =====
 
 ⏏️   TOTAL: 24 assertions
 ✅  PASSED: 20 assertions
@@ -66,7 +66,7 @@
 ❌  FAILED: 4 assertions
 
 ===== ========== =====
-

Also, the runner is able to return an error code, so that is great if you're working with Continuous Integration.

Documentation

Runner

  • runTests: $[tests [:string]]: The runner function, this executes all tests, show statistics and return a value.
    • .failFast: Fails on the first error found. This works at file scope due to our current way of running tests.
    • .suppress: Suppress panic, this means: this won't terminate your tests, won't return an error code and won't print a panic message.
  • findTests: $[folder :string]: The finder function, this function will look for tests inside the relative folder. The default test pattern is "test*.art".
    • .thatMatches :string: Defines what is a test-file via a kind-of glob pattern. Use a * as spliter.
      • Obs.: That is a kind-of glob pattern, not a real one. So just use one and only one * to split the pre and suffix.

Tests

  • test: $[description :string, testCase :block]: The test case itself, you need to pass a clear description to it, And the logic that you're trying to assert.
    • .prop: Indicates that a test is property-based.
    • .skip :logical: Skips tests for some condition. If none condition is given, this will just skip the test.
    • .static: :block: Defines what will and what won't be evaluated.
    • .static: :logical: Disable runtime evaluation, and forces static display.
  • assert: $[condition :block]: A function that is only available inside the test case, makes an assertion given the condition.
  • suite: $[description :string tests :block]: Visually groups tests together.

Warning
Never import this lib as .lean, or this will break the current code. This happens due to the nature of Arturo (being concatenative), and the way we importings are working right now. This may change in future.


Background photo on "At a Glance" by Jack Anstey on Unsplash

  -
  
  2
Version
1.1.2Latest
License
MIT

Executable?
No
Requires
Arturo > 0.9.83

Packager

The official package registry for the Arturo programming language

Recently updated

  -
  
  1

Feature-rich ASCII table generator for the terminal

Packager

The official package registry for the Arturo programming language

Recently updated

  -
  
  1

Chess-aware custom types, FEN/PGN parsing & more

  -
  
  5

Feature-rich ASCII table generator for the terminal

  -
  
  7

A minimalistic code editor, inspired by Monaco/VSCode, based on Ace & written in Arturo

  -
  
  9

A minimalistic code editor, inspired by Monaco/VSCode, based on Ace & written in Arturo

  -
  
  7

A batteries-included, supercharged & customizable, string validation library for Arturo

  -
  
  8

A batteries-included, supercharged & customizable, string validation library for Arturo

  -
  
  2

Claude.ai API client for Arturo

  -
  
  4

Claude.ai API client for Arturo

  -
  
  4

MIME content type registry & recognition

  -
  
  4

MIME content type registry & recognition

  -
  
  1

A wrapper for using mermaid in Arturo's webview

          

Arturo Programming Language
Copyright © 2019-2024 Yanis Zafirópulos

Website built and generated using Arturo + Webize. Running on DigitalOcean.
Source code licensed under MIT. Website content licensed under CC BY NC SA 4.0.

  

19 packages found

  -
  
  5

Arturo VM Bytecode assembler

  

20 packages found

  -
  
  5

Arturo VM Bytecode assembler

  -
  
  2

Claude.ai API client for Arturo

  -
  
  4

Claude.ai API client for Arturo

  -
  
  7

A minimalistic code editor, inspired by Monaco/VSCode, based on Ace & written in Arturo

  -
  
  1

Chess-aware custom types, FEN/PGN parsing & more

  -
  
  9

A minimalistic code editor, inspired by Monaco/VSCode, based on Ace & written in Arturo

  -
  
  151

Portable, Serverless & Lightweight SQLite-based Graph Database in Arturo

  -
  
  153

Portable, Serverless & Lightweight SQLite-based Graph Database in Arturo

  -
  
  1

Feature-rich ASCII table generator for the terminal

  -
  
  5

Feature-rich ASCII table generator for the terminal

  -
  
  7

A batteries-included, supercharged & customizable, string validation library for Arturo

  -
  
  8

A batteries-included, supercharged & customizable, string validation library for Arturo