module 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