libpath-ruby 0.2.2 → 0.2.2.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.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +33 -0
  3. data/README.md +25 -8
  4. data/examples/path_from_arg0.md +43 -43
  5. data/examples/path_from_arg0.rb +25 -23
  6. data/lib/libpath/constants/unix.rb +74 -74
  7. data/lib/libpath/constants/windows.rb +75 -75
  8. data/lib/libpath/constants.rb +20 -20
  9. data/lib/libpath/diagnostics/parameter_checking.rb +27 -26
  10. data/lib/libpath/diagnostics.rb +1 -1
  11. data/lib/libpath/exceptions/libpath_base_exception.rb +20 -21
  12. data/lib/libpath/exceptions/malformed_name_exception.rb +27 -27
  13. data/lib/libpath/exceptions.rb +1 -1
  14. data/lib/libpath/form/unix.rb +118 -118
  15. data/lib/libpath/form/windows.rb +228 -214
  16. data/lib/libpath/form.rb +20 -21
  17. data/lib/libpath/internal_/array.rb +57 -57
  18. data/lib/libpath/internal_/platform.rb +30 -31
  19. data/lib/libpath/internal_/string.rb +25 -20
  20. data/lib/libpath/internal_/unix/form.rb +124 -119
  21. data/lib/libpath/internal_/windows/drive.rb +80 -75
  22. data/lib/libpath/internal_/windows/form.rb +205 -194
  23. data/lib/libpath/libpath.rb +4 -1
  24. data/lib/libpath/path/unix.rb +120 -118
  25. data/lib/libpath/path/windows.rb +126 -124
  26. data/lib/libpath/path.rb +21 -21
  27. data/lib/libpath/util/unix.rb +261 -261
  28. data/lib/libpath/util/windows.rb +403 -403
  29. data/lib/libpath/util.rb +20 -20
  30. data/lib/libpath/version.rb +25 -26
  31. data/lib/libpath.rb +1 -1
  32. data/test/performance/benchmark_drive_letter.rb +50 -10
  33. data/test/performance/benchmark_gsub_string_or_regex.rb +27 -23
  34. data/test/performance/benchmark_rindex2.rb +56 -48
  35. data/test/performance/benchmark_split.rb +16 -10
  36. data/test/unit/compare/ts_all.rb +4 -4
  37. data/test/unit/equate/ts_all.rb +4 -4
  38. data/test/unit/equate/unix/ts_all.rb +4 -4
  39. data/test/unit/equate/windows/ts_all.rb +4 -4
  40. data/test/unit/exceptions/tc_libpath_base_exception.rb +10 -8
  41. data/test/unit/exceptions/tc_malformed_name_exception.rb +14 -12
  42. data/test/unit/exceptions/ts_all.rb +4 -4
  43. data/test/unit/form/tc_absolute_functions.rb +242 -240
  44. data/test/unit/form/ts_all.rb +4 -4
  45. data/test/unit/form/unix/tc_absolute_functions.rb +158 -155
  46. data/test/unit/form/unix/ts_all.rb +4 -4
  47. data/test/unit/form/windows/tc_absolute_functions.rb +628 -625
  48. data/test/unit/form/windows/ts_all.rb +4 -4
  49. data/test/unit/internal_/tc_array.rb +36 -32
  50. data/test/unit/internal_/ts_all.rb +4 -4
  51. data/test/unit/internal_/unix/form/tc_slash_functions.rb +38 -35
  52. data/test/unit/internal_/unix/form/ts_all.rb +4 -4
  53. data/test/unit/internal_/unix/tc_split_path.rb +387 -384
  54. data/test/unit/internal_/unix/ts_all.rb +4 -4
  55. data/test/unit/internal_/windows/form/tc_get_windows_volume.rb +157 -153
  56. data/test/unit/internal_/windows/form/tc_slash_functions.rb +39 -35
  57. data/test/unit/internal_/windows/form/ts_all.rb +4 -4
  58. data/test/unit/internal_/windows/tc_split_path.rb +874 -869
  59. data/test/unit/internal_/windows/ts_all.rb +4 -4
  60. data/test/unit/parse/ts_all.rb +4 -4
  61. data/test/unit/path/tc_path.rb +732 -732
  62. data/test/unit/path/ts_all.rb +4 -4
  63. data/test/unit/path/unix/tc_path.rb +544 -540
  64. data/test/unit/path/unix/ts_all.rb +4 -4
  65. data/test/unit/path/windows/tc_path.rb +608 -603
  66. data/test/unit/path/windows/ts_all.rb +4 -4
  67. data/test/unit/tc_version.rb +25 -22
  68. data/test/unit/ts_all.rb +4 -4
  69. data/test/unit/util/tc_combine_paths.rb +110 -105
  70. data/test/unit/util/tc_derive_relative_path.rb +8 -3
  71. data/test/unit/util/tc_make_path_canonical.rb +142 -138
  72. data/test/unit/util/ts_all.rb +4 -4
  73. data/test/unit/util/unix/tc_combine_paths.rb +38 -34
  74. data/test/unit/util/unix/tc_derive_relative_path.rb +80 -75
  75. data/test/unit/util/unix/tc_make_path_absolute.rb +74 -70
  76. data/test/unit/util/unix/tc_make_path_canonical.rb +95 -90
  77. data/test/unit/util/unix/ts_all.rb +4 -4
  78. data/test/unit/util/windows/tc_combine_paths.rb +82 -77
  79. data/test/unit/util/windows/tc_derive_relative_path.rb +98 -93
  80. data/test/unit/util/windows/tc_make_path_absolute.rb +105 -101
  81. data/test/unit/util/windows/tc_make_path_canonical.rb +158 -153
  82. data/test/unit/util/windows/ts_all.rb +4 -4
  83. metadata +9 -8
@@ -1,87 +1,92 @@
1
1
 
2
- module LibPath # :nodoc:
2
+ # :stopdoc:
3
+
4
+
5
+ module LibPath
3
6
  # @!visibility private
4
7
  module Internal_ # :nodoc: all
5
8
  # @!visibility private
6
9
  module Windows # :nodoc:
7
- # @!visibility private
8
- module Drive # :nodoc:
9
10
 
10
- # @!visibility private
11
- module Constants # :nodoc:
12
-
13
- DRIVE_LETTERS = [
14
-
15
- 'C',
16
- 'D',
17
- 'E',
18
- 'F',
19
- 'G',
20
- 'H',
21
- 'I',
22
- 'J',
23
- 'K',
24
- 'L',
25
- 'M',
26
- 'N',
27
- 'P',
28
- 'Q',
29
- 'R',
30
- 'S',
31
- 'T',
32
- 'U',
33
- 'V',
34
- 'W',
35
- 'I',
36
- 'X',
37
- 'Y',
38
- 'Z',
39
-
40
- 'c',
41
- 'd',
42
- 'e',
43
- 'f',
44
- 'g',
45
- 'h',
46
- 'i',
47
- 'j',
48
- 'k',
49
- 'l',
50
- 'm',
51
- 'n',
52
- 'p',
53
- 'q',
54
- 'r',
55
- 's',
56
- 't',
57
- 'u',
58
- 'v',
59
- 'w',
60
- 'i',
61
- 'x',
62
- 'y',
63
- 'z',
64
-
65
- 'A',
66
- 'B',
67
-
68
- 'a',
69
- 'b',
70
-
71
- ]
72
- end # module Constants
73
-
74
- # @!visibility private
75
- def self.character_is_drive_letter? ch # :nodoc:
76
-
77
- ::LibPath::Internal_::Windows::Drive::Constants::DRIVE_LETTERS.include? ch
78
- end
79
-
80
- end # module Drive
11
+ # @!visibility private
12
+ module Drive # :nodoc:
13
+
14
+ # @!visibility private
15
+ module Constants # :nodoc:
16
+
17
+ DRIVE_LETTERS = [
18
+
19
+ 'C',
20
+ 'D',
21
+ 'E',
22
+ 'F',
23
+ 'G',
24
+ 'H',
25
+ 'I',
26
+ 'J',
27
+ 'K',
28
+ 'L',
29
+ 'M',
30
+ 'N',
31
+ 'P',
32
+ 'Q',
33
+ 'R',
34
+ 'S',
35
+ 'T',
36
+ 'U',
37
+ 'V',
38
+ 'W',
39
+ 'I',
40
+ 'X',
41
+ 'Y',
42
+ 'Z',
43
+
44
+ 'c',
45
+ 'd',
46
+ 'e',
47
+ 'f',
48
+ 'g',
49
+ 'h',
50
+ 'i',
51
+ 'j',
52
+ 'k',
53
+ 'l',
54
+ 'm',
55
+ 'n',
56
+ 'p',
57
+ 'q',
58
+ 'r',
59
+ 's',
60
+ 't',
61
+ 'u',
62
+ 'v',
63
+ 'w',
64
+ 'i',
65
+ 'x',
66
+ 'y',
67
+ 'z',
68
+
69
+ 'A',
70
+ 'B',
71
+
72
+ 'a',
73
+ 'b',
74
+ ]
75
+ end # module Constants
76
+
77
+ # @!visibility private
78
+ def self.character_is_drive_letter? ch # :nodoc:
79
+
80
+ ::LibPath::Internal_::Windows::Drive::Constants::DRIVE_LETTERS.include? ch
81
+ end
82
+ end # module Drive
81
83
  end # module Windows
82
84
  end # module Internal_
83
85
  end # module LibPath
84
86
 
85
- # ############################## end of file ############################# #
86
87
 
88
+ # :startdoc:
89
+
90
+
91
+ # ############################## end of file ############################# #
87
92
 
@@ -1,286 +1,297 @@
1
1
 
2
+ # :stopdoc:
3
+
4
+
2
5
  require 'libpath/internal_/string'
3
6
  require 'libpath/internal_/windows/drive'
4
7
 
5
- module LibPath # :nodoc:
8
+
9
+ module LibPath
6
10
  # @!visibility private
7
11
  module Internal_ # :nodoc: all
8
12
  # @!visibility private
9
13
  module Windows # :nodoc:
10
14
 
11
- # @!visibility private
12
- module Form # :nodoc:
13
-
14
- # [INTERNAL] This function is undocumented, and subject to change at any
15
- # time
16
- #
17
- # @!visibility private
18
- def self.char_is_path_name_separator? c # :nodoc:
15
+ # @!visibility private
16
+ module Form # :nodoc:
17
+
18
+ # [INTERNAL] This function is undocumented, and subject to change at any
19
+ # time
20
+ #
21
+ # @!visibility private
22
+ def self.char_is_path_name_separator? c # :nodoc:
23
+
24
+ '/' == c || '\\' == c
25
+ end
19
26
 
20
- '/' == c || '\\' == c
21
- end
27
+ # [INTERNAL] This function is undocumented, and subject to change at any
28
+ # time
29
+ #
30
+ # @!visibility private
31
+ def self.append_trailing_slash s # :nodoc:
22
32
 
23
- # [INTERNAL] This function is undocumented, and subject to change at any
24
- # time
25
- #
26
- # @!visibility private
27
- def self.append_trailing_slash s # :nodoc:
33
+ return s if self.char_is_path_name_separator?(s[-1])
28
34
 
29
- return s if self.char_is_path_name_separator?(s[-1])
35
+ s + '\\'
36
+ end
30
37
 
31
- s + '\\'
32
- end
38
+ # [INTERNAL] This function is undocumented, and subject to change at any
39
+ # time
40
+ #
41
+ # @!visibility private
42
+ def self.get_trailing_slash s # :nodoc:
33
43
 
34
- # [INTERNAL] This function is undocumented, and subject to change at any
35
- # time
36
- #
37
- # @!visibility private
38
- def self.get_trailing_slash s # :nodoc:
44
+ last = s[-1]
39
45
 
40
- last = s[-1]
46
+ self.char_is_path_name_separator?(last) ? last : nil
47
+ end
41
48
 
42
- self.char_is_path_name_separator?(last) ? last : nil
43
- end
49
+ # [INTERNAL] This function is undocumented, and subject to change at any
50
+ # time
51
+ #
52
+ # @!visibility private
53
+ def self.has_trailing_slash? s # :nodoc:
44
54
 
45
- # [INTERNAL] This function is undocumented, and subject to change at any
46
- # time
47
- #
48
- # @!visibility private
49
- def self.has_trailing_slash? s # :nodoc:
55
+ self.char_is_path_name_separator?(s[-1])
56
+ end
50
57
 
51
- self.char_is_path_name_separator?(s[-1])
52
- end
58
+ # [INTERNAL] This function is undocumented, and subject to change at any
59
+ # time
60
+ #
61
+ # @!visibility private
62
+ def self.trim_trailing_slash s # :nodoc:
53
63
 
54
- # [INTERNAL] This function is undocumented, and subject to change at any
55
- # time
56
- #
57
- # @!visibility private
58
- def self.trim_trailing_slash s # :nodoc:
64
+ return s unless self.char_is_path_name_separator?(s[-1])
59
65
 
60
- return s unless self.char_is_path_name_separator?(s[-1])
66
+ s.chop
67
+ end
61
68
 
62
- s.chop
63
- end
69
+ # [INTERNAL] This function is undocumented, and subject to change at any
70
+ # time
71
+ #
72
+ # @!visibility private
73
+ def self.elide_redundant_path_name_separators s # :nodoc:
64
74
 
65
- # [INTERNAL] This function is undocumented, and subject to change at any
66
- # time
67
- #
68
- # @!visibility private
69
- def self.elide_redundant_path_name_separators s # :nodoc:
75
+ s.gsub(/[\\\/]{2,}/, '\\')
76
+ end
70
77
 
71
- s.gsub(/[\\\/]{2,}/, '\\')
72
- end
78
+ # [INTERNAL] This function is undocumented, and subject to change at any
79
+ # time
80
+ #
81
+ # @!visibility private
82
+ def self.elide_redundant_path_name_separators! s # :nodoc:
73
83
 
74
- # [INTERNAL] This function is undocumented, and subject to change at any
75
- # time
76
- #
77
- # @!visibility private
78
- def self.elide_redundant_path_name_separators! s # :nodoc:
84
+ s.gsub!(/[\\\/]{2,}/, '\\')
79
85
 
80
- s.gsub!(/[\\\/]{2,}/, '\\')
86
+ s
87
+ end
81
88
 
82
- s
83
- end
89
+ # [INTERNAL] This function is undocumented, and subject to change at any
90
+ # time
91
+ #
92
+ # === Signature
93
+ #
94
+ # * *Parameters:*
95
+ # - +s+ (String)
96
+ #
97
+ # === Return
98
+ # A 3-element array, consisting of [ volume, remainder, form ]
99
+ #
100
+ # @!visibility private
101
+ def self.get_windows_volume s # :nodoc:
84
102
 
85
- # [INTERNAL] This function is undocumented, and subject to change at any
86
- # time
87
- #
88
- # === Signature
89
- #
90
- # * *Parameters:*
91
- # - +s+ (String)
92
- #
93
- # === Return
94
- # A 3-element array, consisting of [ volume, remainder, form ]
95
- #
96
- # @!visibility private
97
- def self.get_windows_volume s # :nodoc:
103
+ _Drive = ::LibPath::Internal_::Windows::Drive
104
+ _Form = ::LibPath::Internal_::Windows::Form
98
105
 
99
- # 0. not matched
100
- # 1. X:
101
- # 2. \\server\share
102
- # 3. \\?\X:
103
- # 4. \\?\server\share
104
- # 5. \\?\UNC\server\share
105
- # 6. \\.\device
106
+ # 0. not matched
107
+ # 1. X:
108
+ # 2. \\server\share
109
+ # 3. \\?\X:
110
+ # 4. \\?\server\share
111
+ # 5. \\?\UNC\server\share
112
+ # 6. \\.\device
106
113
 
107
- if '\\' == s[0]
114
+ if '\\' == s[0]
108
115
 
109
- if '\\' == s[1]
116
+ if '\\' == s[1]
110
117
 
111
- case s[2]
112
- when '?'
118
+ case s[2]
119
+ when '?'
113
120
 
114
- if '\\' == s[3]
121
+ if '\\' == s[3]
115
122
 
116
- if ':' == s[5] && ::LibPath::Internal_::Windows::Drive.character_is_drive_letter?(s[4])
123
+ if ':' == s[5] && _Drive.character_is_drive_letter?(s[4])
117
124
 
118
- # 3. \\?\X:
125
+ # 3. \\?\X:
119
126
 
120
- return [ s[0..5], s[6..-1], :form_3 ]
121
- end
127
+ return [ s[0..5], s[6..-1], :form_3 ]
128
+ end
122
129
 
123
- if 'U' == s[4] && 'N' == s[5] && 'C' == s[6]
130
+ if 'U' == s[4] && 'N' == s[5] && 'C' == s[6]
124
131
 
125
- # 5. \\?\UNC\server\share
132
+ # 5. \\?\UNC\server\share
126
133
 
127
- if s =~ /^\\\\\?\\UNC\\[^\\]+\\[^\\\/]+/
134
+ if s =~ /^\\\\\?\\UNC\\[^\\]+\\[^\\\/]+/
128
135
 
129
- return [ $&, $', :form_5 ]
130
- end
131
- else
136
+ return [ $&, $', :form_5 ]
137
+ end
138
+ else
132
139
 
133
- if s =~ /^\\\\\?\\[^\\]+\\[^\\\/]+/
140
+ if s =~ /^\\\\\?\\[^\\]+\\[^\\\/]+/
134
141
 
135
- # 4. \\?\server\share
142
+ # 4. \\?\server\share
136
143
 
137
- return [ $&, $', :form_4 ]
138
- end
139
- end
144
+ return [ $&, $', :form_4 ]
145
+ end
146
+ end
140
147
 
141
- return [ s, '', :malformed ]
142
- end
143
- when '.'
148
+ return [ s, '', :malformed ]
149
+ end
150
+ when '.'
144
151
 
145
- if s =~ /^\\\\\.\\[^\\]+/
152
+ if s =~ /^\\\\\.\\[^\\]+/
146
153
 
147
- # 6. \\.\device
154
+ # 6. \\.\device
148
155
 
149
- return [ $&, $', :form_6 ]
150
- end
151
- else
156
+ return [ $&, $', :form_6 ]
157
+ end
158
+ else
152
159
 
153
- if s =~ /^\\\\[^\\]+\\[^\\\/]+/
160
+ if s =~ /^\\\\[^\\]+\\[^\\\/]+/
154
161
 
155
- # 2. \\server\share
162
+ # 2. \\server\share
156
163
 
157
- return [ $&, $', :form_2 ]
158
- end
159
- end
160
- else
164
+ return [ $&, $', :form_2 ]
165
+ end
166
+ end
167
+ else
161
168
 
162
- end
163
- elsif ':' == s[1] && ::LibPath::Internal_::Windows::Drive.character_is_drive_letter?(s[0])
169
+ end
170
+ elsif ':' == s[1] && _Drive.character_is_drive_letter?(s[0])
164
171
 
165
- # 1. X:
172
+ # 1. X:
166
173
 
167
- return [ s[0..1], s[2..-1], :form_1 ]
168
- end
174
+ return [ s[0..1], s[2..-1], :form_1 ]
175
+ end
169
176
 
170
- # 0. not matched
177
+ # 0. not matched
171
178
 
172
- [ nil, s, :form_0 ]
173
- end
179
+ [ nil, s, :form_0 ]
180
+ end
174
181
 
175
- # [INTERNAL] This function is undocumented, and subject to change at any
176
- # time
177
- #
178
- # Returns tuple of:
179
- #
180
- # 0. source path (with redundant path name separators elided)
181
- # 1. Windows volume (which is always nil)
182
- # 2. Directory
183
- # 3. Basename
184
- # 4. Stem
185
- # 5. Extension
186
- # 6. Directory parts
187
- # 7. Directory path parts
188
- #
189
- # @!visibility private
190
- def self.split_path s # :nodoc:
182
+ # [INTERNAL] This function is undocumented, and subject to change at any
183
+ # time
184
+ #
185
+ # Returns tuple of:
186
+ #
187
+ # 0. source path (with redundant path name separators elided)
188
+ # 1. Windows volume (which is always nil)
189
+ # 2. Directory
190
+ # 3. Basename
191
+ # 4. Stem
192
+ # 5. Extension
193
+ # 6. Directory parts
194
+ # 7. Directory path parts
195
+ #
196
+ # @!visibility private
197
+ def self.split_path s # :nodoc:
191
198
 
192
- f1_volume = nil
193
- f2_directory = nil
194
- f3_basename = nil
195
- f4_stem = nil
196
- f5_extension = nil
197
- f6_dir_parts = []
198
- f7_all_parts = []
199
+ _String = ::LibPath::Internal_::String
199
200
 
200
- f1_volume, rem, frm = self.get_windows_volume s
201
+ f1_volume = nil
202
+ f2_directory = nil
203
+ f3_basename = nil
204
+ f4_stem = nil
205
+ f5_extension = nil
206
+ f6_dir_parts = []
207
+ f7_all_parts = []
201
208
 
202
- self.elide_redundant_path_name_separators! rem
209
+ f1_volume, rem, frm = self.get_windows_volume s
203
210
 
204
- f1_volume.define_singleton_method(:form) { frm } if f1_volume
211
+ self.elide_redundant_path_name_separators! rem
205
212
 
206
- if :malformed == frm
213
+ f1_volume.define_singleton_method(:form) { frm } if f1_volume
207
214
 
208
- return [ s, f1_volume, nil, nil, nil, nil, [], [] ]
209
- end
215
+ if :malformed == frm
210
216
 
211
- unless rem.empty?
217
+ return [ s, f1_volume, nil, nil, nil, nil, [], [] ]
218
+ end
212
219
 
213
- ri_slash = ::LibPath::Internal_::String.rindex2(rem, '/', '\\')
220
+ unless rem.empty?
214
221
 
215
- if ri_slash
222
+ ri_slash = _String.rindex2(rem, '/', '\\')
216
223
 
217
- f2_directory = rem[0..ri_slash]
218
- f3_basename = rem[(1 + ri_slash)..-1]
219
- else
224
+ if ri_slash
220
225
 
221
- f2_directory = nil
222
- f3_basename = rem
223
- end
226
+ f2_directory = rem[0..ri_slash]
227
+ f3_basename = rem[(1 + ri_slash)..-1]
228
+ else
224
229
 
225
- case f3_basename
226
- when '.', '..'
230
+ f2_directory = nil
231
+ f3_basename = rem
232
+ end
227
233
 
228
- f4_stem = f3_basename
229
- f5_extension = nil
230
- else
234
+ case f3_basename
235
+ when '.', '..'
231
236
 
232
- ri_dot = f3_basename.rindex('.')
237
+ f4_stem = f3_basename
238
+ f5_extension = nil
239
+ else
233
240
 
234
- if ri_dot
241
+ ri_dot = f3_basename.rindex('.')
235
242
 
236
- f4_stem = f3_basename[0...ri_dot]
237
- f5_extension = f3_basename[ri_dot..-1]
238
- else
243
+ if ri_dot
239
244
 
240
- f4_stem = f3_basename
241
- f5_extension = nil
242
- end
243
- end
245
+ f4_stem = f3_basename[0...ri_dot]
246
+ f5_extension = f3_basename[ri_dot..-1]
247
+ else
244
248
 
245
- case f2_directory
246
- when nil
249
+ f4_stem = f3_basename
250
+ f5_extension = nil
251
+ end
252
+ end
247
253
 
248
- ;
249
- when '\\', '/'
254
+ case f2_directory
255
+ when nil
250
256
 
251
- f6_dir_parts = [ f2_directory ]
252
- else
257
+ ;
258
+ when '\\', '/'
253
259
 
254
- parts = f2_directory.split(/([\\\/])/)
260
+ f6_dir_parts = [ f2_directory ]
261
+ else
255
262
 
256
- f6_dir_parts = []
263
+ parts = f2_directory.split(/([\\\/])/)
257
264
 
258
- (0...(parts.size / 2)).each do |ix|
265
+ f6_dir_parts = []
259
266
 
260
- f6_dir_parts << parts[2 * ix + 0] + parts[2 * ix + 1]
261
- end
262
- end
267
+ (0...(parts.size / 2)).each do |ix|
263
268
 
264
- if f1_volume
269
+ f6_dir_parts << parts[2 * ix + 0] + parts[2 * ix + 1]
270
+ end
271
+ end
265
272
 
266
- f7_all_parts = f6_dir_parts.dup
273
+ if f1_volume
267
274
 
268
- f7_all_parts[0] = f1_volume + f7_all_parts[0].to_s
269
- else
275
+ f7_all_parts = f6_dir_parts.dup
270
276
 
271
- f7_all_parts = f6_dir_parts
272
- end
273
- end
277
+ f7_all_parts[0] = f1_volume + f7_all_parts[0].to_s
278
+ else
274
279
 
280
+ f7_all_parts = f6_dir_parts
281
+ end
282
+ end
275
283
 
276
- [ "#{f1_volume}#{rem}", f1_volume, f2_directory, f3_basename, f4_stem, f5_extension, f6_dir_parts, f7_all_parts ].map { |v| ::String === v && v.empty? ? nil : v }
277
- end
278
- end # module Form
279
284
 
285
+ [ "#{f1_volume}#{rem}", f1_volume, f2_directory, f3_basename, f4_stem, f5_extension, f6_dir_parts, f7_all_parts ].map { |v| ::String === v && v.empty? ? nil : v }
286
+ end
287
+ end # module Form
280
288
  end # module Windows
281
289
  end # module Internal_
282
290
  end # module LibPath
283
291
 
284
- # ############################## end of file ############################# #
285
292
 
293
+ # :startdoc:
294
+
295
+
296
+ # ############################## end of file ############################# #
286
297
 
@@ -1,6 +1,9 @@
1
1
 
2
- # Top-level module for the *libpath.Ruby*
2
+ # Top-level module for the *libpath.Ruby* library
3
3
  module LibPath
4
4
 
5
5
  end # module LibPath
6
6
 
7
+
8
+ # ############################## end of file ############################# #
9
+