Skip to content

Commit

Permalink
Merge pull request #14 from Sam-Serpoosh/master
Browse files Browse the repository at this point in the history
Ruby version of UnicodeFileToHtmlTextConverter both original problem and tested and refactored solution
  • Loading branch information
lucaminudel committed Sep 12, 2012
2 parents bcad52d + ccc1cc6 commit 428078b
Show file tree
Hide file tree
Showing 3 changed files with 81 additions and 0 deletions.
@@ -0,0 +1,30 @@
class UnicodeFileToHtmTextConverter
def initialize(full_file_name_with_path)
@full_file_name_with_path = full_file_name_with_path
@html = ""
end

def convert_to_html
text = read_content
text.each_line { |line| @html += to_html(line) }

@html
end

private
def read_content
FileReader.read_content(@full_file_name_with_path)
end

def to_html(text)
converted = HttpUtility.html_encode(text)
converted += "<br />"
end
end

class FileReader
def self.read_content(file_path)
text = File.open(file_path).read # Not exactly the same thing as the # CShapr code but same functionality!
text.gsub!(/\r\n?/, "\n")
end
end
@@ -0,0 +1,33 @@
require_relative "../../code/unicode_file_to_html_text_converter/unicode_file_to_html_text_converter"

class HttpUtility; end

describe UnicodeFileToHtmTextConverter do
let(:file_path) { stub }
let(:foobar) { "foobar" }

before do
@converter = UnicodeFileToHtmTextConverter.new(file_path)
end

it "reads the file content" do
FileReader.should_receive(:read_content).with(file_path).
and_return(foobar)
HttpUtility.stub(:html_encode => foobar)

@converter.convert_to_html
end

it "converts to html on a line basis" do
FileReader.stub(:read_content => foobar)
HttpUtility.should_receive(:html_encode).and_return("<b>foobar</b>")

html = @converter.convert_to_html
html.should == "<b>foobar</b><br />"
end
end

# Another way of doing this which specially more suitable for
# statically typed languages is inject the FileReader &
# HttpUtility through the constructor according to
# Dependency Inversion Principle
@@ -0,0 +1,18 @@
class UnicodeFileToHtmTextConverter
def initialize(full_file_name_with_path)
@full_file_name_with_path = full_file_name_with_path
end

def convert_to_html
html = ""

text = File.open(@full_file_name_with_path).read # Not exactly the same code in CSharp but same functionality!
text.gsub!(/\r\n?/, "\n")
text.each_line do |line|
html += HttpUtility.html_encode(line)
html += "<br />"
end

return html
end
end

0 comments on commit 428078b

Please sign in to comment.