You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This code has not been tested sufficiently.
It's a rewritten version of original reader in C++.
If you are going to use this for code generation,
please do additional tests.
Recheck my implementation for errors and so on.
Context
The Type Language (TL) was
invented many years ago. It was originally used in VK,
and now in Telegram.
The creators of this language invented and
wrote all the necessary tools to work with it.
For example, a parser of the language
and its binary format
for serialization was developed.
What is this for?
To work with TL Schemes using OOP. To generate the client MTProto code using
official TL parsers and binary formats.
Many Open Source MTProto client use their own implementation of parsers,
which are not ultimatum. They are hardcoded for their minimal task.
Hardcode is not the way of Telegram. Official Telegram's Open Source projects
take the right approach. So, for example, tdlib
generates several interfaces for different languages and this is how it looks:
Official TL parser written in C++. Now it's a part of tdlib/td/generate/tl-parser. In the input it takes raw TL schema file. The output is TLO file.
binary TL Object
The output of Tl Parser.
TLO reader
This repository contains implementation of it in Python and JavaScript. Reader of binary file. Provide access to combinators, types, functions, arguments and so on via Object Oriented Programming.
code generator
Any code generator. In tdlib/td/generate there is generator for C++, JNI, .NET and JSON interfaces.
fromtloimportread_tl_config_from_file, read_tl_config# use read_tl_config(data) to pass bytes directlyconfig=read_tl_config_from_file('td_api.tlo')
JavaScript/TypeScript
consttlo=require('tlo');//import {read_tl_config_from_file, read_tl_config} from 'tlo';// use read_tl_config(data) to pass buffer directlytlo.read_tl_config_from_file('./tlo_for_tests/telegram_api.tlo',(config)=>{console.log(config);});
Licence
MIT License
About
Reader of binary serialized Type Language schemes for Python and JavaScript/TypeScript