module Gottani::Base

Gottani::Base

Attributes

indent_char[RW]
separator[RW]

Public Class Methods

new() click to toggle source
# File lib/indents/base.rb, line 20
def initialize
  @indent_char = indent_char
  @zero_start = zero_start?
  @separator = separator
end

Public Instance Methods

to_common(text) click to toggle source
# File lib/indents/base.rb, line 26
def to_common(text)
  text.each_line.reduce([]) do |ret, line|
    chopped = line.chop
    line_hash = {}
    level = zero_start? ? indent_level(chopped) - 1 : indent_level(chopped)
    line_hash[:level] = level
    line_hash[:value] = indentless_line(chopped)
    line_hash[:value].gsub!(/^#{@separator}/, '') unless @separator.nil?
    ret << line_hash
    ret
  end
end
to_indent_text(common) click to toggle source
# File lib/indents/base.rb, line 39
def to_indent_text(common)
  common.reduce([]) do |ret, line|
    level = zero_start? ? line[:level] + 1 : line[:level]
    indent = @indent_char * level
    indent += @separator unless @separator.nil?
    ret << "#{indent}#{line[:value]}"
  end.join("\n") + "\n"
end

Private Instance Methods

indent_level(line) click to toggle source
# File lib/indents/base.rb, line 50
def indent_level(line)
  prefix_indents = line.scan(/^#{@indent_char}*/).first
  prefix_indents = prefix_indents.nil? ? '' : prefix_indents
  prefix_indents.scan(@indent_char).size
end
indentless_line(chopped_line) click to toggle source
# File lib/indents/base.rb, line 56
def indentless_line(chopped_line)
  chopped_line.gsub(/^#{@indent_char}*/, '')
end