diff --git a/lib/linguist/blob.rb b/lib/linguist/blob.rb index aee9e36a..d472381f 100644 --- a/lib/linguist/blob.rb +++ b/lib/linguist/blob.rb @@ -12,10 +12,6 @@ module Linguist attr_reader :name - def data - @blob.data - end - def mime_type Mime.lookup(name.extname) end @@ -29,10 +25,26 @@ module Linguist end end + def data + @blob.data + end + + def lines + @lines ||= data ? data.split("\n", -1) : [] + end + def size @blob.size end + def loc + lines.size + end + + def sloc + lines.grep(/\S/).size + end + def submodule? defined?(Grit::Submodule) && @blob.kind_of?(Grit::Submodule) end diff --git a/test/test_blob.rb b/test/test_blob.rb index c12ec660..747e886c 100644 --- a/test/test_blob.rb +++ b/test/test_blob.rb @@ -51,10 +51,22 @@ class TestBlob < Test::Unit::TestCase assert_equal "module Foo\nend\n", blob("foo.rb").data end + def test_lines + assert_equal ["module Foo", "end", ""], blob("foo.rb").lines + end + def test_size assert_equal 15, blob("foo.rb").size end + def test_loc + assert_equal 3, blob("foo.rb").loc + end + + def test_sloc + assert_equal 2, blob("foo.rb").sloc + end + def test_binary assert blob("linguist.gem").binary? assert blob("git.deb").binary?