rtl-string

Easier string manipulation for people who come from LTR backgrounds.

Usage

Create a new RtlString instance with some Arabic text. Calling .to_s will show an LTR representation of the string. You should read it from left to right, just like you would an English string:

arabic_str = [1575, 1605, 32, 98, 108, 97, 114, 103, 32, 1576, 1573, 1590].pack("U*")
RtlString.new(arabic_str).to_s  # => "[alef][meem] blarg [beh][alef - hamza below][dad]"

You can also call .to_rtl_s on a regular string:

arabic_str.to_rtl_s  # => "[alef][meem] blarg [beh][alef - hamza below][dad]"

String Operations

Instances of RtlString respond to a few additional string operations, including delete_at, insert, [], and size:

str = arabic_str.to_rtl_s
str.delete_at(1)  # => "[meem]"
str.delete_range(1..2)
str.insert([1605].pack("U*"), 1)
str.to_s          # => "[alef][meem][meem] blarg [beh][alef - hamza below][dad]"
str[1]            # => "[meem]
str[1..3]         # => "[meem] b"
str.size          # => 12
str.length        # => 12

Requirements

Depends on the twitter-cldr-rb gem.

Running Tests

bundle exec rspec

Authors