Skip to main content

Python implementation of the Lino protocol parser

Project description

Platform.Protocols.Lino - Python

PyPI version Python versions License

Python implementation of the Lino (Links Notation) protocol parser.

Installation

pip install platform-lino

Quick Start

from platform_lino import Parser

parser = Parser()
links = parser.parse("papa (lovesMama: loves mama)")

# Access parsed links
for link in links:
    print(link)

Usage

Basic Parsing

from platform_lino import Parser, format_links

parser = Parser()

# Parse simple links
links = parser.parse("(papa: loves mama)")
print(links[0].id)  # 'papa'
print(len(links[0].values))  # 2

# Format links back to string
output = format_links(links)
print(output)  # (papa: loves mama)

Working with Link Objects

from platform_lino import Link

# Create links programmatically
link = Link('parent', [Link('child1'), Link('child2')])
print(str(link))  # (parent: child1 child2)

# Access link properties
print(link.id)  # 'parent'
print(link.values[0].id)  # 'child1'

# Combine links
combined = link.combine(Link('another'))
print(str(combined))  # ((parent: child1 child2) another)

Indented Syntax

parser = Parser()

# Parse indented notation
text = """3:
  papa
  loves
  mama"""

links = parser.parse(text)
# Produces: (3: papa loves mama)

API Reference

Parser

The main parser class for Lino notation.

  • parse(input_text: str) -> List[Link]: Parse Lino text into Link objects

Link

Represents a link in Lino notation.

  • __init__(id: Optional[str] = None, values: Optional[List[Link]] = None)
  • format(less_parentheses: bool = False) -> str: Format as string
  • simplify() -> Link: Simplify link structure
  • combine(other: Link) -> Link: Combine with another link

format_links

Format a list of links into Lino notation.

  • format_links(links: List[Link], less_parentheses: bool = False) -> str

Examples

Doublets (2-tuple)

parser = Parser()
text = """
papa (lovesMama: loves mama)
son lovesMama
daughter lovesMama
"""
links = parser.parse(text)

Triplets (3-tuple)

text = """
papa has car
mama has house
(papa and mama) are happy
"""
links = parser.parse(text)

Quoted References

# References with special characters need quotes
text = '("has space": "value with: colon")'
links = parser.parse(text)

Development

Running Tests

# Install development dependencies
pip install pytest

# Run tests
pytest

Building

pip install build
python -m build

License

This project is released into the public domain under the Unlicense.

Links

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

links_notation-0.9.0.tar.gz (10.6 kB view details)

Uploaded Source

Built Distribution

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

links_notation-0.9.0-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

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