Rope is a project mainly written in Ruby, based on the MIT license.
Pure Ruby implementation of a Rope data structure
p{color:red}. rope is still under early development. Check it out if you wish to follow my progress or help, but do not use it in your applications (yet!).
rope is a pure Ruby implementation of the "Rope data structure":http://en.wikipedia.org/wiki/Rope_%28computer_science%29.
For many applications, the Rope class can be a drop-in replacement for String that is optimized for certain use cases.
Using a Rope instance over a String may be desirable in applications that manipulate large amounts of text.
rope currently offers:
Planned features for rope:
Disadvantages of rope:
h1. Installation
rope is hosted on "rubygems":http://www.rubygems.org/
gem install rope
... or in your Gemfile
gem 'rope'
rope is tested against MRI 1.8.7 and 1.9.2.
h1. Usage
h2. Creating a Rope
rope = "123456789".to_rope # Rope::Rope.new("123456789") also works puts rope # "123456789"
h2. Concatenation
A Rope instance can be concatenated with another Rope or String instance.
rope = "12345" string = "6789" rope += string puts rope # "123456789"
h2. Slices/Substrings
A Rope instance offers efficient substring operations. The slice and [] methods are synonymous with their "String counterparts (Ruby API documentation)":http://ruby-doc.org/core-1.9/classes/String.html#M000293.
rope = "123456789".to_rope puts rope.slice(3, 4) # 4567 puts rope.slice(-6, 4) # 4567 # TODO: More examples when they are implemented