riel 1.0.0 → 1.1.2

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/riel/hash.rb CHANGED
@@ -9,4 +9,7 @@ class Hash
9
9
  end
10
10
  $-w = true
11
11
 
12
+ #$$$ add HashToArray
13
+ # checkins_by_month = Hash.new { |hash, key| hash[key] = Array.new }
14
+
12
15
  end
data/lib/riel/io.rb CHANGED
@@ -1,6 +1,9 @@
1
1
  #!/usr/bin/ruby -w
2
2
  # -*- ruby -*-
3
3
 
4
+ require 'riel/file'
5
+
6
+
4
7
  class IO
5
8
 
6
9
  $-w = false
@@ -17,4 +20,14 @@ class IO
17
20
 
18
21
  $-w = true
19
22
 
23
+ def self.writelines(name, lines)
24
+ fpn = File._to_pathname(name)
25
+
26
+ fpn.open(File::WRONLY | File::TRUNC | File::CREAT) do |f|
27
+ f.puts lines
28
+ end
29
+
30
+ fpn
31
+ end
32
+
20
33
  end
data/lib/riel/pathname.rb CHANGED
@@ -13,4 +13,12 @@ class Pathname
13
13
  basename.to_s - extname.to_s
14
14
  end
15
15
 
16
+ # Returns an array of the path split into its components.
17
+ # for example: "/usr/bin/ls" => "usr", "bin", "ls"
18
+ def split_path
19
+ elements = Array.new
20
+ each_filename { |fn| elements << fn.to_s }
21
+ elements
22
+ end
23
+
16
24
  end
data/lib/riel/string.rb CHANGED
@@ -3,13 +3,27 @@
3
3
 
4
4
  require 'riel/text'
5
5
 
6
+ #
7
+ # = string.rb
8
+ #
9
+ # RIEL extensions to the Ruby String class.
10
+ #
11
+ # Author:: Jeff Pace <jpace@incava.org>
12
+ # Documentation:: Author
13
+ #
14
+
6
15
  class String
7
16
 
17
+ #
18
+ # Returns whether the string ends with the given substring.
19
+ #
8
20
  def ends_with(substr)
9
21
  return rindex(substr) == (length - substr.length)
10
22
  end
11
23
 
12
- # Returns the string, as a number if it is one, and nil otherwise.
24
+ #
25
+ # Returns the string, as a number if it is one, and nil otherwise,
26
+ #
13
27
  def num
14
28
  begin
15
29
  Integer(self)
@@ -18,31 +32,59 @@ class String
18
32
  end
19
33
  end
20
34
 
21
- # returns a string based on this instance, with the first occurrance of
35
+ #
36
+ # Returns a string based on this instance, with the first occurrance of
22
37
  # +other+ removed. +other+ may be a string or regular expression.
38
+ #
23
39
  def -(other)
24
40
  sub(other, '')
25
41
  end
26
42
 
43
+ #
44
+ # Represents infinity, for the +to_ranges+ function.
45
+ #
27
46
  Infinity = (1.0 / 0)
28
47
 
48
+ # :stopdoc:
29
49
  # from (maybe to this)
30
50
  RANGE_REGEXP = %r{^ \s* (\d*) (?: \s* (\-|\.\.) \s* (\d*) )? \s* $ }x
51
+ # :startdoc:
31
52
 
32
- # splits num into array of ranges.
33
- # handles
53
+ #
54
+ # A class method for +to_ranges+. Deprecated in favor of the instance method.
55
+ #
34
56
  def self.to_ranges(str, args = Hash.new)
57
+ str.to_ranges(args)
58
+ end
59
+
60
+ #
61
+ # Splits num into array of ranges, limiting itself to +args[:min]+ and +args[:max]+,
62
+ # if specified. The +args[:collapse]+, if true, results in sequential values put
63
+ # into the same range.
64
+ #
65
+ # Examples:
66
+ #
67
+ # "1,2".to_ranges # [ 1 .. 1, 2 .. 2 ]
68
+ # "1,2".to_ranges :collapse => true # [ 1 .. 2 ]
69
+ # "1-4".to_ranges # [ 1 .. 4 ]
70
+ # "1-3,5-6,10,11,12,".to_ranges :collapse => true # [ 1 .. 3, 5 .. 6, 10 .. 12 ]
71
+ # "1-3,5-6,10,11,12,".to_ranges # [ 1 .. 3, 5 .. 6, 10 .. 10, 11 .. 11, 12 .. 12 ]
72
+ # "-4".to_ranges # [ -String::Infinity .. 4 ]
73
+ # "4-".to_ranges # [ 4 .. String::Infinity ]
74
+ # "1-".to_ranges :min => 0, :max => 8 # [ 1 .. 8 ]
75
+ #
76
+ def to_ranges(args = Hash.new)
35
77
  min = args[:min] || -Infinity
36
78
  max = args[:max] || Infinity
37
79
  collapse = args[:collapse]
38
80
 
39
81
  ranges = Array.new
40
- str.split(%r{\s*,\s*}).each do |section|
82
+ self.split(%r{\s*,\s*}).each do |section|
41
83
  md = section.match(RANGE_REGEXP)
42
84
  next unless md
43
85
 
44
- from = _matchdata_to_number(md, 1, min)
45
- to = _has_matchdata?(md, 2) ? _matchdata_to_number(md, 3, max) : from
86
+ from = String._matchdata_to_number(md, 1, min)
87
+ to = String._has_matchdata?(md, 2) ? String._matchdata_to_number(md, 3, max) : from
46
88
 
47
89
  prevrange = ranges[-1]
48
90
 
@@ -56,26 +98,28 @@ class String
56
98
  ranges
57
99
  end
58
100
 
59
- def self._has_matchdata?(md, idx)
60
- md && md[idx] && !md[idx].empty?
61
- end
62
-
63
- def self._matchdata_to_number(md, idx, default)
64
- _has_matchdata?(md, idx) ? md[idx].to_i : default
65
- end
66
-
67
- def to_ranges
68
- String.to_ranges(self)
69
- end
70
-
101
+ # :stopdoc:
71
102
  HIGHLIGHTER = ::Text::ANSIHighlighter.new
72
-
73
- # returns a highlighted (colored) version of the string, applying the regular
103
+ # :startdoc:
104
+
105
+ #
106
+ # Returns a highlighted (colored) version of the string, applying the regular
74
107
  # expressions in the array, which are paired with the desired color.
108
+ #
75
109
  def highlight(re, color)
76
110
  gsub(re) do |match|
77
111
  HIGHLIGHTER.color(color, match)
78
112
  end
79
113
  end
80
114
 
115
+ # :stopdoc:
116
+ def self._has_matchdata?(md, idx)
117
+ md && md[idx] && !md[idx].empty?
118
+ end
119
+
120
+ def self._matchdata_to_number(md, idx, default)
121
+ _has_matchdata?(md, idx) ? md[idx].to_i : default
122
+ end
123
+ # :startdoc:
124
+
81
125
  end
data/test/riel/io_test.rb CHANGED
@@ -2,11 +2,12 @@
2
2
  # -*- ruby -*-
3
3
 
4
4
  require 'rubyunit'
5
- require 'riel/env'
5
+ require 'riel/io'
6
+
6
7
 
7
8
  class IOTestCase < RUNIT::TestCase
8
9
 
9
- def test_readlines
10
+ def xtest_readlines
10
11
  orig = $/
11
12
 
12
13
  $/ = nil
@@ -19,4 +20,18 @@ class IOTestCase < RUNIT::TestCase
19
20
  $/ = orig
20
21
  end
21
22
 
23
+ def test_writelines
24
+ name = "/tmp/testfile_writelines." + $$.to_s
25
+ writelines = Array.new
26
+ writelines << "this is line one"
27
+ writelines << "line two is this"
28
+
29
+ puts "writelines: <<<#{writelines}>>>"
30
+
31
+ IO.writelines(name, writelines)
32
+
33
+ readlines = IO.readlines name
34
+ assert_equal writelines.collect { |line| line + "\n" }, readlines
35
+ end
36
+
22
37
  end
@@ -11,6 +11,10 @@ class StringToRangeTestCase < RUNIT::TestCase
11
11
  String.to_ranges(str, args).each_with_index do |rg, idx|
12
12
  assert_equal exp[idx], rg
13
13
  end
14
+
15
+ str.to_ranges(args).each_with_index do |rg, idx|
16
+ assert_equal exp[idx], rg
17
+ end
14
18
  end
15
19
 
16
20
  def test_string_to_range
@@ -22,7 +26,7 @@ class StringToRangeTestCase < RUNIT::TestCase
22
26
 
23
27
  do_string_to_range_test([ 1 .. 4 ], "1-4")
24
28
  do_string_to_range_test([ -String::Infinity .. 4 ], "-4")
25
- do_string_to_range_test([ 4 .. String::Infinity ], "4-")
29
+ do_string_to_range_test([ 4 .. String::Infinity ], "4-")
26
30
 
27
31
  do_string_to_range_test([ -8 .. 4 ], "-4", :min => -8)
28
32
  do_string_to_range_test([ 0 .. 4 ], "-4", :min => 0)
metadata CHANGED
@@ -5,9 +5,9 @@ version: !ruby/object:Gem::Version
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
- - 0
9
- - 0
10
- version: 1.0.0
8
+ - 1
9
+ - 2
10
+ version: 1.1.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jeff Pace
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-07 00:00:00 -04:00
18
+ date: 2011-04-30 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
@@ -29,51 +29,51 @@ extra_rdoc_files:
29
29
  - README
30
30
  files:
31
31
  - lib/riel.rb
32
- - lib/riel/enumerable.rb
33
- - lib/riel/date.rb
34
- - lib/riel/text.rb
32
+ - lib/riel/filetype.rb
35
33
  - lib/riel/rcfile.rb
36
- - lib/riel/dir.rb
37
34
  - lib/riel/matchdata.rb
35
+ - lib/riel/enumerable.rb
36
+ - lib/riel/size_converter.rb
37
+ - lib/riel/pathname.rb
38
+ - lib/riel/array.rb
38
39
  - lib/riel/io.rb
39
- - lib/riel/env.rb
40
+ - lib/riel/regexp.rb
41
+ - lib/riel/ansicolor.rb
42
+ - lib/riel/date.rb
40
43
  - lib/riel/hash.rb
41
- - lib/riel/array.rb
42
44
  - lib/riel/optproc.rb
43
- - lib/riel/regexp.rb
44
- - lib/riel/log.rb
45
+ - lib/riel/command.rb
46
+ - lib/riel/tempfile.rb
45
47
  - lib/riel/file.rb
48
+ - lib/riel/dir.rb
49
+ - lib/riel/text.rb
50
+ - lib/riel/env.rb
51
+ - lib/riel/log.rb
52
+ - lib/riel/timer.rb
46
53
  - lib/riel/string.rb
47
54
  - lib/riel/setdiff.rb
48
- - lib/riel/tempfile.rb
49
- - lib/riel/timer.rb
50
- - lib/riel/filetype.rb
51
- - lib/riel/ansicolor.rb
52
- - lib/riel/pathname.rb
53
- - lib/riel/size_converter.rb
54
- - lib/riel/command.rb
55
+ - test/riel/setdiff_test.rb
56
+ - test/riel/command_test.rb
57
+ - test/riel/log_test.rb
58
+ - test/riel/array_test.rb
55
59
  - test/riel/optproc_test.rb
56
- - test/riel/text_test.rb
60
+ - test/riel/tempfile_test.rb
57
61
  - test/riel/timer_test.rb
58
- - test/riel/hash_test.rb
62
+ - test/riel/regexp_test.rb
63
+ - test/riel/dir_test.rb
64
+ - test/riel/date_test.rb
65
+ - test/riel/size_converter_test.rb
59
66
  - test/riel/env_test.rb
60
67
  - test/riel/file_test.rb
61
- - test/riel/size_converter_test.rb
62
- - test/riel/io_test.rb
63
- - test/riel/rcfile_test.rb
64
- - test/riel/log_test.rb
65
- - test/riel/tempfile_test.rb
66
68
  - test/riel/filetype_test.rb
67
- - test/riel/setdiff_test.rb
68
- - test/riel/array_test.rb
69
+ - test/riel/text_test.rb
70
+ - test/riel/string_test.rb
69
71
  - test/riel/enumerable_test.rb
70
- - test/riel/dir_test.rb
71
72
  - test/riel/matchdata_test.rb
72
73
  - test/riel/pathname_test.rb
73
- - test/riel/string_test.rb
74
- - test/riel/regexp_test.rb
75
- - test/riel/command_test.rb
76
- - test/riel/date_test.rb
74
+ - test/riel/hash_test.rb
75
+ - test/riel/rcfile_test.rb
76
+ - test/riel/io_test.rb
77
77
  - README
78
78
  has_rdoc: true
79
79
  homepage: http://www.incava.org/projects/riel
@@ -110,25 +110,25 @@ signing_key:
110
110
  specification_version: 3
111
111
  summary: Set of extensions to core Ruby code.
112
112
  test_files:
113
+ - test/riel/setdiff_test.rb
114
+ - test/riel/command_test.rb
115
+ - test/riel/log_test.rb
116
+ - test/riel/array_test.rb
113
117
  - test/riel/optproc_test.rb
114
- - test/riel/text_test.rb
118
+ - test/riel/tempfile_test.rb
115
119
  - test/riel/timer_test.rb
116
- - test/riel/hash_test.rb
120
+ - test/riel/regexp_test.rb
121
+ - test/riel/dir_test.rb
122
+ - test/riel/date_test.rb
123
+ - test/riel/size_converter_test.rb
117
124
  - test/riel/env_test.rb
118
125
  - test/riel/file_test.rb
119
- - test/riel/size_converter_test.rb
120
- - test/riel/io_test.rb
121
- - test/riel/rcfile_test.rb
122
- - test/riel/log_test.rb
123
- - test/riel/tempfile_test.rb
124
126
  - test/riel/filetype_test.rb
125
- - test/riel/setdiff_test.rb
126
- - test/riel/array_test.rb
127
+ - test/riel/text_test.rb
128
+ - test/riel/string_test.rb
127
129
  - test/riel/enumerable_test.rb
128
- - test/riel/dir_test.rb
129
130
  - test/riel/matchdata_test.rb
130
131
  - test/riel/pathname_test.rb
131
- - test/riel/string_test.rb
132
- - test/riel/regexp_test.rb
133
- - test/riel/command_test.rb
134
- - test/riel/date_test.rb
132
+ - test/riel/hash_test.rb
133
+ - test/riel/rcfile_test.rb
134
+ - test/riel/io_test.rb