Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merge pull request #250 from github/mac-format

Handle Mac Format when splitting lines
  • Loading branch information...
commit 567cd6ef68bdaa8ab42f132ef6ad6707d47672c3 2 parents ae13784 + 887a050
@rtomayko rtomayko authored
View
26 lib/linguist/blob_helper.rb
@@ -204,7 +204,31 @@ def vendored?
#
# Returns an Array of lines
def lines
- @lines ||= (viewable? && data) ? data.split("\n", -1) : []
+ @lines ||=
+ if viewable? && data
+ data.split(line_split_character, -1)
+ else
+ []
+ end
+ end
+
+ # Character used to split lines. This is almost always "\n" except when Mac
+ # Format is detected in which case it's "\r".
+ #
+ # Returns a split pattern string.
+ def line_split_character
+ @line_split_character ||= (mac_format?? "\r" : "\n")
+ end
+
+ # Public: Is the data in ** Mac Format **. This format uses \r (0x0d) characters
+ # for line ends and does not include a \n (0x0a).
+ #
+ # Returns true when mac format is detected.
+ def mac_format?
+ return if !viewable?
+ if pos = data[0, 4096].index("\r")
+ data[pos + 1] != ?\n
+ end
end
# Public: Get number of lines of code
View
1  samples/Text/mac.txt
@@ -0,0 +1 @@
+line 1 line 2
View
8 test/test_blob.rb
@@ -65,6 +65,14 @@ def test_lines
assert_equal ["module Foo", "end", ""], blob("Ruby/foo.rb").lines
end
+ def test_mac_format
+ assert blob("Text/mac.txt").mac_format?
+ end
+
+ def test_lines_mac_format
+ assert_equal ["line 1", "line 2", ""], blob("Text/mac.txt").lines
+ end
+
def test_size
assert_equal 15, blob("Ruby/foo.rb").size
end
Please sign in to comment.
Something went wrong with that request. Please try again.