Allows defining structure of data and perform validation against it using json-schema
Create data structures in Ruby using idomatic 'DSL' constructs. Free yourself of metaprogramming madness, write nice APIs and decouple the implementation from it!
Muster is a gem that turns query strings of varying formats into data structures suitable for easier consumption in AR/DataMapper scopes and queries.
This gem adds a custom matcher to RSpec to recursively compare nested Ruby data-structures consisting of `Hash` and `Array` elements. An order of elements in an array is ignored.
Implemention of a trie data structure
This gem extracts params given as a hash to structured data, that can be used when creating queries
A circular list data structure for Ruby
Kaitai Struct is a declarative language used for describe various binary data structures, laid out in files or in memory: i.e. binary file formats, network stream packet formats, etc. The main idea is that a particular format is described in Kaitai Struct language (.ksy file) and then can be compiled with ksc into source files in one of the supported programming languages. These modules will include a generated code for a parser that can read described data structure from a file / stream and give access to it in a nice, easy-to-comprehend API. This package provides small runtime library used by code generated by Kaitai Struct compiler.
RESTRack is a Rack-based MVC framework that makes it extremely easy to develop RESTful data services. It is inspired by Rails, and follows a few of its conventions. But it has no routes file, routing relationships are done through supplying custom code blocks to class methods such as "has_relationship_to" or "has_mapped_relationships_to". RESTRack aims at being lightweight and easy to use. It will automatically render JSON and XML for the data structures you return in your actions (any structure parsable by the "json" and "xml-simple" gems, respectively). If you supply a view for a controller action, you do that using a builder file. Builder files are stored in the view directory grouped by controller name subdirectories (`view/<controller>/<action>.xml.builder`). XML format requests will then render the view template with the builder gem, rather than generating XML with XmlSimple.
Adds ActiveRecord support for hierarchical data structures using PostgreSQL's LTREE column type.
==== Ruby Topic Maps (RTM) RTM is a Topic Maps engine written in Ruby. See http://rtm.topicmapslab.de/ for instructions. Several backends and extensions are available as separate gems. ==== Overview From a developer's perspective, RTM is a schema-less database management system. The Topic Maps standard (described below) on which RTM is based provides a way of creating a self-describing schema just by using it. ==== Quickstart require 'rtm' connection = RTM.connect # uses the default Ontopia in-memory backend topic_map = connection.create "http://example.org/my_topic_map/" some_topic = topicmap.get!("identifier_of_the_topic") some_topic["-"] = "default name for the topic" topic_map.to_xtm("my_xtm_file.xtm") ==== Topic Maps Topic Maps is an international industry standard (ISO13250) for interchangeably representing information about the structure of information resources used to define topics, and the relationships between topics. A set of one or more interrelated documents that employs the notation defined by this International Standard is called a topic map. A topic map defines a multidimensional topic space - a space in which the locations are topics, and in which the distances between topics are measurable in terms of the number of intervening topics which must be visited in order to get from one topic to another, and the kinds of relationships that define the path from one topic to another, if any, through the intervening topics, if any. In addition, information objects can have properties, as well as values for those properties, assigned to them. The Topic Maps Data Model which is used in this implementation can be found on http://www.isotopicmaps.org/sam/sam-model/. ==== Backends * rtm-ontopia: JRuby only, recommended, uses Ontopia: http://code.google.com/p/ontopia/ * rtm-tinytim: JRuby only, uses TinyTiM: http://tinytim.sourceforge.net/ * rtm-activerecord: uses a custom ActiveRecord schema ==== Extensions * rtm-tmql: Adds support for the Topic Maps Query Language (TMQL), http://isotopicmaps.org/tmql/ * rtm-tmcl: Adds support for the Topic Maps Constraint Language (TMCL), http://isotopicmaps.org/tmcl/ ==== License Copyright 2009 Topic Maps Lab, University of Leipzig. Apache License, Version 2.0
RSence is a different and unique development model and software frameworks designed first-hand for real-time web applications. RSence consists of separate, but tigtly integrated data- and user interface frameworks. RSence could be classified as a thin server - thick client system. Applications and submobules are installed as indepenent plugin bundles into the plugins folder of a RSence environment, which in itself is a self-contained bundle. A big part of RSence itself is implemented as shared plugin bundles. The user interface framework of RSence is implemented in high-level user interface widget classes. The widget classes share a common foundation API and access the browser's native API's using an abstracted event- and element layer, which provides exceptional cross-browser compatibility. The data framework of RSence is a event-driven system, which synchronized shared values between the client and server. It's like a realtime bidirectional form-submission engine that handles data changes intelligently. On the client, changed values trigger events on user interface widgets. On the server, changed values trigger events on value responder methods of server plugin modules. It doesn't matter if the change originates on client or server, it's all synchronized and propagated automatically. The server framework is implemented as a high-level, modular data-event-driven system, which handles delegation of tasks impossible to implement using a client-only approach. Client sessions are selectively connected to other client sessions and legacy back-ends via the server by using the data framework. The client is written in Javascript and the server is written in Ruby. The client also supports CoffeeScript for custom logic. In many cases, no custom client logic is needed; the user interfaces can be defined in tree-like data models. By default, the models are parsed from YAML files, and other structured data formats are possible, including XML, JSON, databases or any custom logic capable of producing similar objects. The server can connect to custom environments and legacy backends accessible on the server, including software written in other languages.
ConceptQL is a query language for specifying queries to be run OMOP CDMv4 structured data
Structured acceptance test data structure gem
Indy is a log archaeology library that treats logs like data structures. Search standard or custom log formats by field and/or time.
Data structure for quick item lookup via indexes.
useful data structures implemented in pure Ruby for my data structures challenge.
Kanrisuru helps manage remote servers with objected oriented ruby. Results come back as structured data, parsed, prepared and ready.
Data structure for an abstract layer over files. Each binary sequence is a
A set of data structures and algorithms for dependency resolution.
Super-Duper library to send syslog messages over UDP to logging server such as Graylog2. Supports Structured Data elements as defined by RFC 5424.
RedisRPC is the easiest to use RPC library in the world. (No small claim!) It has implementations in Ruby, PHP, and Python. Redis is a powerful in-memory data structure server that is useful for building fast distributed systems. Redis implements message queue functionality with its use of list data structures and the `LPOP`, `BLPOP`, and `RPUSH` commands. RedisRPC implements a lightweight RPC mechanism using Redis message queues to temporarily hold RPC request and response messages. These messages are encoded as JSON strings for portability. Many other RPC mechanisms are either programming language specific (e.g. Java RMI) or require boiler-plate code for explicit typing (e.g. Thrift). RedisRPC was designed to be extremely easy to use by eliminating boiler-plate code while also being programming language neutral. High performance was not an initial goal of RedisRPC and other RPC libraries are likely to have better performance. Instead, RedisRPC has better programmer performance; it lets you get something working immediately.
RSence is a different and unique development model and software frameworks designed first-hand for real-time web applications. RSence consists of separate, but tigtly integrated data- and user interface frameworks. RSence could be classified as a thin server - thick client system. Applications and submobules are installed as indepenent plugin bundles into the plugins folder of a RSence environment, which in itself is a self-contained bundle. A big part of RSence itself is implemented as shared plugin bundles. The user interface framework of RSence is implemented in high-level user interface widget classes. The widget classes share a common foundation API and access the browser's native API's using an abstracted event- and element layer, which provides exceptional cross-browser compatibility. The data framework of RSence is a event-driven system, which synchronized shared values between the client and server. It's like a realtime bidirectional form-submission engine that handles data changes intelligently. On the client, changed values trigger events on user interface widgets. On the server, changed values trigger events on value responder methods of server plugin modules. It doesn't matter if the change originates on client or server, it's all synchronized and propagated automatically. The server framework is implemented as a high-level, modular data-event-driven system, which handles delegation of tasks impossible to implement using a client-only approach. Client sessions are selectively connected to other client sessions and legacy back-ends via the server by using the data framework. The client is written in Javascript and the server is written in Ruby. The client also supports CoffeeScript for custom logic. In many cases, no custom client logic is needed; the user interfaces can be defined in tree-like data models. By default, the models are parsed from YAML files, and other structured data formats are possible, including XML, JSON, databases or any custom logic capable of producing similar objects. The server can connect to custom environments and legacy backends accessible on the server, including software written in other languages.
depq is a Double-Ended Priority Queue library. It is a data structure which can insert elements and delete elements with minimum and maximum priority. If there are elements which has same priority, the element inserted first is chosen. The priority can be changed after the element is inserted.
Rails plugin for transferring or updating data between two db structures.
Arboreal is yet another extension to ActiveRecord to support tree-shaped data structures. Internally, Arboreal maintains a computed "ancestry_string" column, which caches the path from the root of a tree to each node, allowing efficient retrieval of both ancestors and descendants. Arboreal surfaces relationships within the tree like "children", "ancestors", "descendants", and "siblings" as scopes, so that additional filtering/pagination can be performed.
GitStore implements a versioned data store based on the revision management system Git. You can store object hierarchies as nested hashes, which will be mapped on the directory structure of a git repository. GitStore checks out the repository into a in-memory representation, which can be modified and finally committed.
Pattern matching library for plain data structure
Validations is a library for validating data structures.
The Rosette Text Analytics Platform uses natural language processing, statistical modeling, and machine learning to analyze unstructured and semi-structured text across 364 language-encoding-script combinations, revealing valuable information and actionable data. Rosette provides endpoints for extracting entities and relationships, translating and comparing the similarity of names, categorizing and adding linguistic tags to text and more.
Simple and composable validation and coercion of data structures inspired by clojure specs
Interprets Rails data structures for you to generate beautiful Google Charts
Data structures (lists, stacks, trees, heaps, graphs..) in pure Ruby.
A fixed-size LIFO data structure
Stencil is a templating library with a number of design goals. * Limited code in templates. This isn't meant to embed ruby in anything - it allows for simple control structures, since that's typically what you need in a template, but full access to the Ruby interpreter is just a tempatation into sin. (From a separation of concerns standpoint.) There's a certain amount of code available in conditionals and interpolations, since otherwise they're much harder to do... * Easy to extend. If you do need something extra from a template, not having it in the templating language is frustrating. It's easy to add features to stencil, since they're described in as well-designed classes. * Generic output. Not everything is a website or a mime-encoded email. It's nice to be able to spit out generic text from time to time. * Data sourced from simple datatypes - hashes and array, referenced with data paths. Views can be extracted from any object, or built up in code.
Hiccup mixes a-la-cart recurrence features into your data structure. It doesn't dictate the data structure, just the interface.
This library is for parsing JSON strings and unparsing ruby data structures. This library is a fork of Florian Frank's JSON library with key parts implemented in C for performance improvements.
This library can parse all kind of binary-data structures including non-fixed length of structures and nested structures. For generic parsing, loop and condition(if) statement to define structures is provided in this library. Of course, values of neighbor binary-data can be used as the other binary-data's specification of length. Furthermore, this library handles all binary-data under the lazy evaluation. So you can read required parts of a binary-data very quickly even if whole of the binary-data is too big,
OpenFastStruct is a data structure, similar to an OpenStruct but faster.
Immutable data structures for Ruby
Pure Ruby analyzer of the GIF image format. Performs complete analysis of internal GIF block structure and streams it as an objects stream with metainformations of each block. Also can interpret internal structure by providing the simple object-like interface to base image file informations. Works above seekable IO streams, so allows processing of the big files too. Doesn't perform LZW decompressing, returns raw data for both color tables and images.
SmartCore::Schema is a schema validator for Hash-like data structures
Well, who needed another serialization format? Not me, but that's what I've made. Ruby Object Notation (Ron) is a textual format for the representation of Ruby data structures. It's somewhat like YAML, XML, or (most of all) JSON. However, since it is defined entirely within and as a subset of Ruby, it has the slick property that Ron expressions are legal Ruby. Thus it is very like JSON, except that it's Ruby-centered instead of being JavaScript-centered. Another way to look at Ron is as a purely declarative language for creating (almost) any type of Ruby data structure.
A tabular data structure in Ruby, with header-based helper methods for analysis and editing, and some of Excel's API style. Can output as 2D Array, HTML Table, CSV, TSV, or an Excel WIN32OLE Object
Graph data structure toolkit.
Implementation of standard data structures in Ruby
FancyOpenStruct is a subclass of OpenStruct, and is a variant of RecursiveOpenStruct. This allows you to convert nested hashes into a structure where keys and values can be navigated and modified via dot-syntax, like: foo.bar = :something. This particular gem also adds support for Hash methods (such as length or merge), and also allows you to access and modify the data structure the same way that you would handle a normal Hash.
Core classes for manipulating RFC6962 Certificate Transparency data structures
Allows the specification of bit-based structures and provides an intuitive way of access data. Example: class Flags < StructBase unsigned :direction, 4 unsigned :multiplier, 2 unsigned :offset, 2 end class Entry < StructBase unsigned :offset, 4 nested :flags, Flags unsigned :address, 24 unsigned :cache_id, 16 end In contrast to the already available http://raa.ruby-lang.org/project/bit-struct/ implementation, BitStructEx allows nested structures which are not aligned on byte boundaries.
Check for differences between two JSON strings (or Ruby data structures parsed from them)