Metadata-Version: 2.4
Name: my-ask-lib
Version: 0.1.6
Summary: A simple custom input validation utility
Requires-Python: >=3.7
Requires-Dist: rich>=10.0.0
Description-Content-Type: text/markdown

# my-ask-lib

A simple, robust, and beautiful custom input validation utility for Python, built on top of the `rich` library.

เคยไหมที่ต้องคอยเขียนลูป `while True` และ `try-except` ซ้ำๆ ทุกครั้งที่ต้องการรับค่าจากผู้ใช้และตรวจสอบความถูกต้อง? Library ตัวนี้จะช่วยรวบรวมตรรกะเหล่านั้นให้เหลือเพียงการเรียกใช้งานฟังก์ชันเดียว!

---

## ✨ Features

* **Auto-Validation:** ตรวจสอบประเภทข้อมูล (`str`, `int`, `float`, ฯลฯ) ให้อัตโนมัติ
* **Custom Condition:** รองรับการเช็คเงื่อนไขเพิ่มเติมผ่าน Lambda หรือ Function
* **Rich Logging:** แสดงข้อความแจ้งเตือนเมื่อกรอกข้อมูลผิดพลาดอย่างสวยงามด้วย `rich.logging`
* **Empty Check:** ป้องกันการกด Enter ผ่านไปเฉยๆ โดยไม่ได้กรอกข้อมูล (เปิด/ปิด ได้)

---

## 🚀 Installation

ติดตั้งผ่าน pip ได้ง่ายๆ:

```bash
pip install my-ask-lib

```

---

## 🎯 Usage Examples

เรียกใช้งานโดยการนำเข้าฟังก์ชัน `ask` จาก package `my_ask`:

```python
from my_ask import ask

# 1. รับค่าข้อความทั่วไป (ห้ามปล่อยว่าง)
name = ask("Enter your name: ")

# 2. รับค่าตัวเลขจำนวนเต็ม (int) พร้อมดักจับ Format
age = ask("Enter your age: ", type_fn=int)

# 3. รับค่าพร้อมตรวจสอบเงื่อนไข (เช่น อายุต้องห้ามติดลบ)
score = ask(
    prompt="Enter your score (0-100): ",
    type_fn=int,
    validate=lambda x: 0 <= x <= 100,
    error_msg="Score must be between 0 and 100!"
)

# 4. ยอมให้ผู้ใช้กด Enter ผ่านได้ (Allow Empty)
nickname = ask("Enter your nickname (Optional): ", allow_empty=True)

```

---

## ⚙️ Parameters

| Parameter | Type | Default | Description |
| --- | --- | --- | --- |
| `prompt` | `str` | *Required* | ข้อความที่ต้องการแสดงให้ผู้ใช้เห็นตอนรับ Input |
| `type_fn` | `Callable` | `str` | ฟังก์ชันที่ใช้แปลงประเภทข้อมูล เช่น `int`, `float` |
| `validate` | `Callable` | `None` | ฟังก์ชันหรือ Lambda ที่คืนค่าเป็น `True`/`False` เพื่อเช็คเงื่อนไขเพิ่ม |
| `error_msg` | `str` | `None` | ข้อความเตือนที่จะแสดงเมื่อไม่ผ่านเงื่อนไขใน `validate` |
| `allow_empty` | `bool` | `False` | หากเป็น `False` จะไม่ยอมให้ผู้ใช้กด Enter โดยไม่พิมพ์อะไรเลย |

---

## 📝 License

MIT License

```

---

### 💡 คำแนะนำเพิ่มเติม
* สังเกตตรงวิธีพิมพ์เรียกใช้ในส่วนของ Usage ตัวอย่างจะเป็น `from my_ask import ask` (อ้างอิงตามโฟลเดอร์ `src/my_ask` ที่เราจัดไว้ในขั้นตอนแรกสุด)
* อย่าลืมนำไฟล์นี้ไปวางไว้ที่โฟลเดอร์นอกสุดของโปรเจกต์ (`my_ask_lib/`) คู่กับไฟล์ `pyproject.toml` นะครับ จากนั้นตอนคุณ Rebuild รอบหน้า ตัวโปรเจกต์บนหน้าเว็บ PyPI ก็จะมีคำอธิบายนี้ไปโชว์ให้คนอื่นอ่านได้ทันทีครับ!