Sha256: b3d042117bdc9e0732f5c21fa7f3eedfe14156fdf410e4cbc18874f70bcad4aa

Contents?: true

Size: 1.38 KB

Versions: 14

Compression:

Stored size: 1.38 KB

Contents

class String
  def undent
    min_space_num = self.split("\n").delete_if {|s| s =~ /^\s*$/ }.map {|s| (s[/^\s+/] || '').length }.min

    if min_space_num and min_space_num > 0
      gsub(/^[ \t]{,#{min_space_num}}/, '')
    else
      self
    end
  end

  def delete_create_table(name)
    new_def = []
    in_block = false

    self.each_line do |line|
      if line =~ /\A\s*create_table\s+"#{name}"/
        in_block = true
      elsif in_block and line =~ /\A\s*end\s*\Z/
        in_block = false
      elsif not in_block
        new_def << line
      end
    end

    new_def = new_def.join
    raise 'must not happen' if new_def =~ /^\s*create_table\s+"#{name}"/m
    new_def.delete_add_index(name)
  end

  def delete_add_index(name, columns = nil)
    new_def = []
    in_block = false

    args = name.inspect
    args << ',\\s*\\[' + columns.map {|i| i.inspect }.join(',\\s*') + '\\]' if columns

    self.each_line do |line|
      if line !~ /\A\s*add_index\s+#{args}/
        new_def << line
      end
    end

    new_def = new_def.join
    raise 'must not happen' if new_def =~ /^\s*add_index\s+#{args}/m
    new_def
  end

  def gsub_surely(pattern, replace)
    old_str = self.dup
    new_str = self.gsub(pattern, replace)
    raise 'must not happen' if old_str == new_str
    new_str
  end

  def delete_empty_lines
    self.each_line.select {|line|
      line !~ /\A\s*\Z/
    }.join
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
ridgepole-0.2.3 spec/string_ext.rb
ridgepole-0.2.2 spec/string_ext.rb
ridgepole-0.2.1 spec/string_ext.rb
ridgepole-0.2.0 spec/string_ext.rb
ridgepole-0.1.9 spec/string_ext.rb
ridgepole-0.1.8 spec/string_ext.rb
ridgepole-0.1.7 spec/string_ext.rb
ridgepole-0.1.6 spec/string_ext.rb
ridgepole-0.1.5 spec/string_ext.rb
ridgepole-0.1.4 spec/string_ext.rb
ridgepole-0.1.3 spec/string_ext.rb
ridgepole-0.1.2 spec/string_ext.rb
ridgepole-0.1.1 spec/string_ext.rb
ridgepole-0.1.0 spec/string_ext.rb