class SocialSnippet::Inserter

Attributes

dest[R]
dest_index[R]
src[R]
src_index[R]

Public Class Methods

new(src) click to toggle source

Constructor

@param src [Array<String>] The source code

# File lib/social_snippet/inserter.rb, line 11
def initialize(src)
  @src_index = 0
  @dest_index = -1
  @src = src.clone.freeze
  @dest = []
end

Public Instance Methods

ignore() click to toggle source

Ignore current line

# File lib/social_snippet/inserter.rb, line 38
def ignore
  @src_index += 1
end
insert(line_or_lines) click to toggle source

Insert text

@param line_or_lines [String or Array<String>] The inserted text

# File lib/social_snippet/inserter.rb, line 45
def insert(line_or_lines)
  if line_or_lines.is_a?(Array)
    lines = line_or_lines
    dest.insert dest_index + 1, *lines
    @dest_index += lines.length
  else
    line = line_or_lines
    dest.insert dest_index + 1, line
    @dest_index += 1
  end
end
set_index(new_index) click to toggle source

Set index

@param new_index [Number] The next index

# File lib/social_snippet/inserter.rb, line 21
def set_index(new_index)
  if new_index > src.length
    raise "invalid index"
  end
  if new_index > src_index
    last_index = [new_index - 1, src.length - 1].min
    insert src[src_index .. last_index]
    @src_index = new_index
  end
end
set_index_last() click to toggle source

Set index to last

# File lib/social_snippet/inserter.rb, line 33
def set_index_last
  set_index src.length
end
to_s() click to toggle source

Get text

@return [String]

# File lib/social_snippet/inserter.rb, line 60
def to_s
  dest.join($/)
end