[](https://github.com/kaz-utashiro/greple-frame/actions?workflow=test) [](https://metacpan.org/release/App-Greple-frame)
# NAME
App::Greple::frame - Greple frame output module
# SYNOPSIS
greple -Mframe --style=fold -- ...
greple -Mframe --frame ...
# VERSION
Version 1.04
# DESCRIPTION
Greple -Mframe module provide a capability to put surrounding frames
for each blocks.
`top`, `middle` and `bottom` frames are printed for blocks.
By default **--join-blocks** option is enabled to collect consecutive
lines into a single block. If you don't like this, override it by
**--no-join-blocks** option.
# MODULE OPTIONS
Options placed between **-Mframe** and **--** belong to the module, so
their names do not conflict with the options of **greple** or of other
modules.
greple -Mframe --style=cols -- pattern file
greple -Mframe --style=fold --width=80 -- pattern file
When **--** is given, everything before it must be a module option, so
`-Mframe --frame pattern -- file` is an error. Options of
**greple** and the pattern come after it.
- **--style**=_name_
Select the output style. An unknown name is an error.
- **fold**
Set frame and fold long lines with frame-friendly prefix string.
Folding width is taken from the terminal. Or you can specify the
width with the **--width** option.
- **cols**
Output results in multi-column format to fit the width of the
terminal. The number of columns is automatically calculated from the
terminal width.
- **pages**
Output results in multi-column and paginated format.
- **--width**=_n_
Output width. It takes the place of the terminal width, and accepts
RPN as described in ["CONFIGURATION"](#configuration).
The next options mean the same as the options of the same name of
[App::ansicolumn](https://metacpan.org/pod/App%3A%3Aansicolumn) and [App::ansifold](https://metacpan.org/pod/App%3A%3Aansifold).
- **--pane**=_n_
Number of columns of **cols** and **pages** styles. By default, as many
columns as fit in the output width with text of 80 columns.
- **--pane-width**=_n_
Width of a column of **cols** and **pages** styles, including the border.
The number of columns is calculated from it unless **--pane** is given,
and the columns are not widened to the output width.
**--pane** and **--pane-width** accept RPN, starting with the output
width.
- **--boundary**=`none`|`word`|`space`
Where to fold long lines.
- **--linebreak**=`none`|`all`|`runin`|`runout`
Line-break mode.
- **--runin**=_n_, **--runout**=_n_, **--runlen**=_n_
Run-in and run-out width. **--runlen** sets both, and **--runin** and
**--runout** take priority over it. **cols** and **pages** styles keep the
run-in width free in the column, so the text area gets shorter.
**cols** and **pages** styles use `--boundary=none`,
`--linebreak=all` and `--runlen=0` by default. **fold** style gives
them to **ansifold** only when they are specified.
- **--config** _name_=_value_,...
Set parameters of ["CONFIGURATION"](#configuration).
# COMMAND OPTIONS
These options work as options of the **greple** command, and do not need
**--**. They are kept for compatibility and may be removed in the
future. Use ["MODULE OPTIONS"](#module-options).
- **--frame**
Same as **--style=fold**.
- **--frame-cols**
Same as **--style=cols**.
- **--frame-pages**
Same as **--style=pages**.
- **--set-frame-width**=_#_
Same as **--width**. You have to put this option before **--frame**
option.
# CONFIGURATION
Module parameters are set with [Getopt::EX::Config](https://metacpan.org/pod/Getopt%3A%3AEX%3A%3AConfig) by the **config**
function. The **--config** module option sets the same parameters.
The **set** function does the same as **config**. It is kept only for
compatibility and will be removed in the future.
- **config**(**width**=_n_)
Set terminal width to _n_. Use like this:
greple -Mframe::config(width=80) ...
greple -Mframe::config=width=80 ...
If non-digit character is found in the value part, it is considered as
a Reverse Polish Notation, starting terminal width pushed on the
stack. RPN `2/3-` means `terminal-width / 2 - 3`.
You can use like this:
greple -Mframe::config=width=2/3- --frame --uc '(\w+::)+\w+' --git | ansicolumn -PC2
With **cols** and **pages** styles, the whole output has this width, and
the width and the number of the columns are calculated from it.
An unknown parameter is an error.
- **config**(**style**=_name_)
- **config**(**pane**=_n_), **config**(**pane\_width**=_n_)
- **config**(**boundary**=_name_), **config**(**linebreak**=_name_)
- **config**(**runin**=_n_), **config**(**runout**=_n_), **config**(**runlen**=_n_)
Same as the module options of the same name.
# SEE ALSO
[App::ansifold](https://metacpan.org/pod/App%3A%3Aansifold)
[App::ansicolumn](https://metacpan.org/pod/App%3A%3Aansicolumn)
[Math::RPN](https://metacpan.org/pod/Math%3A%3ARPN)
# AUTHOR
Kazumasa Utashiro
# LICENSE
Copyright 2022-2026 Kazumasa Utashiro.
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.