Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

basic-rope

Package Overview
Dependencies
Maintainers
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

basic-rope

  • 0.0.2
  • Rubygems
  • Socket score

Version published
Maintainers
2
Created
Source

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:

  • Fast string concatenation and substring operations involving large strings
  • Immutability, which is desirable for functional programming techniques or multithreaded applications

Planned features for rope:

  • Ability to view a function producing characters as a Rope (including I/O operations). For instance, a piece of a Rope may be a 100MB file, but is only read when that section of the string is examined. Concatenating to the end of that Rope does not involve reading the entire file.
  • Implement a Rope counterpart to every immutable method available on the String class.

Disadvantages of rope:

  • Single character replacements are expensive
  • Iterating character-by-character is slightly more expensive than in a String (TODO: how much? .. haven't implemented iterators yet)

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

FAQs

Package last updated on 14 Nov 2014

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc