diff --git a/lib/gollum/file.rb b/lib/gollum/file.rb index da244d63..d641d720 100644 --- a/lib/gollum/file.rb +++ b/lib/gollum/file.rb @@ -1,6 +1,6 @@ module Gollum class File - attr_accessor :wiki + attr_accessor :wiki, :blob # Initialize a file. # @@ -10,5 +10,28 @@ module Gollum def initialize(wiki) self.wiki = wiki end + + # The raw contents of the page. + # + # Returns the String data. + def raw_data + self.blob.data rescue nil + end + + # Find a file in the given Gollum repo. + # + # name - The full String path. + # version - The String version ID to find. + # + # Returns a Gollum::File or nil if the file could not be found. + def find(name, version) + commit = self.wiki.repo.commit(version) + if blob = commit.tree / name + self.blob = blob + self + else + nil + end + end end end \ No newline at end of file diff --git a/lib/gollum/wiki.rb b/lib/gollum/wiki.rb index b13e6cb2..2e8f8583 100644 --- a/lib/gollum/wiki.rb +++ b/lib/gollum/wiki.rb @@ -24,11 +24,12 @@ module Gollum # Get the static file for a given name. # - # name - The full String pathname to the file. + # name - The full String pathname to the file. + # version - The String version ID to find (default: "master"). # # Returns a Gollum::File or nil if no matching file was found. - def file(name) - File.new(self).find(name) + def file(name, version = 'master') + File.new(self).find(name, version) end end end \ No newline at end of file diff --git a/test/examples/lotr.git/objects/0a/de1e2916346d4c1f2fb63b863fd3c16808fe44 b/test/examples/lotr.git/objects/0a/de1e2916346d4c1f2fb63b863fd3c16808fe44 new file mode 100644 index 00000000..a2627090 Binary files /dev/null and b/test/examples/lotr.git/objects/0a/de1e2916346d4c1f2fb63b863fd3c16808fe44 differ diff --git a/test/examples/lotr.git/objects/0e/ea197b933bd98373114d59c7e49728741af3f9 b/test/examples/lotr.git/objects/0e/ea197b933bd98373114d59c7e49728741af3f9 new file mode 100644 index 00000000..0ee8820b Binary files /dev/null and b/test/examples/lotr.git/objects/0e/ea197b933bd98373114d59c7e49728741af3f9 differ diff --git a/test/examples/lotr.git/objects/bf/b7c7a5cde53272a1d202e08bdef4058de85133 b/test/examples/lotr.git/objects/bf/b7c7a5cde53272a1d202e08bdef4058de85133 new file mode 100644 index 00000000..e66b5768 Binary files /dev/null and b/test/examples/lotr.git/objects/bf/b7c7a5cde53272a1d202e08bdef4058de85133 differ diff --git a/test/examples/lotr.git/objects/f0/1428b3138994aab19d5f880b6f37336ddf1f24 b/test/examples/lotr.git/objects/f0/1428b3138994aab19d5f880b6f37336ddf1f24 new file mode 100644 index 00000000..86aa8a93 Binary files /dev/null and b/test/examples/lotr.git/objects/f0/1428b3138994aab19d5f880b6f37336ddf1f24 differ diff --git a/test/examples/lotr.git/refs/heads/master b/test/examples/lotr.git/refs/heads/master index d3d48f48..64d557b8 100644 --- a/test/examples/lotr.git/refs/heads/master +++ b/test/examples/lotr.git/refs/heads/master @@ -1 +1 @@ -fbabba862dfa7ac35b39042dd4ad780c9f67b8cb +f01428b3138994aab19d5f880b6f37336ddf1f24 diff --git a/test/test_file.rb b/test/test_file.rb index 47b9c97a..8b96e5e7 100644 --- a/test/test_file.rb +++ b/test/test_file.rb @@ -7,5 +7,11 @@ context "File" do test "new file" do file = Gollum::File.new(@wiki) + assert_nil file.raw_data + end + + test "existing file" do + file = @wiki.file("Mordor/todo.txt") + assert_equal "[ ] Write section on Ents\n", file.raw_data end end \ No newline at end of file diff --git a/test/test_page.rb b/test/test_page.rb index da398ef6..9b2693d6 100644 --- a/test/test_page.rb +++ b/test/test_page.rb @@ -18,7 +18,7 @@ context "Page" do assert page.formatted_data =~ /
Bilbo Baggins/ assert_equal 'Bilbo-Baggins.md', page.path assert_equal :markdown, page.format - assert_equal 'fbabba862dfa7ac35b39042dd4ad780c9f67b8cb', page.version.id + assert_equal @wiki.repo.commits.first.id, page.version.id end test "get nested page" do