- Aug 26, 2017
-
-
Michael Aaron Murphy authored
There are some breaking changes with this new commit, so existing users of Ion should carefully review these changes. Namely, at the moment the ability to perform argument swapping with the let command isn't functioning, due to some changes to how the assignment parsing happens. I will probably bring this feature back soon, but for now it will not work because the new assignment parsing is evaluating expressions without performing any sort of heap allocations. Each key / value pair are now parsed one at a time, which is what made it possible to implement this without any heap allocations. It is also the cause of the breaking change with swapping values. It also causes another breaking change: you can't evaluate an array and have each element in the array distributed to arguments on the left hand side. Instead, your arguments should be properly separated by spaces. When an array is detected, then whichever variable corresponds on the left hand side will receive the entire array and be initialized as an array, unless otherwise specified. But what we have now gained are a significant degree of flexibility in mixing arrays among variables, among specifying types to enable some type checking. Type checking is currently very limited though, but will soon encompass all of the following: - [] - str - str[] - int - int[] - bool - bool[] - float - float[] At some point, this may even be expanded to also support: - int128 - float128 - uint - uint128 There's also a question of whether we should roll back prior assignments when an assignment fails. Currently, I just have the behavior set to retain prior successful assignments, but cancelling all future assignments, should there be an error with setting values, such as an invalid type. let a:str b c = [one two three] for five The above should cause a type error because first variable demands to be a string and not an array. The b and c variables are thus not set at all.
-
- Aug 23, 2017
-
-
Michael Aaron Murphy authored
- We now have a setup.ion script for performing more advanced setup/installations. - If the documentation is installed, it is accessible via the ion-docs builtin. - This requires that the user specifies a BROWSER variable - Fixed a bug with the quote terminator
-
- Aug 17, 2017
-
-
- Aug 02, 2017
-
-
Michael Aaron Murphy authored
Forgot to add this to the last commit, so this is the cause of the error
-
Michael Aaron Murphy authored
Also enables background functions, but there's an issue with the shell hanging when a function is sent to te background
-
Michael Aaron Murphy authored
-
- Jul 31, 2017
-
-
Michael Aaron Murphy authored
-
- Jul 30, 2017
-
-
Michael Aaron Murphy authored
-
- Jul 29, 2017
-
-
Michael Aaron Murphy authored
-
- Jul 28, 2017
-
-
Michael Aaron Murphy authored
-
Michael Aaron Murphy authored
-
Michael Aaron Murphy authored
-
Hunter Goldstein authored
-
- Jul 27, 2017
-
-
- Jul 21, 2017
-
-
* Range syntax now acts appropriately for inclusive(...) and exclusive(..) * added braces tests to examples
-
- Jul 19, 2017
-
-
Hunter Goldstein authored
-
- Jul 18, 2017
-
-
Danny Rosseau authored
Updated statement logic for comments so they must be preceded by whitespace or at the start of a line
-
Danny Rosseau authored
-
- Jul 17, 2017
-
-
Danny Rosseau authored
-
Michael Aaron Murphy authored
-
- Jul 15, 2017
-
-
Michael Aaron Murphy authored
This commit fixes YouTube URLs, and any word that contains a glob character, but has no globbed result
-
- Jul 14, 2017
-
-
Michael Aaron Murphy authored
-
- Jul 13, 2017
-
-
- Jul 01, 2017
-
-
- Jun 29, 2017
-
-
* [WIP] Add a rudimentary match statement to the language * Parsing a match construct now correctly resumes on new line Before, parsing a match construct would depend on all parts of the match statement being in one piece, it can now accept it over multiple invocations of `on_command` * Match statement now forwards all conditions * Most errors are copy / paste errors * Finish comment, remove useless continue * case values are now unquoted string literals * Added example for match * case expressions are now arbitrary commands The values in case branches can now be arbitrary commands that work off set intersection (for now). For example, the case: ``` case @(seq 0 10) ``` would match any number from 0 to 10. Additionally, alternation can be done through an array, like so: ``` match $filetype case ["image/jpeg" "image/png"] ... end end ``` * Remove XXX referencing shorthand
-
- Jun 25, 2017
-
-
Michael Aaron Murphy authored
In order to create an array with the let command, arrays must be wrapped within [ and ] characters, like so: let array = [ 1 2 3 ] let copy_of_array = [ ] Otherwise, if array arguments are passed to let but not wrapped within [ and ] characters, then the array arguments will be joined together as a string, with spaces between each element.
-
- Jun 22, 2017
-
-
Michael Aaron Murphy authored
-
- Jun 20, 2017
-
-
Michael Aaron Murphy authored
Implements the `$len()` and `$len_bytes()` methods for strings, and the `@len()` method for arrays. The len method for arrays returns the number of elements in the array. The len method for strings returns the number of graphemes in the string, whereas the len_bytes method returns the number of bytes the string occupies.
-
- Jun 19, 2017
-
-
Michael Aaron Murphy authored
-
Michael Aaron Murphy authored
-
Michael Aaron Murphy authored
-
Michael Aaron Murphy authored
-
- Jun 18, 2017
-
-
Michael Aaron Murphy authored
-
- Jun 17, 2017
-
-
Michael Aaron Murphy authored
-
- Jun 14, 2017
-
-
The glob parsing has now been moved into the Word Iterator.
-
- Jun 05, 2017
-
-
- Apr 20, 2017
-
-
* Test builtin command * Removed try, returning result * Tests passing * Code improvemnets * Merging fix * Changed test fn name
-
- Apr 12, 2017
-
-
Michael Aaron Murphy authored
-
- Apr 09, 2017
-
-
Michael Aaron Murphy authored
-