Metadata-Version: 2.4
Name: framify
Version: 0.1.0
Summary: Dead simple terminal framing, tables and underlining – with proper wide‑character support.
Author-email: itz_rival <itz_rival@example.com>
License: MIT
Project-URL: Homepage, https://github.com/itz_rival/framify
Project-URL: Repository, https://github.com/itz_rival/framify
Keywords: terminal,cli,box,table,underline,tui
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: wcwidth
Dynamic: license-file

# framify 🖼️

Dead simple terminal framing, tables and underlining – with proper wide‑character support.

## Why?

Building CLI tools often means manually aligning borders and tables, counting spaces for CJK characters or emoji. **framify** does the boring geometry for you, so you can focus on content.

## Install

```bash
pip install framify
```

Quick examples

1. Box

```python
from framify import frame

print(frame("Hello\nWorld"))
```

```
┌───────┐
│ Hello │
│ World │
└───────┘
```

2. Box with title and padding

```python
print(frame("Success!", style="double", padding=2, title=" STATUS "))
```

3. Table

```python
from framify import table

data = [
    ["Alice", "32", "Engineer"],
    ["Bob", "28", "Designer"],
]
print(table(data, headers=["Name", "Age", "Job"], style="rounded"))
```

4. Underline

```python
from framify import underline

print(underline("Important"))
```

Style gallery

· single (default)
· double
· ascii
· rounded
· heavy

All handle CJK and emoji widths correctly thanks to wcwidth.

API

frame(text, *, style='single', padding=1, title=None, align='left')

Wrap multi‑line text in a box.

table(data, *, headers=None, style='single', col_align=None)

Format a list of lists as a table.

underline(text, char='─')

Return underlined text.

overline(text, char='─')

Return overlined text.

strikethrough(text, char='─')

Visual strikethrough (line below text).

License

MIT © itz_rival
