71b99edd48
* Add rest arg to def This commit applied adds the ability to define the rest parameter of a def command. It does not implement the functionality to expand the rest argument in a user defined def function. The rest argument has to be exactly worded "...rest". Example after this PR is applied: file test.nu ```shell def my_command [ ...rest:int # My rest arg ] { echo 1 2 3 } ``` ```shell > source test.nu > my_command -h Usage: > my_command ...args {flags} Parameters: ...args: My rest arg Flags: -h, --help: Display this help message ``` * Fix space in help on wrong side |
||
---|---|---|
.. | ||
src | ||
Cargo.toml | ||
README.md |
nu-source
Overview
The nu-source
crate contains types and traits used for keeping track of metadata about values being processed.
Nu uses Tag
s to keep track of where a value came from, an AnchorLocation
,
as well as positional information about the value, a Span
.
An AnchorLocation
can be a Url
, File
, or Source
text that a value was parsed from.
The source Text
is special in that it is a type similar to a String
that comes with the ability to be cheaply cloned.
A Span
keeps track of a value's start
and end
positions.
These types make up the metadata for a value and are wrapped up together in a Tagged
struct,
which holds everything needed to track and locate a value.
Nu's metadata system can be seen when reporting errors. In the following example Nu is able to report to the user where the typo of a column originated from.
1 | ls | get typ
| ^^^ did you mean 'type'?
In addition to metadata tracking, nu-source
also contains types and traits
related to debugging, tracing, and formatting the metadata and values it processes.
Other Resources
- Nushell Github Project: Contains all projects in the Nushell ecosystem such as the source code to Nushell as well as website and books.
- Nushell Git Repository: A direct link to the source git repository for Nushell
- Nushell Contributor Book: An overview of topics about Nushell to help you get started contributing to the project.
- Discord Channel