Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jaynetics/repper
Regexp pretty printer and formatter for Ruby
https://github.com/jaynetics/repper
code-formatter formatter pretty-printer regexp regular-expression ruby
Last synced: 3 months ago
JSON representation
Regexp pretty printer and formatter for Ruby
- Host: GitHub
- URL: https://github.com/jaynetics/repper
- Owner: jaynetics
- License: mit
- Created: 2022-05-09T20:43:12.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-05-14T10:34:03.000Z (over 1 year ago)
- Last Synced: 2024-10-18T11:29:16.841Z (4 months ago)
- Topics: code-formatter, formatter, pretty-printer, regexp, regular-expression, ruby
- Language: Ruby
- Homepage:
- Size: 49.8 KB
- Stars: 16
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Repper
[![Gem Version](https://badge.fury.io/rb/repper.svg)](http://badge.fury.io/rb/repper)
[![Build Status](https://github.com/jaynetics/repper/actions/workflows/main.yml/badge.svg)](https://github.com/jaynetics/repper/actions)
[![Coverage](https://codecov.io/gh/jaynetics/repper/branch/main/graph/badge.svg?token=4C6EKINE4B)](https://codecov.io/gh/jaynetics/repper)Repper is a regular expression pretty printer and formatter for Ruby.
## Installation
`gem install repper`, or add it to your `Gemfile`.
## Usage
`repper` can be integrated into the REPL (e.g. IRB) through core extensions for Regexp pretty-printing, integrated into editors to format Regexps, or called manually.
There are also a few customization options.
### REPL integration
#### Via Regexp#inspect (recommended)
`require 'repper/core_ext/regexp'` in your `~/.irbrc` or `~/.pryrc` to override `Regexp#inspect` and automatically use `repper` to display Regexps:
#### Via Kernel#pp
Alternatively, `require 'repper/core_ext/kernel'` to make the `pp` command give nicer output for Regexps (which will look like above by default).
### Editor integration
Use [vscode-repper](https://github.com/jaynetics/vscode-repper) to format Regexps in VSCode.
![vscode-repper](https://user-images.githubusercontent.com/10758879/170892739-e2f408f2-e239-4b13-8d28-c14fb7a9dbb9.gif)
### Using Repper manually
```ruby
Repper.call(/foo/) # pretty prints the given Regexp and returns nil
Repper.render(/foo/) # returns the pretty print String
```### Customization
#### Customizing the format
Multiple formats are available out of the box:
- `:annotated` is the default, verbose format, shown above
- `:inline` adds only colorization and does not restructure the Regexp
- `:structured` is like `:annotated`, just without annotations
- `:x` (or `:extended`) returns a lightly formatted but equivalent Regexp
- this format is used for the repper executable and [vscode-repper](https://github.com/jaynetics/vscode-repper)You can change the format globally:
```ruby
Repper.format = :structured
```Or pick a format on a case-by-case basis:
Or create your own format:
```ruby
require 'csv'csv_format = ->(tokens, _theme) { tokens.map(&:text).to_csv }
Repper.render(/re[\p{pe}\r]$/, format: csv_format)
=> "/,re,[,\\p{pe},\\r,],$,/\n"
```#### Customizing the colors
The color theme can also be set globally or passed on call:
```ruby
Repper.theme = :monokai # a nicer theme, if the terminal supports it
``````ruby
Repper.call(/foo/, theme: nil) # render without colors
```Or create your own theme - you can use all colors supported by the [`rainbow` gem](https://github.com/sickill/rainbow).
```ruby
Repper.theme = {
group: :green,
set: :red,
default: :white,
}
```## Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/jaynetics/repper.
## License
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).