From 90dea6d415bfc5734bc87c2797b26cca311246bc Mon Sep 17 00:00:00 2001 From: scott Chacon Date: Tue, 20 Nov 2007 13:24:44 -0800 Subject: have the pure ruby bindings working to some degree --- lib/git/raw/internal/mmap.rb | 70 +++++++++++++++++++++++--------------------- 1 file changed, 37 insertions(+), 33 deletions(-) (limited to 'lib/git/raw/internal/mmap.rb') diff --git a/lib/git/raw/internal/mmap.rb b/lib/git/raw/internal/mmap.rb index d7390b1..15b5628 100644 --- a/lib/git/raw/internal/mmap.rb +++ b/lib/git/raw/internal/mmap.rb @@ -2,43 +2,47 @@ begin require 'mmap' rescue LoadError -module Git module Raw module Internal - class Mmap - def initialize(file) - @file = file - @offset = nil - end +module Git + module Raw + module Internal + class Mmap + def initialize(file) + @file = file + @offset = nil + end - def unmap - @file = nil - end + def unmap + @file = nil + end - def [](*idx) - idx = idx[0] if idx.length == 1 - case idx - when Range - offset = idx.first - len = idx.last - idx.first + idx.exclude_end? ? 0 : 1 - when Fixnum - offset = idx - len = nil - when Array - offset, len = idx - else - raise RuntimeError, "invalid index param: #{idx.class}" - end - if @offset != offset - @file.seek(offset) - end - @offset = offset + len ? len : 1 - if not len - @file.read(1)[0] - else - @file.read(len) + def [](*idx) + idx = idx[0] if idx.length == 1 + case idx + when Range + offset = idx.first + len = idx.last - idx.first + idx.exclude_end? ? 0 : 1 + when Fixnum + offset = idx + len = nil + when Array + offset, len = idx + else + raise RuntimeError, "invalid index param: #{idx.class}" + end + if @offset != offset + @file.seek(offset) + end + @offset = offset + len ? len : 1 + if not len + @file.read(1)[0] + else + @file.read(len) + end + end end end - end -end end + end +end end # rescue LoadError -- cgit