README

Raku TOP: Table-Oriented Programming (TOP) in the Raku programming language

This package implements TOP in Raku.

For more information on TOP (Table Oriented Programming): What is Table-Oriented Programming?

Raku TOP Introductory Documents

#include intro-docs

The Object Model Overview

Any classes below in () are not implemented yet

Conceptually, what we're moddeling is:

  • Relation

    • Table

      • (DataDictionary)

    • (View)

    • (TupleSet)

  • Tuple

  • (Section)

    • Field

    • (Lot)

  • Database

  • Join

Most of the above concepts are directly from Relational Set Theory. The exceptions are:

  • DataDictionary: Just a set of tables that explain what the rest of the database is doing; may be implemented differently

  • Lot: A group of columns

  • TupleSet: A set of tuples, usually that are the result of a query

In addition to the above, we have:

  • Storage: This is data we can read/write; used for modelling SQL databases, but could also be in-memory tables, spreadsheets, CSV files, etc

  • Formatters: This is for outputting data. Could be tables drawn with CLI box characters, CSV files, etc

  • Parsers: This is for reading from tables. This includes reading in space-separated data, CSV files, etc

Formats and their Parameters

Some formats are only really used as storage (eg. Memory, Postgres). Some things are only ever used as input/output (eg. WithBorders is generally not very useful except as output).

Format | Storage | Parser | Formatter | Tree Format
Memory | Yes | No | No
Postgres | Yes | No | No
HalfHuman | No | Yes | Yes
WithBorders | No | No | Yes
CSV | Yes | Yes | Make
HTML | Make | Make | Make | XML
Spreadsheet | Make | No | No | XML
JSON | Make | Make | Make | JSON
Pod6 | ? | ? | Make | AST
SQLite | Accept | No | No
MySQL | Accept | No | No
Postgres option with not using cursors (has to support both cursor and non-cursor) Accept No No
Dan | Accept | ? | ?
DataQueryWorkflows | Accept | ? | ?

Key to Formats

  • Yes: This item exists

  • No: No plans for this

  • Make: Plans for this, but nothing yet

  • Accept: No plans to make this, but would gladly accept it if someone made it

  • Tree: These ones will be made, but not until Tree-Oriented Programming has been inaugurated

Raku TOP Class References

Note that the following links don't yet work on raku.land -- you'll need to go to github to read them.

Also, Database::Storage::CSV doesn't work yet (TODO), but the others should; probably start with TOP, then go to Memory, then as you please.

#include class-refs

Plans for Raku TOP

For more information on the plans for Raku TOP, see Raku TOP TODO

TOP v0.0.7

Table-Oriented Programming (TOP) module for Raku

Authors

    License

    Artistic-2.0

    Dependencies

    Text::CSVCSV::ParserDBIishSlang::OtherwiseHash::OrderedUUID

    Test Dependencies

    Provides

    • Database::Storage
    • Database::Storage::Memory
    • Database::Storage::Postgres
    • TOP
    • TOP::FieldMode
    • TOP::FieldMode::Automatic
    • TOP::FieldMode::Error
    • TOP::FieldMode::Overflow
    • TOP::Formatter::HalfHuman
    • TOP::Formatter::WithBorders
    • TOP::Parser::CSV
    • TOP::Parser::HalfHuman

    The Camelia image is copyright 2009 by Larry Wall. "Raku" is trademark of the Yet Another Society. All rights reserved.

    Built with Podlite — the markup and publishing tools behind this site.