libpath-ruby 0.2.2.3 → 0.2.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8996094361fb92d0b95118bea46f4e1652000d3ed54e5008895df5a7260bbd00
4
- data.tar.gz: 613922a5a2d51de42327585ce3f23a0ebcb6f3d19d1b1066e3c9a54832412af9
3
+ metadata.gz: f38d2c3fc9f5f9189d5691f3ed29e4f1be00968e7890034de57b1b76c1220bf8
4
+ data.tar.gz: 00cdf5f1f51fe74a069d0ee58ded5be63ede918fceb9cf5c47d7bde5db0ebda0
5
5
  SHA512:
6
- metadata.gz: ab2efbb8ace8b969c0d2f79bc42058a512aa6633d710e8fa3108f3400fbffc8b5d10bd76e30cb64234815524c9d32b3e4dac50aa6702b8175803764da204efd4
7
- data.tar.gz: 227a0622eab1ea0da0d0d27ee7913fc7114c4ae00fcbd2ffc872eafcfd6017759d9b97a9597f59029223d63610ace45205c240db4a0f9d59dc988653d3333421
6
+ metadata.gz: 3c068c940534afe5d30198b19fdc059c611ea5beb78a4a35a43206b77b7520b7c871a5ed681d4ee3330beaa6c6343b16e98b578f068b83c11ca05a6cabf1e686
7
+ data.tar.gz: 2cef11088384acdbf795bba0df4bcae10e2fc3f0635144340eb7c8bb45a31a8f645493672eb4c00f8b815efdf342f0e21758af50987141e33e524413ea437eaf
data/AUTHORS.md ADDED
@@ -0,0 +1,21 @@
1
+ # libpath.Ruby - Authors <!-- omit in toc -->
2
+
3
+
4
+ ## Major Contributors
5
+
6
+ | Name | GitHub |
7
+ | ----------- | --------------------------------- |
8
+ | Matt Wilson | [mwsis](https://github.com/mwsis) |
9
+
10
+
11
+ ## Defect reports, fixes and suggestions (for which we are very grateful)
12
+
13
+ | Name | GitHub |
14
+ | ----------- | --------------------------------- |
15
+ | \<none> | |
16
+
17
+
18
+ Contributions are welcomed.
19
+
20
+
21
+ <!-- ########################### end of file ########################### -->
data/CHANGES.md ADDED
@@ -0,0 +1,183 @@
1
+ # libpath.Ruby - Changes <!-- omit in toc -->
2
+
3
+
4
+ ## 0.2.4 - 27th August 2026
5
+
6
+ * renamed **libpath.gemspec** to **libpath-ruby.gemspec** so the filename stem matches `spec.name`;
7
+ * **libpath-ruby.gemspec**: `required_ruby_version` is the range `>= 2.0`; **Gemfile.lock** and **.ruby-version** excluded from `spec.files`; `spec.summary` matches the README tagline; packaged **AUTHORS**, **CHANGES**, **CONTRIBUTING**, **EXAMPLES**, **FAQ**, **INSTALL**, **NEWS**, **SECURITY**, **TODO**;
8
+ * **Gemfile** sets `lockfile false` when Bundler supports it; stop tracking **Gemfile.lock**;
9
+ * CI uses `bundler-cache: false` and explicit `bundle install`; **Warnings** job on Ruby **3.4**; `gem build libpath-ruby.gemspec`;
10
+ * updated **run_all_unit_tests.sh** (from https://github.com/synesissoftware/misc-dev-scripts) to skip **tput** when **$TERM** is unset or stdout is not a TTY;
11
+ * library source **Home:** URLs now use `https`;
12
+ * workarounds for avoiding potentially modifying frozen strings;
13
+ * **README.md**: tagline before badges; canonical badge row; **Dependencies** (Efferent / Afferent); related projects; License → `./LICENSE`;
14
+ * **EXAMPLES.md** example links are repo-relative (`./examples/…`);
15
+ * `elide_redundant_path_name_separators!` is freeze-safe (Ruby 3.4 `FrozenError` on a frozen remainder, e.g. malformed UNC);
16
+
17
+
18
+ ## 0.2.3 - 15th August 2026
19
+
20
+ * added `# frozen_string_literal: true` to all **lib/** sources;
21
+ * completed **EXAMPLES.md** (EOF marker; table alignment);
22
+
23
+
24
+ ## 0.2.2.3 - 13th April 2024
25
+
26
+ * warnings fixes;
27
+
28
+
29
+ ## 0.2.2.2 - 7th April 2024
30
+
31
+ * merged **tidying** into **master**;
32
+
33
+
34
+ ## 0.2.2.1 - 6th April 2024
35
+
36
+ * project boilerplate;
37
+ * canonicalisation of layout;
38
+
39
+
40
+ ## 0.2.2 - 18th May 2019
41
+
42
+ * minor fix to source;
43
+
44
+
45
+ ## 0.2.1 - 16th April 2019
46
+
47
+ * added `#to_s` attribute to Path classes;
48
+ * added example **examples/path_from_arg0.rb**;
49
+ * significant improvements to documentation;
50
+ * added **README.md**;
51
+
52
+
53
+ ## 0.2.0.1 - 16th April 2019
54
+
55
+ * significant improvements to documentation;
56
+ * added **.ruby-version-exclusions**;
57
+ * gemspec requires Ruby 2.0+;
58
+ * updated **run_all_unit_tests.sh** (from **misc-dev-scripts**);
59
+
60
+
61
+ ## 0.2.0 - 30th January 2019
62
+
63
+ * added **Constants**, **Exceptions**, and `Util#name_is_malformed?()`;
64
+
65
+
66
+ ## 0.1.1.2 - 30th January 2019
67
+
68
+ * fixed `ParsedPath` compare-path attributes on Windows;
69
+
70
+
71
+ ## 0.1.1.1 - 30th January 2019
72
+
73
+ * various fixes to path-handling;
74
+
75
+
76
+ ## 0.1.0 - 28th January 2019
77
+
78
+ * added `LibPath::Path(::Unix|::Windows)::ParsedPath`;
79
+
80
+
81
+ ## 0.0.20 - 27th January 2019
82
+
83
+ * Windows compatibility;
84
+
85
+
86
+ ## 0.0.19 - 27th January 2019
87
+
88
+ * further path-handling modifications;
89
+
90
+
91
+ ## 0.0.18 - 27th January 2019
92
+
93
+ * handling redundant path-name separators;
94
+
95
+
96
+ ## 0.0.17 - 27th January 2019
97
+
98
+ * fixed `split_path()` for repeated internal separators;
99
+
100
+
101
+ ## 0.0.16 - 27th January 2019
102
+
103
+ * improved slash correction on Windows (`/` to `\`);
104
+
105
+
106
+ ## 0.0.15 - 25th January 2019
107
+
108
+ * added `LibPath::Util(::Unix|::Windows).derive_relative_path()`;
109
+
110
+
111
+ ## 0.0.14 - 25th January 2019
112
+
113
+ * refactored `classify_path()`;
114
+ * renamed `path_is_drived?()` to `path_is_letter_drived?()`;
115
+
116
+
117
+ ## 0.0.13 - 25th January 2019
118
+
119
+ * added `LibPath::Form(::Unix|::Windows).classify_path()`;
120
+
121
+
122
+ ## 0.0.12 - 21st January 2019
123
+
124
+ * fix;
125
+
126
+
127
+ ## 0.0.11 - 21st January 2019
128
+
129
+ * further tidying of Windows Form functions;
130
+
131
+
132
+ ## 0.0.10 - 20th January 2019
133
+
134
+ * improved `get_windows_volume()` for complex cases;
135
+
136
+
137
+ ## 0.0.9 - 20th January 2019
138
+
139
+ * `get_windows_volume()` obtains volume form as third returned element;
140
+
141
+
142
+ ## 0.0.8 - 20th January 2019
143
+
144
+ * added `combine_paths()` and `make_path_absolute()`;
145
+ * added `Form::Windows.path_is_drived?()`;
146
+
147
+
148
+ ## 0.0.7 - 19th January 2019
149
+
150
+ * merge;
151
+
152
+
153
+ ## 0.0.6 - 17th January 2019
154
+
155
+ * fix;
156
+
157
+
158
+ ## 0.0.5 - 9th January 2019
159
+
160
+ * added `Util(::Unix|::Windows).make_path_canonical()`;
161
+
162
+
163
+ ## 0.0.4 - 9th January 2019
164
+
165
+ * added `Form.split_path()` for Unix and Windows;
166
+
167
+
168
+ ## 0.0.3 - 9th January 2019
169
+
170
+ * added internal Form API functions;
171
+
172
+
173
+ ## 0.0.2 - 8th January 2019
174
+
175
+ * added Form predicates `path_is_absolute?`, `path_is_homed?`, `path_is_rooted?`, and Windows `path_is_UNC?`;
176
+
177
+
178
+ ## 0.0.1 - 8th January 2019
179
+
180
+ * initial version;
181
+
182
+
183
+ <!-- ########################### end of file ########################### -->
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,36 @@
1
+ # libpath.Ruby - Contributing <!-- omit in toc -->
2
+
3
+
4
+ ## Table of Contents <!-- omit in toc -->
5
+
6
+ - [Defects and features](#defects-and-features)
7
+ - [Pull requests](#pull-requests)
8
+ - [Tests](#tests)
9
+ - [License](#license)
10
+
11
+
12
+ ## Defects and features
13
+
14
+ Open an issue on https://github.com/synesissoftware/libpath.Ruby/issues.
15
+
16
+
17
+ ## Pull requests
18
+
19
+ Pull requests are welcome on https://github.com/synesissoftware/libpath.Ruby. Keep diffs local to the change; match existing indentation (2 spaces in Ruby) and the Synesis markdown set (**README.md**, **CHANGES.md**, **NEWS.md**, **TODO.md**, **INSTALL.md**, **CONTRIBUTING.md**, **SECURITY.md**).
20
+
21
+
22
+ ## Tests
23
+
24
+ ```
25
+ bundle exec rake test
26
+ ```
27
+
28
+ or `./run_all_unit_tests.sh`.
29
+
30
+
31
+ ## License
32
+
33
+ Contributions are accepted under the 3-clause BSD license. See [LICENSE](./LICENSE).
34
+
35
+
36
+ <!-- ########################### end of file ########################### -->
data/EXAMPLES.md ADDED
@@ -0,0 +1,8 @@
1
+ # libpath.Ruby - Examples <!-- omit in toc -->
2
+
3
+ |Name|Source & Description|Summary|
4
+ |---|---|---|
5
+ |**path_from_arg0**|[examples/path_from_arg0.rb](./examples/path_from_arg0.rb)<br/>[examples/path_from_arg0.md](./examples/path_from_arg0.md)|Simple example illustrating creation of an instance of `LibPath::Path::ParsedPath`, and obtaining its attributes|
6
+
7
+
8
+ <!-- ########################### end of file ########################### -->
data/FAQ.md ADDED
@@ -0,0 +1,27 @@
1
+ # libpath.Ruby - FAQ <!-- omit in toc -->
2
+
3
+ The FAQ list is under (constant) development. If you post a question on the
4
+ [Issues](https://github.com/synesissoftware/libpath.Ruby/issues) forum
5
+ it will be used to create one.
6
+
7
+
8
+ ## Table of Contents <!-- omit in toc -->
9
+
10
+ - [Q1: "How do I install this library?"](#q1-how-do-i-install-this-library)
11
+
12
+
13
+ # FAQs: <!-- omit in toc -->
14
+
15
+
16
+ ## Q1: "How do I install this library?"
17
+
18
+ Install via **gem**:
19
+
20
+ ```
21
+ gem install libpath-ruby
22
+ ```
23
+
24
+ See [README.md](./README.md) for usage.
25
+
26
+
27
+ <!-- ########################### end of file ########################### -->
data/INSTALL.md ADDED
@@ -0,0 +1,41 @@
1
+ # libpath.Ruby - Installation and Use <!-- omit in toc -->
2
+
3
+
4
+ ## Table of Contents <!-- omit in toc -->
5
+
6
+ - [Install the gem](#install-the-gem)
7
+ - [From a source checkout](#from-a-source-checkout)
8
+ - [Using the library](#using-the-library)
9
+
10
+
11
+ ## Install the gem
12
+
13
+ ```
14
+ gem install libpath-ruby
15
+ ```
16
+
17
+ or add to a **Gemfile**:
18
+
19
+ ```Ruby
20
+ gem 'libpath-ruby'
21
+ ```
22
+
23
+ then `bundle install`.
24
+
25
+
26
+ ## From a source checkout
27
+
28
+ ```
29
+ bundle install
30
+ bundle exec rake test
31
+ ```
32
+
33
+
34
+ ## Using the library
35
+
36
+ ```Ruby
37
+ require 'libpath'
38
+ ```
39
+
40
+
41
+ <!-- ########################### end of file ########################### -->
data/LICENSE CHANGED
@@ -1,12 +1,11 @@
1
1
  libpath.Ruby - BSD 3-Clause License
2
2
 
3
- Copyright (c) 2019-2024, Matthew Wilson and Synesis Information Systems
3
+ Copyright (c) 2019-2026, Matthew Wilson and Synesis Information Systems
4
4
  Copyright (c) 2019, Matthew Wilson and Synesis Software
5
5
  All rights reserved.
6
6
 
7
7
  Redistribution and use in source and binary forms, with or without
8
- modification, are permitted provided that the following conditions are
9
- met:
8
+ modification, are permitted provided that the following conditions are met:
10
9
 
11
10
  1. Redistributions of source code must retain the above copyright notice,
12
11
  this list of conditions and the following disclaimer.
data/NEWS.md ADDED
@@ -0,0 +1,39 @@
1
+ # libpath.Ruby - News <!-- omit in toc -->
2
+
3
+ | Date | News Item |
4
+ | ----------------- | -------------------------------------------------------------------------------------------- |
5
+ | 27th August 2026 | [**libpath.Ruby** 0.2.4](https://github.com/synesissoftware/libpath.Ruby/releases/tag/0.2.4) |
6
+ | 15th August 2026 | [**libpath.Ruby** 0.2.3](https://github.com/synesissoftware/libpath.Ruby/releases/tag/0.2.3) |
7
+ | 13th April 2024 | [**libpath.Ruby** 0.2.2.3](https://github.com/synesissoftware/libpath.Ruby/releases/tag/0.2.2.3) |
8
+ | 7th April 2024 | **libpath.Ruby** 0.2.2.2 released |
9
+ | 6th April 2024 | **libpath.Ruby** 0.2.2.1 released |
10
+ | 18th May 2019 | **libpath.Ruby** 0.2.2 released |
11
+ | 16th April 2019 | **libpath.Ruby** 0.2.1 released |
12
+ | 16th April 2019 | **libpath.Ruby** 0.2.0.1 released |
13
+ | 30th January 2019 | **libpath.Ruby** 0.2.0 released |
14
+ | 30th January 2019 | **libpath.Ruby** 0.1.1.2 released |
15
+ | 30th January 2019 | **libpath.Ruby** 0.1.1.1 released |
16
+ | 28th January 2019 | **libpath.Ruby** 0.1.0 released |
17
+ | 27th January 2019 | **libpath.Ruby** 0.0.20 released |
18
+ | 27th January 2019 | **libpath.Ruby** 0.0.19 released |
19
+ | 27th January 2019 | **libpath.Ruby** 0.0.18 released |
20
+ | 27th January 2019 | **libpath.Ruby** 0.0.17 released |
21
+ | 27th January 2019 | **libpath.Ruby** 0.0.16 released |
22
+ | 25th January 2019 | **libpath.Ruby** 0.0.15 released |
23
+ | 25th January 2019 | **libpath.Ruby** 0.0.14 released |
24
+ | 25th January 2019 | **libpath.Ruby** 0.0.13 released |
25
+ | 21st January 2019 | **libpath.Ruby** 0.0.12 released |
26
+ | 21st January 2019 | **libpath.Ruby** 0.0.11 released |
27
+ | 20th January 2019 | **libpath.Ruby** 0.0.10 released |
28
+ | 20th January 2019 | **libpath.Ruby** 0.0.9 released |
29
+ | 20th January 2019 | **libpath.Ruby** 0.0.8 released |
30
+ | 19th January 2019 | **libpath.Ruby** 0.0.7 released |
31
+ | 17th January 2019 | **libpath.Ruby** 0.0.6 released |
32
+ | 9th January 2019 | **libpath.Ruby** 0.0.5 released |
33
+ | 9th January 2019 | **libpath.Ruby** 0.0.4 released |
34
+ | 9th January 2019 | **libpath.Ruby** 0.0.3 released |
35
+ | 8th January 2019 | **libpath.Ruby** 0.0.2 released |
36
+ | 8th January 2019 | **libpath.Ruby** 0.0.1 released |
37
+
38
+
39
+ <!-- ########################### end of file ########################### -->
data/README.md CHANGED
@@ -1,8 +1,12 @@
1
1
  # libpath.Ruby <!-- omit in toc -->
2
2
 
3
- **libpath**, for Ruby
3
+ Path parsing library, for Ruby
4
4
 
5
+ ![Language](https://img.shields.io/badge/Ruby-CC342D?style=flat&logo=ruby&logoColor=white)
6
+ [![License](https://img.shields.io/badge/License-BSD_3--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)
5
7
  [![Gem Version](https://badge.fury.io/rb/libpath-ruby.svg)](https://badge.fury.io/rb/libpath-ruby)
8
+ [![Last Commit](https://img.shields.io/github/last-commit/synesissoftware/libpath.Ruby)](https://github.com/synesissoftware/libpath.Ruby/commits/master)
9
+ [![Ruby](https://github.com/synesissoftware/libpath.Ruby/actions/workflows/ruby.yml/badge.svg)](https://github.com/synesissoftware/libpath.Ruby/actions/workflows/ruby.yml)
6
10
 
7
11
 
8
12
  ## Table of Contents <!-- omit in toc -->
@@ -14,6 +18,13 @@
14
18
  - [Project Information](#project-information)
15
19
  - [Where to get help](#where-to-get-help)
16
20
  - [Contribution guidelines](#contribution-guidelines)
21
+ - [Dependencies](#dependencies)
22
+ - [Efferent (fan-out)](#efferent-fan-out)
23
+ - [Runtime Dependencies (aka "Normal Dependencies")](#runtime-dependencies-aka-normal-dependencies)
24
+ - [Development Dependencies](#development-dependencies)
25
+ - [Afferent (fan-in)](#afferent-fan-in)
26
+ - [Runtime dependents](#runtime-dependents)
27
+ - [Development dependents](#development-dependents)
17
28
  - [Related projects](#related-projects)
18
29
  - [License](#license)
19
30
 
@@ -22,6 +33,8 @@
22
33
 
23
34
  **libpath** is a path-parsing and utility library. It is concerned entirely with paths, as opposed to file-system entities.
24
35
 
36
+ The first **libpath** library was a C library with a C++ wrapper. There have been several implementations in other languages. **libpath.Ruby** is the Ruby version.
37
+
25
38
 
26
39
  ## Installation
27
40
 
@@ -39,9 +52,18 @@ Use via **require**, as in:
39
52
  require 'libpath'
40
53
  ```
41
54
 
55
+
42
56
  ## Components
43
57
 
44
- T.B.C.
58
+ The main components of **libpath.Ruby** are:
59
+
60
+ * **`LibPath::Form`** — path-form classification and probes (`classify_path`, `path_is_absolute?`, `path_is_homed?`, `path_is_rooted?`, `name_is_malformed?`);
61
+ * **`LibPath::Path::ParsedPath`** — structured parse of a path string into directory / file / search-relative attributes (platform-selected Unix or Windows implementation);
62
+ * **`LibPath::Util`** — path combination and rewriting (`combine_paths`, `derive_relative_path`, `make_compare_path`, `make_path_absolute`, `make_path_canonical`);
63
+ * **`LibPath::Constants`** — platform path-name / path / shell character constants;
64
+ * **`LibPath::Exceptions`** — path-related exceptions such as `MalformedNameException`;
65
+
66
+ Platform-specific details live under `::Unix` / `::Windows` submodules; the top-level `Form`, `Path`, and `Util` modules select the ambient OS automatically.
45
67
 
46
68
 
47
69
  ## Examples
@@ -62,17 +84,56 @@ Examples are provided in the ```examples``` directory, along with a markdown des
62
84
  Defect reports, feature requests, and pull requests are welcome on https://github.com/synesissoftware/libpath.Ruby.
63
85
 
64
86
 
87
+ ### Dependencies
88
+
89
+
90
+ #### Efferent (fan-out)
91
+
92
+ Libraries upon which **libpath.Ruby** depends:
93
+
94
+
95
+ ##### Runtime Dependencies (aka "Normal Dependencies")
96
+
97
+ * \<none>;
98
+
99
+
100
+ ##### Development Dependencies
101
+
102
+ * [**rake**](https://rubygems.org/gems/rake);
103
+ * [**test-unit**](https://rubygems.org/gems/test-unit);
104
+ * [**xqsr3**](https://github.com/synesissoftware/xqsr3);
105
+
106
+
107
+ #### Afferent (fan-in)
108
+
109
+ Projects that depend on **libpath.Ruby**:
110
+
111
+
112
+ ##### Runtime dependents
113
+
114
+ * \<none>;
115
+
116
+ > **NOTE**: **[recls.Ruby](https://github.com/synesissoftware/recls.Ruby)** version 3+ is planned to depend on **libpath.Ruby** (it currently has its own path-parsing logic).
117
+
118
+
119
+ ##### Development dependents
120
+
121
+ * \<none>;
122
+
123
+
65
124
  ### Related projects
66
125
 
67
- **libpath.Ruby** is based on the [C/C++ libpath library](https://github.com/synesissoftware/libpath), which itself was prompted by a request on the [STLSoft](https://github.com/synesissoftware/STLSoft-1.10) project by my friend and esteemed programmer [Adi Shavit](https://github.com/adishavit).
126
+ * [**libpath**](https://github.com/synesissoftware/libpath) (**C**/**C++**);
127
+ * [**libpath.Go**](https://github.com/synesissoftware/libpath.Go);
128
+ * [**libpath.Python**](https://github.com/synesissoftware/libpath.Python);
129
+ * [**libpath.Rust**](https://github.com/synesissoftware/libpath.Rust);
68
130
 
69
- **libpath.Ruby** will be used in **version 3+** of the **[recls.Ruby](https://github.com/synesissoftware/recls.Ruby)** library, which currently has its own path-parsing logic.
131
+ **libpath.Ruby** is based on the C/C++ **libpath** library, which itself was prompted by a request on the [STLSoft](https://github.com/synesissoftware/STLSoft-1.10) project by my friend and esteemed programmer [Adi Shavit](https://github.com/adishavit).
70
132
 
71
133
 
72
134
  ### License
73
135
 
74
- **libpath.Ruby** is released under the 3-clause BSD license. See LICENSE for details.
136
+ **libpath.Ruby** is released under the 3-clause BSD license. See [LICENSE](./LICENSE) for details.
75
137
 
76
138
 
77
139
  <!-- ########################### end of file ########################### -->
78
-
data/Rakefile ADDED
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Rakefile for libpath.Ruby
4
+
5
+ require 'rake/testtask'
6
+
7
+
8
+ Rake::TestTask.new do |tt|
9
+
10
+ tt.libs << 'lib'
11
+ tt.libs << 'test'
12
+ tt.name = 'test'
13
+ tt.test_files = FileList['test/**/tc_*.rb']
14
+ tt.verbose = true
15
+ end
16
+
17
+
18
+ task :default => :test
19
+
20
+
21
+ # ############################## end of file ############################# #
data/SECURITY.md ADDED
@@ -0,0 +1,23 @@
1
+ # libpath.Ruby - Security <!-- omit in toc -->
2
+
3
+
4
+ ## Table of Contents <!-- omit in toc -->
5
+
6
+ - [Reporting a vulnerability](#reporting-a-vulnerability)
7
+ - [Supported versions](#supported-versions)
8
+
9
+
10
+ ## Reporting a vulnerability
11
+
12
+ Please report security issues privately via GitHub Security Advisories on https://github.com/synesissoftware/libpath.Ruby/security, or by opening an issue if an advisory cannot be filed. Do not attach exploit proofs of concept against third-party systems.
13
+
14
+
15
+ ## Supported versions
16
+
17
+ | Version | Supported |
18
+ | ------- | --------- |
19
+ | 0.2.x | ✅ |
20
+ | < 0.2 | ❌ |
21
+
22
+
23
+ <!-- ########################### end of file ########################### -->
data/TODO.md ADDED
@@ -0,0 +1,26 @@
1
+ # libpath.Ruby - TODO <!-- omit in toc -->
2
+
3
+
4
+ ## Functional improvements
5
+
6
+ * [ ] quiet Ruby 3.4+ `literal string will be frozen in the future` warnings from `gsub!` in **lib/libpath/internal_/windows/form.rb** (tests already pass under `-W`);
7
+
8
+
9
+ ## Performance improvements
10
+
11
+ * \<none>
12
+
13
+
14
+ ## Packaging improvements
15
+
16
+ * [x] ~~~rename gemspec so the filename stem matches `spec.name` (`libpath.gemspec` → **libpath-ruby.gemspec**)~~~;
17
+ * [x] ~~~obtain a **run_all_unit_tests.sh** (from **misc-dev-scripts**) that skips `tput` when `$TERM` is unset or stdout is not a TTY (CI: `tput: No value for $TERM and no -T specified`)~~~;
18
+ * [x] ~~~**Gemfile** `lockfile false`; stop tracking **Gemfile.lock**; CI `bundler-cache: false`~~~;
19
+ * [x] ~~~gemspec polish: README tagline as `spec.summary`, package docs, exclude **Gemfile.lock** / **.ruby-version**~~~;
20
+ * [x] ~~~README canonical structure (tagline before badges; **Dependencies**; CI badge → **ruby.yml**)~~~;
21
+ * [x] ~~~after the packaging/boilerplate/CI baseline: bump **VERSION** and align **CHANGES**/**NEWS**~~~;
22
+ * [ ] **git rm** **Gemfile.lock** when committing this lift (deleted in the work tree and gitignored; still in HEAD);
23
+ * [ ] this lift is on **bp-2**, which is not in CI `on.push.branches` (gold seven-name set); use a PR (unfiltered `pull_request:`) or merge to a listed branch to run push CI;
24
+
25
+
26
+ <!-- ########################### end of file ########################### -->
@@ -1,4 +1,4 @@
1
- # libpath.Ruby Example - **path_from_arg0**
1
+ # libpath.Ruby - Example - **path_from_arg0**
2
2
 
3
3
  ## Summary
4
4
 
@@ -1,12 +1,13 @@
1
+ # frozen_string_literal: true
1
2
  # ######################################################################## #
2
3
  # File: libpath/constants/unix.rb
3
4
  #
4
5
  # Purpose: LibPath::Constants::Unix module
5
6
  #
6
7
  # Created: 29th January 2019
7
- # Updated: 7th April 2024
8
+ # Updated: 15th August 2026
8
9
  #
9
- # Home: http://github.com/synesissoftware/libpath.Ruby
10
+ # Home: https://github.com/synesissoftware/libpath.Ruby
10
11
  #
11
12
  # Author: Matthew Wilson
12
13
  #
@@ -1,12 +1,13 @@
1
+ # frozen_string_literal: true
1
2
  # ######################################################################## #
2
3
  # File: libpath/constants/windows.rb
3
4
  #
4
5
  # Purpose: LibPath::Constants::Windows module
5
6
  #
6
7
  # Created: 29th January 2019
7
- # Updated: 7th April 2024
8
+ # Updated: 15th August 2026
8
9
  #
9
- # Home: http://github.com/synesissoftware/libpath.Ruby
10
+ # Home: https://github.com/synesissoftware/libpath.Ruby
10
11
  #
11
12
  # Author: Matthew Wilson
12
13
  #
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  require 'libpath/internal_/platform'
3
4
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  module LibPath
3
4
  # @!visibility private
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  require 'libpath/diagnostics/parameter_checking'
3
4
 
@@ -1,13 +1,13 @@
1
-
1
+ # frozen_string_literal: true
2
2
  # ######################################################################## #
3
3
  # File: libpath/exceptions/libpath_base_exception.rb
4
4
  #
5
5
  # Purpose: LibPathBaseException class
6
6
  #
7
7
  # Created: 30th January 2019
8
- # Updated: 7th April 2024
8
+ # Updated: 15th August 2026
9
9
  #
10
- # Home: http://github.com/synesissoftware/libpath.Ruby
10
+ # Home: https://github.com/synesissoftware/libpath.Ruby
11
11
  #
12
12
  # Author: Matthew Wilson
13
13
  #
@@ -1,13 +1,13 @@
1
-
1
+ # frozen_string_literal: true
2
2
  # ######################################################################## #
3
3
  # File: libpath/exceptions/malformed_name_exception.rb
4
4
  #
5
5
  # Purpose: MalformedNameException class
6
6
  #
7
7
  # Created: 30th January 2019
8
- # Updated: 13th April 2024
8
+ # Updated: 15th August 2026
9
9
  #
10
- # Home: http://github.com/synesissoftware/libpath.Ruby
10
+ # Home: https://github.com/synesissoftware/libpath.Ruby
11
11
  #
12
12
  # Author: Matthew Wilson
13
13
  #
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  require 'libpath/exceptions/libpath_base_exception'
3
4
  require 'libpath/exceptions/malformed_name_exception'
@@ -1,13 +1,13 @@
1
-
1
+ # frozen_string_literal: true
2
2
  # ######################################################################## #
3
3
  # File: libpath/form/unix.rb
4
4
  #
5
5
  # Purpose: LibPath::Form::Unix module
6
6
  #
7
7
  # Created: 8th January 2019
8
- # Updated: 13th April 2024
8
+ # Updated: 15th August 2026
9
9
  #
10
- # Home: http://github.com/synesissoftware/libpath.Ruby
10
+ # Home: https://github.com/synesissoftware/libpath.Ruby
11
11
  #
12
12
  # Author: Matthew Wilson
13
13
  #
@@ -1,13 +1,13 @@
1
-
1
+ # frozen_string_literal: true
2
2
  # ######################################################################## #
3
3
  # File: libpath/form/windows.rb
4
4
  #
5
5
  # Purpose: LibPath::Form::Windows module
6
6
  #
7
7
  # Created: 8th January 2019
8
- # Updated: 13th April 2024
8
+ # Updated: 15th August 2026
9
9
  #
10
- # Home: http://github.com/synesissoftware/libpath.Ruby
10
+ # Home: https://github.com/synesissoftware/libpath.Ruby
11
11
  #
12
12
  # Author: Matthew Wilson
13
13
  #
data/lib/libpath/form.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  require 'libpath/internal_/platform'
3
4
 
@@ -1,4 +1,4 @@
1
-
1
+ # frozen_string_literal: true
2
2
  # :stopdoc:
3
3
 
4
4
 
@@ -1,4 +1,4 @@
1
-
1
+ # frozen_string_literal: true
2
2
  # :stopdoc:
3
3
 
4
4
 
@@ -1,4 +1,4 @@
1
-
1
+ # frozen_string_literal: true
2
2
  # :stopdoc:
3
3
 
4
4
 
@@ -1,4 +1,4 @@
1
-
1
+ # frozen_string_literal: true
2
2
  # :stopdoc:
3
3
 
4
4
 
@@ -73,11 +73,9 @@ module Unix # :nodoc:
73
73
  # time
74
74
  #
75
75
  # @!visibility private
76
- def self.elide_redundant_path_name_separators! s # :nodoc:
77
-
78
- s.gsub!(/\/\/+/, '/')
76
+ def self.elide_redundant_path_name_separators s # :nodoc:
79
77
 
80
- s
78
+ s.gsub(/\/\/+/, '/')
81
79
  end
82
80
 
83
81
 
@@ -1,4 +1,4 @@
1
-
1
+ # frozen_string_literal: true
2
2
  # :stopdoc:
3
3
 
4
4
 
@@ -1,4 +1,4 @@
1
-
1
+ # frozen_string_literal: true
2
2
  # :stopdoc:
3
3
 
4
4
 
@@ -79,11 +79,9 @@ module Windows # :nodoc:
79
79
  # time
80
80
  #
81
81
  # @!visibility private
82
- def self.elide_redundant_path_name_separators! s # :nodoc:
83
-
84
- s.gsub!(/[\\\/]{2,}/, '\\')
82
+ def self.elide_redundant_path_name_separators s # :nodoc:
85
83
 
86
- s
84
+ s.gsub(/[\\\/]{2,}/, '\\')
87
85
  end
88
86
 
89
87
  # [INTERNAL] This function is undocumented, and subject to change at any
@@ -208,7 +206,7 @@ module Windows # :nodoc:
208
206
 
209
207
  f1_volume, rem, frm = self.get_windows_volume s
210
208
 
211
- self.elide_redundant_path_name_separators! rem
209
+ rem = self.elide_redundant_path_name_separators rem
212
210
 
213
211
  f1_volume.define_singleton_method(:form) { frm } if f1_volume
214
212
 
@@ -1,4 +1,4 @@
1
-
1
+ # frozen_string_literal: true
2
2
  # Top-level module for the *libpath.Ruby* library
3
3
  module LibPath
4
4
 
@@ -1,13 +1,13 @@
1
-
1
+ # frozen_string_literal: true
2
2
  # ######################################################################## #
3
3
  # File: libpath/path/unix.rb
4
4
  #
5
5
  # Purpose: LibPath::Path::Unix module
6
6
  #
7
7
  # Created: 21st January 2019
8
- # Updated: 13th April 2024
8
+ # Updated: 15th August 2026
9
9
  #
10
- # Home: http://github.com/synesissoftware/libpath.Ruby
10
+ # Home: https://github.com/synesissoftware/libpath.Ruby
11
11
  #
12
12
  # Author: Matthew Wilson
13
13
  #
@@ -1,13 +1,13 @@
1
-
1
+ # frozen_string_literal: true
2
2
  # ######################################################################## #
3
3
  # File: libpath/path/windows.rb
4
4
  #
5
5
  # Purpose: LibPath::Path::Windows module
6
6
  #
7
7
  # Created: 21st January 2019
8
- # Updated: 13th April 2024
8
+ # Updated: 15th August 2026
9
9
  #
10
- # Home: http://github.com/synesissoftware/libpath.Ruby
10
+ # Home: https://github.com/synesissoftware/libpath.Ruby
11
11
  #
12
12
  # Author: Matthew Wilson
13
13
  #
data/lib/libpath/path.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  require 'libpath/internal_/platform'
3
4
 
@@ -1,13 +1,13 @@
1
-
1
+ # frozen_string_literal: true
2
2
  # ######################################################################## #
3
3
  # File: libpath/util/unix.rb
4
4
  #
5
5
  # Purpose: LibPath::Util::Unix module
6
6
  #
7
7
  # Created: 14th January 2019
8
- # Updated: 13th April 2024
8
+ # Updated: 15th August 2026
9
9
  #
10
- # Home: http://github.com/synesissoftware/libpath.Ruby
10
+ # Home: https://github.com/synesissoftware/libpath.Ruby
11
11
  #
12
12
  # Author: Matthew Wilson
13
13
  #
@@ -1,13 +1,13 @@
1
-
1
+ # frozen_string_literal: true
2
2
  # ######################################################################## #
3
3
  # File: libpath/util/windows.rb
4
4
  #
5
5
  # Purpose: LibPath::Util::Windows module
6
6
  #
7
7
  # Created: 10th January 2019
8
- # Updated: 13th April 2024
8
+ # Updated: 15th August 2026
9
9
  #
10
- # Home: http://github.com/synesissoftware/libpath.Ruby
10
+ # Home: https://github.com/synesissoftware/libpath.Ruby
11
11
  #
12
12
  # Author: Matthew Wilson
13
13
  #
@@ -492,7 +492,7 @@ module Windows
492
492
 
493
493
  vol, rem, _ = _Internal_Windows_Form.get_windows_volume r
494
494
 
495
- _Internal_Windows_Form.elide_redundant_path_name_separators! rem
495
+ rem = _Internal_Windows_Form.elide_redundant_path_name_separators rem
496
496
 
497
497
  r = "#{vol}#{rem}"
498
498
  end
data/lib/libpath/util.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  require 'libpath/internal_/platform'
3
4
 
@@ -1,16 +1,17 @@
1
+ # frozen_string_literal: true
1
2
  # ######################################################################## #
2
3
  # File: libpath/version.rb
3
4
  #
4
5
  # Purpose: Version for libpath.Ruby library
5
6
  #
6
7
  # Created: 8th January 2019
7
- # Updated: 13th April 2024
8
+ # Updated: 27th August 2026
8
9
  #
9
- # Home: http://github.com/synesissoftware/libpath.Ruby
10
+ # Home: https://github.com/synesissoftware/libpath.Ruby
10
11
  #
11
12
  # Author: Matthew Wilson
12
13
  #
13
- # Copyright (c) 2019-2024, Matthew Wilson and Synesis Information Systems
14
+ # Copyright (c) 2019-2026, Matthew Wilson and Synesis Information Systems
14
15
  # Copyright (c) 2019, Matthew Wilson and Synesis Software
15
16
  # All rights reserved.
16
17
  #
@@ -50,7 +51,7 @@
50
51
  module LibPath
51
52
 
52
53
  # Current version of the libpath.Ruby library
53
- VERSION = '0.2.2.3'
54
+ VERSION = '0.2.4'
54
55
 
55
56
  private
56
57
  # @!visibility private
data/lib/libpath.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  require 'libpath/libpath'
3
4
 
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libpath-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Wilson
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-04-13 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: xqsr3
@@ -16,7 +15,7 @@ dependencies:
16
15
  requirements:
17
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: 0.21.1
18
+ version: 0.39.5
20
19
  - - "<"
21
20
  - !ruby/object:Gem::Version
22
21
  version: '1.0'
@@ -26,20 +25,32 @@ dependencies:
26
25
  requirements:
27
26
  - - ">="
28
27
  - !ruby/object:Gem::Version
29
- version: 0.21.1
28
+ version: 0.39.5
30
29
  - - "<"
31
30
  - !ruby/object:Gem::Version
32
31
  version: '1.0'
33
- description: 'Path parsing library for Ruby
34
-
35
- '
36
- email: matthew@synesis.com.au
32
+ description: |
33
+ Path parsing library, for Ruby. libpath.Ruby is concerned entirely with
34
+ paths, as opposed to file-system entities. It classifies path form, parses
35
+ path strings, and rewrites/combines paths for Unix and Windows.
36
+ email:
37
+ - matthew@synesis.com.au
37
38
  executables: []
38
39
  extensions: []
39
40
  extra_rdoc_files: []
40
41
  files:
42
+ - AUTHORS.md
43
+ - CHANGES.md
44
+ - CONTRIBUTING.md
45
+ - EXAMPLES.md
46
+ - FAQ.md
47
+ - INSTALL.md
41
48
  - LICENSE
49
+ - NEWS.md
42
50
  - README.md
51
+ - Rakefile
52
+ - SECURITY.md
53
+ - TODO.md
43
54
  - examples/path_from_arg0.md
44
55
  - examples/path_from_arg0.rb
45
56
  - lib/libpath.rb
@@ -119,11 +130,14 @@ files:
119
130
  - test/unit/util/windows/tc_make_path_absolute.rb
120
131
  - test/unit/util/windows/tc_make_path_canonical.rb
121
132
  - test/unit/util/windows/ts_all.rb
122
- homepage: http://github.com/synesissoftware/libpath.Ruby
133
+ homepage: https://github.com/synesissoftware/libpath.Ruby
123
134
  licenses:
124
135
  - BSD-3-Clause
125
- metadata: {}
126
- post_install_message:
136
+ metadata:
137
+ bug_tracker_uri: https://github.com/synesissoftware/libpath.Ruby/issues
138
+ changelog_uri: https://github.com/synesissoftware/libpath.Ruby/blob/master/CHANGES.md
139
+ homepage_uri: https://github.com/synesissoftware/libpath.Ruby
140
+ source_code_uri: https://github.com/synesissoftware/libpath.Ruby
127
141
  rdoc_options: []
128
142
  require_paths:
129
143
  - lib
@@ -138,8 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
138
152
  - !ruby/object:Gem::Version
139
153
  version: '0'
140
154
  requirements: []
141
- rubygems_version: 3.3.7
142
- signing_key:
155
+ rubygems_version: 3.6.9
143
156
  specification_version: 4
144
- summary: libpath.Ruby
157
+ summary: Path parsing library, for Ruby
145
158
  test_files: []