Giter Club home page Giter Club logo

ton's Introduction

TON

TON

A human-friendly language for programmatic authoring and safe interchange of tree-structured data.

License Commits Build Discussions Discord Zulip


Warning

This is currently in-development vaporware.

TON (Tree Object Notation) is a modern data language featuring two dialects: One for programmatic generation of data, and a static subset for safe data interchange.

TON is designed to be a pleasant and compact replacement for both XML and JSON, combining the best qualities of each, while allowing advanced users to programmatically generate large data sets using the full language dialect. At its simplest, TON can be used as a static data format just like XML or JSON, while at its full potential, it can be used to maintain large and complex textual databases at a level of maintainability that such data formats simply cannot achieve.

The original motivation for the creation of TON was the maintenance of the sorts of large data sheets that video games often use to describe things like areas, items, quests, characters, skills, etc. The code dialect should be well-suited to any similar use case. On the other hand, the data dialect can is well-suited as a safe and more compact replacement for XML and JSON, e.g. in networked APIs.

TON is an open standard. This project provides both the specification and the reference implementation in C#.

Usage

This project offers the following packages:

Package Description Downloads
[ton][ton-pkg] Provides the .NET global tool. ![Downloads][ton-dls]
Vezel.Ton Provides the core parsing, analysis, and runtime services. Downloads
Vezel.Ton.Tooling Provides user-facing tooling such as syntax coloring and diagnostic rendering. Downloads
Vezel.Ton.Service Provides the Language Server Protocol implementation. Downloads

To install a tool package in a project, run dotnet tool install <name>. To install it globally, also pass -g.

To install a library package, run dotnet add package <name>.

For more information, please visit the project home page.

Building

You will need the .NET SDK and Node.js installed. Simply run ./cake (a Bash script) to build artifacts and run tests. You can also run ./cake pack to avoid running tests, or ./cake test to just build and run tests.

These commands will use the Debug configuration by default, which is suitable for development and debugging. Pass -c Release instead to get an optimized build.

License

This project is licensed under the terms found in LICENSE-0BSD.

ton's People

Contributors

dependabot[bot] avatar alexrp avatar

Stargazers

Dong An avatar  avatar  avatar

Watchers

 avatar Roukanken avatar

ton's Issues

Language idea: Integrated query syntax similar to XPath and/or LINQ

XPath is surprisingly well-designed. It has no obvious flaws in its design that I've been able to spot. It has lots of features. It's terse, yet very understandable. The only downside I see is that it doesn't scale well when the query expression becomes long.

On the other hand, there's LINQ, which is more verbose but is specifically designed to scale well for longer expressions.

We need some kind of query syntax in the language. Ideally we'd combine the best of XPath and LINQ.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.