genki (owner)

Revisions

gist: 147107 Download_button fork
public
Public Clone URL: git://gist.github.com/147107.git
Embed All Files: show embed
endless.rb #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def require_el(path)
  result = []
  indents = [0]
  ended = false
  open(path).read.split("\n").each do |line|
    if ended
      result << line
    elsif line == "__END__"
      result << line
      ended = true
    else
      indent = line.index(/\S|$/)
      if indent > indents[-1]
        indents << indent
      end
      while indent < indents[-1]
        indents.pop
        unless line =~ /^\s*end\b/
          result << (" " * indents[-1]) + "end"
        end
      end
      result << line
    end
  end
  (indents.size - 1).times{result << "end"}
  eval result.join("\n"), TOPLEVEL_BINDING, $0 = path
end
 
require_el ARGV.shift