Skip to main content

Create launchable HTML form windows in Markdown

Project description

Checkmark

Checkmark lets you quickly and easily set up a way for you or any other user to submit data to your program through an HTML form. Using a Markdown-like document, you can specify a plethora of form elements.

Form elements

Example

from checkmark import MarkdownForm

document = """
:[Username](username)
>[Username](username "Ex. @user:domain.tld")
:[Password](password)
>[Password](password "Choose something not too simple.")

<!-- A button that calls the `register` API method. -->
@[Register](register)
"""

form = MarkdownForm(
    title='My Markdown Form',
    document=document
)

# Define a function to be called
# when you press the `Register` button.

@form.api_method
def register(data):
    username = data.get('username', "")
    password = data.get('password', "")

    form.update(data, keys=['username', 'password'])

    print(f'Successfully registered as {username}')
    print(f'Your password is {"*" * len(password)}.')

form.start()

You can try it out with the example below.

# Account

## Registration

:[Username](username)
>[Ex. @michael:duckduckgo.com](username "@user:domain.tld")<br>
:[Password](password)
>[password123](password "Choose something not too simple.")<br>
:[Email](email)
>[Ex. user@domain.tld](email "So that you can confirm your account.")<br>

[x] [Sign me up to the newsletter](newsletter)

>>[My hobbies are ...](hobbies "What do you like to do during your free time?")

@[Register](register "Register new account.")


## Settings

## layout:
* [IRC](irc)
* [Modern](modern)
* [Message bubbles](bubbles)

## language:
- [Swedish](se)
- [English](en)
- [French](fr)

@[Save settings](save_settings)

Rules

Inlines

Inline elements can be written anywhere on the line. As long as the pattern is matched, it should create an element in the right place.

Link

This is not a custom element of its own. It's a description of how the standard Markdown link format is used within other custom elements.

In any and all definitions, if something looks like a Markdown link, it is a Markdown link and should be structured like one. It follows the same rules as regular Markdown and so the title is optional.

The title is always used as the title argument for any Checkmark element in which it is specified.

[Text](url "Title.")

Label

Labels are simply aesthetic and don't affect the functionality of the form. The URL is only used to define the for argument.

:[Super Label](best-label)

Text & TextArea

Text uses one > as prefix and TextArea uses two. The text of the link is used as the placeholder argument.

TextArea
>>[My hobbies are ...](hobbies "What do you like to do during your free time?")
Text
>[Username](username "Ex. @user:domain.tld")

Checkbox

[x] [I understand how checkboxes work.](understood)

Button

Call one of the provided API methods using a button, with the URL as the function name.

@[Log in](log_in)

Lists

A list has a variable name and the possible values for it. The variable name is defined by a preceding heading's Markdown link URL. The URLs of the entries are used for the values. Any empty lines terminate the list, whether between entries or the entries and the heading.

Radio Buttons

Radio button entries use * as prefix.

## [Message layout](layout):
* [IRC](irc)
* [Modern](modern)
* [Message bubbles](bubbles)

Dropdown Menu

Dropdown menu entries use - as prefix.

## [Language](language):
- [Swedish](se)
- [English](en)
- [French](fr)

Extensible List (Not yet implemented)

I will be adding lists that allow you to define multiple types of elements per entry and with a + button, you will be able to add new multi-element entries into the list.

The future syntax will look a little something like this:

# advanced-dns:
+ ## type:
  - [A Record](a)
  - [CNAME Record](cname)
  - [TXT Record](txt)
+ >[Host](host)
+ >[Port](port)
+ [x] [Backward compatible](backcomp)

This list would include a dropdown menu, two text inputs, and a checkbox. I'll describe it more in detail once I get it implemented.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

checkmark-1.7.4.tar.gz (23.5 kB view details)

Uploaded Source

Built Distribution

checkmark-1.7.4-py3-none-any.whl (23.5 kB view details)

Uploaded Python 3

File details

Details for the file checkmark-1.7.4.tar.gz.

File metadata

  • Download URL: checkmark-1.7.4.tar.gz
  • Upload date:
  • Size: 23.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.12 CPython/3.10.1 Linux/5.10.93-1-MANJARO

File hashes

Hashes for checkmark-1.7.4.tar.gz
Algorithm Hash digest
SHA256 6192d1606c01bb888973018f5ef87c59e2ec87aac61c07202a63bcca65fe5232
MD5 e7399b8777263bf427ac8a8df3f2e375
BLAKE2b-256 e0c1d9727d63fa93853b8c1b321ef95150ddee37c2cc7cad65ec3945d3248fa7

See more details on using hashes here.

File details

Details for the file checkmark-1.7.4-py3-none-any.whl.

File metadata

  • Download URL: checkmark-1.7.4-py3-none-any.whl
  • Upload date:
  • Size: 23.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.12 CPython/3.10.1 Linux/5.10.93-1-MANJARO

File hashes

Hashes for checkmark-1.7.4-py3-none-any.whl
Algorithm Hash digest
SHA256 1332c941e6c09dbd8a95aaa56563fff3443880be41db4e5baf30013627db110d
MD5 87f4e86cda9ad14b50d086bff62af855
BLAKE2b-256 c4025234dc6a95848ebc300b97bfbf955ce4ad0421b53eadccbf9405abdddd6a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page