You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP
Socket
Book a DemoInstallSign in
Socket

tnetstring

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

tnetstring

0.3.4
bundlerRubygems
Version published
Maintainers
1
Created
Source

= tnetstring-rb

Tagged netstrings were conceived by Zed Shaw as a convenient text format for exchanging small amounts of data over the network, based on Dan Bernstein's earlier idea, {netstrings}[http://cr.yp.to/proto/netstrings.txt]. They are meant as an alternative to JSON that are easier to handle in low-level network code and simpler to implement.

The following set of intended characteristics of tagged netstrings is excerpted from the {official specification}[http://tnetstrings.org/]:

  • Trivial to parse in every language without making errors.
  • Resistant to buffer overflows and other problems.
  • Fast and low resource intensive.
  • Makes no assumptions about string contents and can store binary data without escaping or encoding them.
  • Backward compatible with original netstrings.
  • Transport agnostic, so it works with streams, messages, files, anything that's 8-bit clean.

Tagged netstrings support the following primitives: strings, integers, booleans (true or false), null (or nil), lists (arrays), and dictionaries (hashes).

Please see the official spec {tnetstrings.org}[http://tnetstrings.org/] for further detail.

== Examples

Given a string in tnetstring format, it can be parsed like so:

str = '5:12345#'
TNetstring.parse(str)

#=> [12345, '']

This returns a tuple that contains the parsed object and any remaining string input.

Encoding an object as a tnetstring is similarly straightforward:

int = 12345
TNetstring.encode(int)

#=> '5:12345#'

Please see the specs in this project for more examples.

== Installation

It's a gem, so do the usual:

gem install tnetstring

== Attribution

The initial implementation was a port of Zed's first (pre-standardization) tnetstrings {implementation in Python}[http://codepad.org/xct0E5ac].

== The Future

Before going 1.0 the library will be converted to a native gem for performance reasons. A native Java/JRuby implementation is planned as well. The current pure Ruby gem may be ported to a tnetstring-pure library.

FAQs

Package last updated on 22 Jun 2011

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts