Skip to main content

Fibonacci Markup Language - where indentation follows the Fibonacci sequence

Project description

FML: Fibonacci Markup Language

A humorous markup language where indentation levels must follow the Fibonacci sequence (0, 1, 1, 2, 3, 5, 8, 13, 21, etc.) — or else!

What is FML?

FML is a markup language that enforces mathematical harmony in your documents by requiring all indentation levels to follow the Fibonacci sequence. If your indentation doesn't match a Fibonacci number, the parser will reject it with a snarky error message.

FML can be used in two modes:

  • Standard mode: Any Fibonacci number indentation is allowed at any point
  • Continuous mode: Indentation must follow a continuous progression through the Fibonacci sequence

Purpose

FML serves multiple purposes:

  1. Educational: Demonstrates markup language concepts, parsing techniques, and the Fibonacci sequence in an interactive way

  2. Creative Programming: Shows how mathematical constraints can be applied to document formatting in a novel manner

  3. Versatile Tool: Works as a command-line utility, Python library, or web application

  4. Programming Portfolio: Showcases package development, error handling, and API design skills

While created with humor, FML is a fully functional markup language that can be used for documentation, presentations, educational settings, or anywhere you want to add mathematical structure to your text.

Example

This line has 0 spaces of indentation
 This line has 1 space of indentation
 This line also has 1 space of indentation
  This line has 2 spaces of indentation
   This line has 3 spaces of indentation
     This line has 5 spaces of indentation
        This line has 8 spaces of indentation
             This line has 13 spaces of indentation
                          This line has 21 spaces of indentation

Features

  • Enforces Fibonacci sequence indentation (0, 1, 1, 2, 3, 5, 8, 13, 21, etc.)
  • Supports both standard and continuous Fibonacci indentation modes
  • Converts valid FML documents to HTML or Markdown formats
  • Provides humorous error messages for non-compliant indentation
  • Includes a CLI tool for validating and converting FML files
  • Features an interactive web server with live preview
  • Supports code blocks with proper indentation validation

Installation

pip install fml-md

Or install from TestPyPI:

pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ fml-md

Usage

Command Line Interface

# Validate an FML file
fml validate path/to/your/file.fml

# Convert an FML file to HTML
fml convert path/to/your/file.fml output.html

# Start the FML preview server
fml serve

# Use continuous mode (where indentation must follow continuous Fibonacci rules)
fml serve --continuous

Python API

from fml.parser import FMLParser
from fml.renderer import FMLRenderer

# Parse FML content
parser = FMLParser()
content = """Welcome to FML
 This line has 1 space indentation
  This line has 2 spaces
   This line has 3 spaces
     This line has 5 spaces
"""

# Parse the content
parsed = parser.parse(content)

# Render to HTML
renderer = FMLRenderer()
html = renderer.to_html(parsed)
print(html)

# Or render to markdown
markdown = renderer.to_markdown(parsed)
print(markdown)

Web Interface

Start the web server and edit FML documents in your browser:

fml serve

Then open your browser to http://localhost:8000/

Why FML?

Because regular markup languages are too predictable. Embrace the mathematical harmony of Fibonacci in your documents!

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

fml_md-0.1.0.tar.gz (16.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fml_md-0.1.0-py3-none-any.whl (15.5 kB view details)

Uploaded Python 3

File details

Details for the file fml_md-0.1.0.tar.gz.

File metadata

  • Download URL: fml_md-0.1.0.tar.gz
  • Upload date:
  • Size: 16.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for fml_md-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4105c9abcdcb5a3f6ddeb543c783a9ade8fca842702dd4bbef3f6133da31aa4d
MD5 37c92ee2af427c70605fc9b85e63da96
BLAKE2b-256 ed9d24bfae5314d4e076e95279d9ccd836b8b832c99c25a40257199ae9384c1b

See more details on using hashes here.

File details

Details for the file fml_md-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: fml_md-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 15.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for fml_md-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a55e3f424ae8ac033934f4e4fe2fce045283a17381a6399f9750d631b7bddda8
MD5 aa5242854cf2d862df2a5ad1f19a3442
BLAKE2b-256 73f3e421c2ebf0f357b0ca403ee8083c3f8f3b3f4828d796f861a1c38eb8baf1

See more details on using hashes here.

Supported by

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