libpath-ruby 0.2.2 → 0.2.2.2

Sign up to get free protection for your applications and to get access to all the features.
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
+