Skip to content

Commit

Permalink
Minor readme improvments (#442)
Browse files Browse the repository at this point in the history
* chore: move the release process to its own file

* chore: remove extra whitespace in rust code block

* chore: better with a title :) !
  • Loading branch information
tkr-sh authored Dec 1, 2024
1 parent 727becf commit 837d5bf
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 61 deletions.
94 changes: 33 additions & 61 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,48 +25,48 @@ To achieve those, **Logos**:
## Example

```rust
use logos::Logos;
use logos::Logos;

#[derive(Logos, Debug, PartialEq)]
#[logos(skip r"[ \t\n\f]+")] // Ignore this regex pattern between tokens
enum Token {
// Tokens can be literal strings, of any length.
#[token("fast")]
Fast,
#[derive(Logos, Debug, PartialEq)]
#[logos(skip r"[ \t\n\f]+")] // Ignore this regex pattern between tokens
enum Token {
// Tokens can be literal strings, of any length.
#[token("fast")]
Fast,

#[token(".")]
Period,
#[token(".")]
Period,

// Or regular expressions.
#[regex("[a-zA-Z]+")]
Text,
}
// Or regular expressions.
#[regex("[a-zA-Z]+")]
Text,
}

fn main() {
let mut lex = Token::lexer("Create ridiculously fast Lexers.");
fn main() {
let mut lex = Token::lexer("Create ridiculously fast Lexers.");

assert_eq!(lex.next(), Some(Ok(Token::Text)));
assert_eq!(lex.span(), 0..6);
assert_eq!(lex.slice(), "Create");
assert_eq!(lex.next(), Some(Ok(Token::Text)));
assert_eq!(lex.span(), 0..6);
assert_eq!(lex.slice(), "Create");

assert_eq!(lex.next(), Some(Ok(Token::Text)));
assert_eq!(lex.span(), 7..19);
assert_eq!(lex.slice(), "ridiculously");
assert_eq!(lex.next(), Some(Ok(Token::Text)));
assert_eq!(lex.span(), 7..19);
assert_eq!(lex.slice(), "ridiculously");

assert_eq!(lex.next(), Some(Ok(Token::Fast)));
assert_eq!(lex.span(), 20..24);
assert_eq!(lex.slice(), "fast");
assert_eq!(lex.next(), Some(Ok(Token::Fast)));
assert_eq!(lex.span(), 20..24);
assert_eq!(lex.slice(), "fast");

assert_eq!(lex.next(), Some(Ok(Token::Text)));
assert_eq!(lex.slice(), "Lexers");
assert_eq!(lex.span(), 25..31);
assert_eq!(lex.next(), Some(Ok(Token::Text)));
assert_eq!(lex.slice(), "Lexers");
assert_eq!(lex.span(), 25..31);

assert_eq!(lex.next(), Some(Ok(Token::Period)));
assert_eq!(lex.span(), 31..32);
assert_eq!(lex.slice(), ".");
assert_eq!(lex.next(), Some(Ok(Token::Period)));
assert_eq!(lex.span(), 31..32);
assert_eq!(lex.slice(), ".");

assert_eq!(lex.next(), None);
}
assert_eq!(lex.next(), None);
}
```

For more examples and documentation, please refer to the
Expand Down Expand Up @@ -105,35 +105,7 @@ Please use the
[pull requests](https://github.com/maciejhirsz/logos/pulls) tabs,
when appropriate.

### Releasing a new version

> [!NOTE]
>
> This section is only useful to **Logos**' maintainers.
First, make sure you are logged-in https://crates.io with: `cargo login`.
If you don't have write access to **Logos**' crates, you can still
perform steps 1-4, and ask a maintainer with accesses to perform step 5.

This project uses `cargo-release` to publish all packages with more ease.
Note that, by default, every command runs in *dry mode*, and you need to append `--execute`
to actually perform the action.

Here are the following steps to release a new version:

1. create a branch `release-x.y.z` from the `master` branch;
2. run and commit `cargo release version --workspace <LEVEL>`;
3. run and commit `cargo release replace --workspace`;
4. push your branch and create a pull request;
5. and, once your branch was merged to `master`, run the following:
```bash
cargo release publish --package logos-codegen
cargo release publish --package logos-derive
cargo release publish --package logos-cli
cargo release publish --package logos
```

And voilà!
To release a new version, follow the [RELEASE-PROCESS](RELEASE-PROCESS.md)

## License

Expand Down
25 changes: 25 additions & 0 deletions RELEASE-PROCESS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Release process

First, make sure you are logged-in https://crates.io with: `cargo login`.
If you don't have write access to **Logos**' crates, you can still
perform steps 1-4, and ask a maintainer with accesses to perform step 5.

This project uses `cargo-release` to publish all packages with more ease.
Note that, by default, every command runs in *dry mode*, and you need to append `--execute`
to actually perform the action.

Here are the following steps to release a new version:

1. create a branch `release-x.y.z` from the `master` branch;
2. run and commit `cargo release version --workspace <LEVEL>`;
3. run and commit `cargo release replace --workspace`;
4. push your branch and create a pull request;
5. and, once your branch was merged to `master`, run the following:
```bash
cargo release publish --package logos-codegen
cargo release publish --package logos-derive
cargo release publish --package logos-cli
cargo release publish --package logos
```

And voilà!

0 comments on commit 837d5bf

Please sign in to comment.