Skip to content

Instantly share code, notes, and snippets.

@kognate
Created May 27, 2011 00:40
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save kognate/994423 to your computer and use it in GitHub Desktop.
Save kognate/994423 to your computer and use it in GitHub Desktop.
tumbledry
require 'yaml'
class Tumbledry
attr_accessor :patterns
def initialize
File.open('repetative.txt', 'r') do |f|
@data = f.read()
end
self.patterns = {}
@numpat = 1
end
def patternize
i = 0
last_match = 1
while (i < @data.length)
j = @data.length
dat = @data.scan(/#{@data[i..j]}/)
if (dat[0].length > 1 && dat.length > last_match)
last_match = dat.length
j+=1
patterns[dat[0]] = @numpat.chr
@numpat+=1
puts dat[0]
else
last_match = 1
j = i + 1
i+= 1
end
end
end
def consume
begin
self.patterns = {}
patternize
self.patterns.each {|k,v|
@data.gsub!(/#{k}/,v)
}
end while self.patterns.keys.length > 0
puts @data
end
end
t = Tumbledry.new()
t.consume
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment