rfile 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/rfile.rb +15 -7
- metadata +5 -5
data/lib/rfile.rb
CHANGED
@@ -1,13 +1,17 @@
|
|
1
|
-
# $Id: rfile.rb
|
1
|
+
# $Id: rfile.rb 46 2006-08-14 06:13:47Z cmaujean $
|
2
|
+
#
|
2
3
|
# See LICENSE for copyright information
|
4
|
+
#
|
3
5
|
# This class is a line oriented "file" object that operates
|
4
6
|
# without keeping the file in memory.
|
7
|
+
#
|
5
8
|
# Enumerable is mixed in, so see Enumerable for more
|
6
9
|
# information.
|
10
|
+
#
|
7
11
|
class RFile
|
8
12
|
include Enumerable
|
9
13
|
|
10
|
-
# indexes
|
14
|
+
# parses and indexes <i>filename</i>.
|
11
15
|
#--
|
12
16
|
# storing line information (offset and length)
|
13
17
|
#++
|
@@ -26,13 +30,15 @@ class RFile
|
|
26
30
|
@rndindex = @index.clone
|
27
31
|
end
|
28
32
|
|
29
|
-
# returns a random line from the file
|
33
|
+
# returns a random line from the file. will not repeat lines.
|
34
|
+
# returns nil when the file is exausted. note: does not modify file.
|
30
35
|
def randomline
|
31
36
|
entry = nil
|
32
37
|
while entry.nil? and @rndindex.length > 0
|
33
38
|
entry = @rndindex.delete_at(rand(@rndindex.length))
|
34
39
|
end
|
35
|
-
|
40
|
+
entry.nil? and return nil
|
41
|
+
entry.length == 2 and return IO.read(@filename, entry[0], entry[1]).chomp
|
36
42
|
end
|
37
43
|
|
38
44
|
# returns the line at num
|
@@ -42,9 +48,11 @@ class RFile
|
|
42
48
|
end
|
43
49
|
|
44
50
|
# yields each line in the file, in turn.
|
45
|
-
#
|
46
|
-
#
|
47
|
-
|
51
|
+
#
|
52
|
+
# note: currently IO intensive as it will open and close the file
|
53
|
+
# for each line.
|
54
|
+
#
|
55
|
+
def each # :yields:line
|
48
56
|
@index.each_with_index do |entry,i|
|
49
57
|
yield line(i) unless entry.nil?
|
50
58
|
end
|
metadata
CHANGED
@@ -3,14 +3,14 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: rfile
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.1.
|
6
|
+
version: 0.1.1
|
7
7
|
date: 2006-08-13 00:00:00 -07:00
|
8
8
|
summary: a read only, line oriented, sparse file class
|
9
9
|
require_paths:
|
10
10
|
- lib
|
11
11
|
email: cmaujean@gmail.com
|
12
12
|
homepage: http://rubyforge.org/projects/ngslib
|
13
|
-
rubyforge_project:
|
13
|
+
rubyforge_project: ngslib
|
14
14
|
description:
|
15
15
|
autorequire:
|
16
16
|
default_executable:
|
@@ -31,15 +31,15 @@ authors:
|
|
31
31
|
files:
|
32
32
|
- lib/rfile.rb
|
33
33
|
- lib/LICENSE
|
34
|
-
- test/tc_rfile.rb
|
35
34
|
- test/data
|
35
|
+
- test/tc_rfile.rb
|
36
36
|
- test/data/testfile
|
37
37
|
test_files:
|
38
38
|
- test/tc_rfile.rb
|
39
39
|
rdoc_options: []
|
40
40
|
|
41
|
-
extra_rdoc_files:
|
42
|
-
|
41
|
+
extra_rdoc_files:
|
42
|
+
- lib/LICENSE
|
43
43
|
executables: []
|
44
44
|
|
45
45
|
extensions: []
|