Sha256: 26255fcef0654e210d660c1ee2d1ef1e51f557dab125c45a82aa3ec24f7c4ec6

Contents?: true

Size: 1.64 KB

Versions: 5

Compression:

Stored size: 1.64 KB

Contents

# -*- coding: utf-8 -*-


require 'forwardable'
require 'spacy/textbuffer'


module Spacy


  class Text

    extend Forwardable

    attr_reader :buffer

    def_delegators :@buffer,
      :each, :last, :nrow, :ncolumn, :to_a, :to_s,
      :[], :[]=

    def initialize (arg = nil)
      @buffer = (TextBuffer === arg) ? arg : TextBuffer.new(arg)
      @first = @last = 0
    end

    def pos ()
      @first
    end

    def pos= (n)
      last = @buffer.last
      n = 0    if n < 0
      n = last if n > last
      select n
    end

    def cursor ()
      @buffer.pos2cursor pos
    end

    def cursor= (*args)
      args.flatten!
      args << 0 while args.size < 2
      self.pos = @buffer.cursor2pos *args
    end

    def row ()
      @buffer.pos2cursor(pos)[0]
    end

    def column ()
      @buffer.pos2cursor(pos)[1]
    end

    def row= (n)
      self.cursor = n, column
    end

    def column= (n)
      self.cursor = row, n
    end

    def replace (str, first, last = nil)
      last = first unless last
      @buffer.erase first, last
      @buffer.insert first, str
    end

    def select (*args)
      first, last = case args[0]
      when Range
        args[0].to_a
      when Integer
        args
      end
      last = first unless last
      first, last = last, first unless first < last
      @first, @last = first, last
      selection
    end

    def selection ()
      @first..@last
    end

    def selection= (str)
      select replace(str, @first, @last)
    end

    def << (str)
      replace str, last
    end

    def inspect ()
      "#<Text row: #{row}, column: #{column}, buffer: #{buffer.inspect}>"
    end

  end# Text


end# Spacy

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
spacy-0.1.9 lib/spacy/text.rb
spacy-0.1.8 lib/spacy/text.rb
spacy-0.1.6 lib/spacy/text.rb
spacy-0.1.5 lib/spacy/text.rb
spacy-0.1.4 lib/spacy/text.rb