Class: Solitaire::Chunker

Inherits:
Object show all
Defined in:
lib/quiz1/t/solutions/Moses Hohman/cipher.rb

Constant Summary collapse

CHUNK_SIZE =
5

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(text) ⇒ Chunker

Returns a new instance of Chunker.



12
13
14
15
16
17
18
# File 'lib/quiz1/t/solutions/Moses Hohman/cipher.rb', line 12

def initialize(text)
	@legal_chars_only = text.gsub(/[^A-Za-z]/, "").upcase
	@legal_chars_only <<= "X" * (-@legal_chars_only.size % CHUNK_SIZE)
	raise "Nothing to chunk (non-alphabet characters removed): #{text}" if @legal_chars_only.size==0
	@chunks = []
	@number_chunks = []
end

Class Method Details

.to_letters(number_chunks) ⇒ Object



30
31
32
# File 'lib/quiz1/t/solutions/Moses Hohman/cipher.rb', line 30

def Chunker.to_letters(number_chunks)
	number_chunks.collect { |chunk| chunk.collect { |num| (num+ASCII_OFFSET).chr }.join }
end

Instance Method Details

#chunksObject



20
21
22
23
# File 'lib/quiz1/t/solutions/Moses Hohman/cipher.rb', line 20

def chunks
	@chunks if @chunks.size > 0
	@chunks = @legal_chars_only.gsub(/(.{#{CHUNK_SIZE}})/, '\1 ').rstrip.split(" ")
end

#number_chunksObject



25
26
27
28
# File 'lib/quiz1/t/solutions/Moses Hohman/cipher.rb', line 25

def number_chunks
	@number_chunks if @number_chunks.size > 0
	chunks.collect { |chunk| chunk.split("").collect { |char_string| char_string[0]-ASCII_OFFSET } }
end