2024-01-28 04:43:09 +01:00
|
|
|
#!/usr/bin/env ruby
|
|
|
|
$stdout.sync = true
|
|
|
|
|
|
|
|
def noecho
|
2024-01-28 06:16:40 +01:00
|
|
|
system("stty -echo")
|
|
|
|
yield
|
|
|
|
ensure
|
|
|
|
system("stty echo")
|
2024-01-28 04:43:09 +01:00
|
|
|
end
|
|
|
|
|
2024-01-28 06:16:40 +01:00
|
|
|
def read
|
|
|
|
noecho { $stdin.gets }
|
|
|
|
.gsub(/[^A-Za-z0-9_\s\/\-,;:*"']/, '')
|
|
|
|
end
|
|
|
|
|
|
|
|
reads = 0
|
2024-01-28 04:43:09 +01:00
|
|
|
loop do
|
2024-01-28 06:16:40 +01:00
|
|
|
tab, buf = "\t", read
|
|
|
|
if IO.select([$stdin], [], [], 0.1).nil?
|
|
|
|
reads = 0
|
|
|
|
print buf.chomp, "}", "\n"
|
|
|
|
elsif buf.include?(tab)
|
|
|
|
print "}\n" if reads > 0
|
|
|
|
class_name, class_body = buf.split(tab, 2)
|
2024-01-28 04:43:09 +01:00
|
|
|
class_name.gsub!(%r|([/.])|) { "\\#{_1}" }
|
2024-01-28 06:16:40 +01:00
|
|
|
print ".#{class_name} {", "\n", " " * 2, class_body.chomp, "\n"
|
|
|
|
reads += 1
|
|
|
|
else
|
|
|
|
print " " * 2, buf
|
2024-01-28 04:43:09 +01:00
|
|
|
end
|
|
|
|
end
|