Module: Main::Util::Methods

Defined in:
lib/main/util.rb

Instance Method Summary collapse

Instance Method Details

#columnize(buf, opts = {}) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/main/util.rb', line 44

def columnize buf, opts = {}
  width = Util.getopt 'width', opts, 80
  indent = Util.getopt 'indent', opts
  indent = Fixnum === indent ? (' ' * indent) : "#{ indent }"
  column = []
  words = buf.split %r/\s+/o
  row = "#{ indent }"
  while((word = words.shift))
    if((row.size + word.size) < (width - 1))
      row << word
    else
      column << row
      row = "#{ indent }"
      row << word
    end
    row << ' ' unless row.size == (width - 1)
  end
  column << row unless row.strip.empty?
  column.join "\n"
end

#getopt(opt, hash, default = nil) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/main/util.rb', line 65

def getopt opt, hash, default = nil
  keys = opt.respond_to?('each') ? opt : [opt]

  keys.each do |key|
    return hash[key] if hash.has_key? key
    key = "#{ key }"
    return hash[key] if hash.has_key? key
    key = key.intern
    return hash[key] if hash.has_key? key
  end

  return default
end

#homeObject



79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/main/util.rb', line 79

def home
  home =
    catch :home do
      ["HOME", "USERPROFILE"].each do |key|
        throw(:home, ENV[key]) if ENV[key]
      end
      if ENV["HOMEDRIVE"] and ENV["HOMEPATH"]
        throw(:home, "#{ ENV['HOMEDRIVE'] }:#{ ENV['HOMEPATH'] }")
      end
      File.expand_path("~") rescue(File::ALT_SEPARATOR ? "C:/" : "/")
    end
  File.expand_path(home)
end

#indent(chunk, n = 2) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/main/util.rb', line 18

def indent chunk, n = 2
  lines = chunk.split %r/\n/
  re = nil
  s = ' ' * n
  lines.map! do |line|
    unless re
      margin = line[%r/^\s*/]
      re = %r/^#{ margin }/
    end
    line.gsub re, s 
  end.join("\n")
end

#integer(value) ⇒ Object



10
11
12
# File 'lib/main/util.rb', line 10

def integer(value)
  Float(value).to_i
end

#mcp(obj) ⇒ Object



14
15
16
# File 'lib/main/util.rb', line 14

def mcp obj
  Marshal.load(Marshal.dump(obj))
end

#unindent(chunk) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/main/util.rb', line 31

def unindent chunk
  lines = chunk.split %r/\n/
  indent = nil
  re = %r/^/ 
  lines.map! do |line|
    unless indent 
      indent = line[%r/^\s*/]
      re = %r/^#{ indent }/
    end
    line.gsub re, ''
  end.join("\n")
end