## [Simple Form](https://pypi.org/project/simple-form/)
- Pequena biblioteca para facilitar formulários em CLI.
- Clique [**aqui**](https://github.com/Hoyasumii/SimpleForm) para acessar o repositório.
---
## Instalação
- Você pode baixar pelo pip:
```
pip install simple-form
```
---
## Como usar?
- Em seu projeto, importe a biblioteca e crie um objeto:
```python
# Importando a biblioteca
from simpleForm import Form
# Criando um objeto
myForm = Form("Título do meu formulário")
```
- Para adicionar elementos ao formulário, use o método `add`:
```python
# Adicionando um campo de texto
myForm.add(name={
"type": str,
"description": "Digite seu nome"
})
```
- Para executar o formulário, chame a instância do `objeto`:
```python
myForm()
```
- Para acessar os dados do formulário, use a propriedade `values`:
```python
print(myForm.values)
```
---
## O que existe no pacote?
- Classe `Form`
> Classe principal, responsável por criar o formulário e executá-lo.
- Pacote `scripts`
> Pacote com scripts que são utilizados para simplificar a criação da classe principal, entretanto que podem ser úteis em alguns casos, mesmo que específicos.
---
## Conhecendo a classe `Form`
- A classe `Form` funciona de uma maneira que seu construtor recebe as informações gerais do futuro formulário, e que a criação dos campos se dá através do método `add`. Para executar o formulário, basta chamar a instância do objeto como função(`__call__`).
---
## Métodos e propriedades disponíveis para uso
#### 1. `__init__`(`title`: `str`, `separator`: `str`, `separatorSize`: `int`)
- Instancia a classe `Form`.
#### 2. `add`(`**kwargs`)
- Adiciona uma quantidade indeterminada de campos ao formulário.
- Clique [**aqui**](#o-que-cada-elemento-a-ser-adicionado-pode-e-precisa-ter) para entender o que cada elemento a ser adicionado pode e precisa ter.
#### 3. `__call__`()
- Executa o formulário.
#### 4. `values` -> `dict`
- Retorna um dicionário com os valores dos campos do formulário.
---
## O que cada elemento a ser adicionado pode e precisa ter?
- Cada elemento a ser adicionado precisa ser um dicionário, e precisa ter os seguintes atributos:
- Caso um determinado elemento possua uma exclamação(`!`) ao lado de seu nome, significa que ele é obrigatório.
#### 1. `type`!
- É o tipo de dado que o elemento vai receber. Pode ser `str`, `int`, `float`, `bool`, e `iteráveis`.
- Se for `bool`, o elemento vai receber um valor booleano, e o usuário usará o teclado para definir `True` ou `False`, sendo esses representados por `y` e `n`, respectivamente.
- Se for `iteráveis`, o elemento vai receber uma lista de valores, e o usuário vai poder escolher um deles.
#### 2. `description`!
- É a descrição do elemento, que vai ser mostrada ao usuário.
#### 3. `default`
- Exclusivo para type `str` e `numerais`.
- É o valor padrão do elemento, que vai ser usado caso o usuário não digite nada.
#### 4. `min`
- Exclusivo para type `str` e `numerais`.
- É o valor mínimo que o elemento pode receber. Caso o `min` exista num input de `str`, ele vai ser usado para definir o tamanho mínimo da string. E caso seja um numeral(`int` e `float`), ele vai ser usado para definir o valor mínimo que o elemento pode receber.
#### 5. `max`
- Exclusivo para type `str` e `numerais`.
- É o valor máximo que o elemento pode receber. Caso o `max` exista num input de `str`, ele vai ser usado para definir o tamanho máximo da string. E caso seja um numeral(`int` e `float`), ele vai ser usado para definir o valor máximo que o elemento pode receber.
#### 6. `validate`
- Exclusivo para type `str`.
- É uma expressão regular que vai ser usada para validar o valor do elemento. Caso o valor não seja válido, o usuário vai ter que digitar novamente.
#### 7. `options`
- Exclusivo para type `iteráveis`, ou seja, tipos que possuem o método `__iter__` embutido ao tipo, como por exemplo, `list`, `tuple`, `set` e `dict`.
- É uma lista de valores que o usuário vai poder escolher.
- Na hora de mostrar as opções para o usuário, o programa vai mostrar o índice de cada valor, e o usuário vai ter que digitar o índice do valor que ele quer.
---
## Exemplo
```python
# Importando a biblioteca
from simpleForm import Form
# Criando o formulário
x = Form("Olá, formulário!", spacing=4)
# Adicionando os campos
x.add(
# Campo Nome
name={
"type": str,
"description": "Nome",
"default": "John Doe",
"min": 3,
"max": 10
},
# Campo Feliz
happy={
"type": bool,
"description": "Feliz"
},
# Campo Idade
age={
"type": int,
"description": "Idade",
"min": 1,
"max": 100,
"default": 18
},
# Campo Ação (Iteráveis exceto dicionários)
action={
"type": list,
"description": "Escolha a ação",
"options": [
"Pular",
"Correr",
"Andar"
],
},
# Campo Email
email={
"type": str,
"description": "Email",
"default": "account@email.com",
"validate": r"^[a-zA-Z0-9\._]{4,}@\w.{2,}\w{2,}$"
},
# Campo Opção (Dicionário)
option={
"type": dict,
"description": "Opção",
"options": {
"Pular": "E pulou",
"Correr": "E correu",
"Andar": "E andou"
}
}
)
# Chamando o formulário
x()
# Imprimindo os valores
print(x.values)
```
Raw data
{
"_id": null,
"home_page": "https://github.com/Hoyasumii/SimpleForm",
"name": "simple-form",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": null,
"author": "Alan Reis Anjos",
"author_email": "alanreisanjo@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/ed/91/51d424e367f39086fa2bdc8cd2fc68376bf71318580a98b2a1c969814a60/simple-form-1.4.tar.gz",
"platform": null,
"description": "## [Simple Form](https://pypi.org/project/simple-form/)\n- Pequena biblioteca para facilitar formul\u00e1rios em CLI.\n- Clique [**aqui**](https://github.com/Hoyasumii/SimpleForm) para acessar o reposit\u00f3rio.\n---\n## Instala\u00e7\u00e3o\n- Voc\u00ea pode baixar pelo pip:\n```\npip install simple-form\n```\n---\n## Como usar?\n- Em seu projeto, importe a biblioteca e crie um objeto: \n```python\n# Importando a biblioteca\nfrom simpleForm import Form\n\n# Criando um objeto\nmyForm = Form(\"T\u00edtulo do meu formul\u00e1rio\")\n```\n- Para adicionar elementos ao formul\u00e1rio, use o m\u00e9todo `add`:\n```python\n# Adicionando um campo de texto\nmyForm.add(name={\n \"type\": str,\n \"description\": \"Digite seu nome\"\n})\n```\n- Para executar o formul\u00e1rio, chame a inst\u00e2ncia do `objeto`:\n```python\nmyForm()\n```\n- Para acessar os dados do formul\u00e1rio, use a propriedade `values`:\n```python\nprint(myForm.values)\n```\n---\n## O que existe no pacote?\n- Classe `Form`\n> Classe principal, respons\u00e1vel por criar o formul\u00e1rio e execut\u00e1-lo.\n- Pacote `scripts`\n> Pacote com scripts que s\u00e3o utilizados para simplificar a cria\u00e7\u00e3o da classe principal, entretanto que podem ser \u00fateis em alguns casos, mesmo que espec\u00edficos.\n---\n## Conhecendo a classe `Form`\n- A classe `Form` funciona de uma maneira que seu construtor recebe as informa\u00e7\u00f5es gerais do futuro formul\u00e1rio, e que a cria\u00e7\u00e3o dos campos se d\u00e1 atrav\u00e9s do m\u00e9todo `add`. Para executar o formul\u00e1rio, basta chamar a inst\u00e2ncia do objeto como fun\u00e7\u00e3o(`__call__`).\n---\n## M\u00e9todos e propriedades dispon\u00edveis para uso\n#### 1. `__init__`(`title`: `str`, `separator`: `str`, `separatorSize`: `int`)\n- Instancia a classe `Form`.\n#### 2. `add`(`**kwargs`)\n- Adiciona uma quantidade indeterminada de campos ao formul\u00e1rio.\n- Clique [**aqui**](#o-que-cada-elemento-a-ser-adicionado-pode-e-precisa-ter) para entender o que cada elemento a ser adicionado pode e precisa ter.\n#### 3. `__call__`()\n- Executa o formul\u00e1rio.\n#### 4. `values` -> `dict`\n- Retorna um dicion\u00e1rio com os valores dos campos do formul\u00e1rio.\n---\n## O que cada elemento a ser adicionado pode e precisa ter?\n- Cada elemento a ser adicionado precisa ser um dicion\u00e1rio, e precisa ter os seguintes atributos:\n- Caso um determinado elemento possua uma exclama\u00e7\u00e3o(`!`) ao lado de seu nome, significa que ele \u00e9 obrigat\u00f3rio.\n#### 1. `type`!\n- \u00c9 o tipo de dado que o elemento vai receber. Pode ser `str`, `int`, `float`, `bool`, e `iter\u00e1veis`.\n- Se for `bool`, o elemento vai receber um valor booleano, e o usu\u00e1rio usar\u00e1 o teclado para definir `True` ou `False`, sendo esses representados por `y` e `n`, respectivamente.\n- Se for `iter\u00e1veis`, o elemento vai receber uma lista de valores, e o usu\u00e1rio vai poder escolher um deles.\n#### 2. `description`!\n- \u00c9 a descri\u00e7\u00e3o do elemento, que vai ser mostrada ao usu\u00e1rio.\n#### 3. `default`\n- Exclusivo para type `str` e `numerais`.\n- \u00c9 o valor padr\u00e3o do elemento, que vai ser usado caso o usu\u00e1rio n\u00e3o digite nada.\n#### 4. `min`\n- Exclusivo para type `str` e `numerais`.\n- \u00c9 o valor m\u00ednimo que o elemento pode receber. Caso o `min` exista num input de `str`, ele vai ser usado para definir o tamanho m\u00ednimo da string. E caso seja um numeral(`int` e `float`), ele vai ser usado para definir o valor m\u00ednimo que o elemento pode receber.\n#### 5. `max`\n- Exclusivo para type `str` e `numerais`.\n- \u00c9 o valor m\u00e1ximo que o elemento pode receber. Caso o `max` exista num input de `str`, ele vai ser usado para definir o tamanho m\u00e1ximo da string. E caso seja um numeral(`int` e `float`), ele vai ser usado para definir o valor m\u00e1ximo que o elemento pode receber.\n#### 6. `validate`\n- Exclusivo para type `str`.\n- \u00c9 uma express\u00e3o regular que vai ser usada para validar o valor do elemento. Caso o valor n\u00e3o seja v\u00e1lido, o usu\u00e1rio vai ter que digitar novamente.\n#### 7. `options`\n- Exclusivo para type `iter\u00e1veis`, ou seja, tipos que possuem o m\u00e9todo `__iter__` embutido ao tipo, como por exemplo, `list`, `tuple`, `set` e `dict`.\n- \u00c9 uma lista de valores que o usu\u00e1rio vai poder escolher.\n- Na hora de mostrar as op\u00e7\u00f5es para o usu\u00e1rio, o programa vai mostrar o \u00edndice de cada valor, e o usu\u00e1rio vai ter que digitar o \u00edndice do valor que ele quer.\n---\n## Exemplo\n```python\n# Importando a biblioteca\nfrom simpleForm import Form\n\n# Criando o formul\u00e1rio\nx = Form(\"Ol\u00e1, formul\u00e1rio!\", spacing=4)\n\n# Adicionando os campos\nx.add(\n # Campo Nome\n name={\n \"type\": str,\n \"description\": \"Nome\",\n \"default\": \"John Doe\",\n \"min\": 3,\n \"max\": 10\n }, \n # Campo Feliz\n happy={\n \"type\": bool,\n \"description\": \"Feliz\"\n }, \n # Campo Idade\n age={\n \"type\": int,\n \"description\": \"Idade\",\n \"min\": 1,\n \"max\": 100,\n \"default\": 18\n }, \n # Campo A\u00e7\u00e3o (Iter\u00e1veis exceto dicion\u00e1rios)\n action={\n \"type\": list,\n \"description\": \"Escolha a a\u00e7\u00e3o\",\n \"options\": [\n \"Pular\",\n \"Correr\",\n \"Andar\"\n ],\n },\n # Campo Email\n email={\n \"type\": str,\n \"description\": \"Email\",\n \"default\": \"account@email.com\",\n \"validate\": r\"^[a-zA-Z0-9\\._]{4,}@\\w.{2,}\\w{2,}$\"\n }, \n # Campo Op\u00e7\u00e3o (Dicion\u00e1rio)\n option={\n \"type\": dict,\n \"description\": \"Op\u00e7\u00e3o\",\n \"options\": {\n \"Pular\": \"E pulou\",\n \"Correr\": \"E correu\",\n \"Andar\": \"E andou\"\n }\n }\n)\n\n# Chamando o formul\u00e1rio\nx()\n\n# Imprimindo os valores\nprint(x.values)\n```\n",
"bugtrack_url": null,
"license": "GPL-3.0",
"summary": "Pequena biblioteca para facilitar formul\u00e1rios em CLI com Python",
"version": "1.4",
"project_urls": {
"Homepage": "https://github.com/Hoyasumii/SimpleForm"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "ed9151d424e367f39086fa2bdc8cd2fc68376bf71318580a98b2a1c969814a60",
"md5": "18da43801d0c22a87127c15da011df0d",
"sha256": "58fb2463d3c0fcd9010f1a723989170bc0664c07083778cb09ab48cea2957a74"
},
"downloads": -1,
"filename": "simple-form-1.4.tar.gz",
"has_sig": false,
"md5_digest": "18da43801d0c22a87127c15da011df0d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 20025,
"upload_time": "2024-04-01T05:30:42",
"upload_time_iso_8601": "2024-04-01T05:30:42.970101Z",
"url": "https://files.pythonhosted.org/packages/ed/91/51d424e367f39086fa2bdc8cd2fc68376bf71318580a98b2a1c969814a60/simple-form-1.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-04-01 05:30:42",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Hoyasumii",
"github_project": "SimpleForm",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "simple-form"
}