pathname-common_prefix 0.0.1 → 0.0.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.
- checksums.yaml +7 -0
- data/README.markdown +20 -6
- data/Rakefile +7 -1
- data/Steepfile +29 -0
- data/bin/common-prefix +3 -2
- data/lib/pathname/common_prefix.rb +8 -4
- data/pathname-common_prefix.gemspec +7 -4
- data/sig/pathname-common_prefix.rbs +16 -0
- metadata +20 -20
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: ae47d64dcca3740368520414d14a6a0f9cdefe01465068f67115a7305d5516a5
|
4
|
+
data.tar.gz: 194e3d63c660c1995d38c4c75625477c243b90aeebfa1c674ecadbf982355195
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5b37102392bdb6cc48e421e9059c90fcc262bae69358a76d29a4e81ec121350ef5801fd38740f7a7716e52ffa58783f4fbc8323f8093a842f6a9f7bfb5b66593
|
7
|
+
data.tar.gz: 8d0b4f8b6af02ad27885a33f757f8612d9e439d31773e2eac963bcffa739e18e1f2ced0570778ff734d7fbeba9f1526c3c6098fe97a37a42205bc01cfacd79c7
|
data/README.markdown
CHANGED
@@ -2,11 +2,15 @@ Pathname common_prefix
|
|
2
2
|
======================
|
3
3
|
|
4
4
|
This file provides `Pathname.common_prefix` and `Pathname#common_prefix`
|
5
|
-
which
|
5
|
+
which calculate the common prefix in the passed paths.
|
6
6
|
|
7
7
|
Installation
|
8
8
|
------------
|
9
9
|
|
10
|
+
gem install pathname-common_prefix
|
11
|
+
|
12
|
+
or
|
13
|
+
|
10
14
|
git clone git@github.com:KitaitiMakoto/pathname-common_prefix.git
|
11
15
|
cd pathname-common_prefix
|
12
16
|
ruby setup.rb
|
@@ -33,17 +37,27 @@ Usage
|
|
33
37
|
|
34
38
|
Pathname.common_prefix(Pathname('/absolute/path'), Pathname('relative/path')) # => nil
|
35
39
|
|
40
|
+
### String arguments
|
41
|
+
|
42
|
+
require 'pathname/common_prefix'
|
43
|
+
|
44
|
+
paths = %w[
|
45
|
+
path/to/somewhere
|
46
|
+
path/to/anywhere
|
47
|
+
]
|
48
|
+
|
49
|
+
Pathname.common_prefix(*paths) # => #<Pathname:path/to>
|
50
|
+
|
51
|
+
|
36
52
|
### Instance method
|
37
53
|
|
38
54
|
require 'pathname/common_prefix'
|
39
55
|
|
40
56
|
base = Pathname('/path/to/base/file')
|
41
57
|
other = Pathname('/path/to/other/file')
|
42
|
-
|
43
58
|
base.common_prefix(other) # => <Pathname:/path/to>
|
44
59
|
|
45
60
|
another = Pathname('/path/to-another/file')
|
46
|
-
|
47
61
|
base.common_prefix(other, another) # => <Pathname:/path>
|
48
62
|
|
49
63
|
### Command-line tool
|
@@ -80,8 +94,8 @@ From file:
|
|
80
94
|
$ common-prefix paths
|
81
95
|
/path/to
|
82
96
|
|
83
|
-
|
84
|
-
|
97
|
+
Contributors
|
98
|
+
------------
|
85
99
|
|
86
100
|
* [@kachick](https://github.com/kachick)
|
87
101
|
|
@@ -89,4 +103,4 @@ License
|
|
89
103
|
-------
|
90
104
|
|
91
105
|
This program is distributed under the Ruby's license.
|
92
|
-
But `setup.rb` is distributed under the GNU
|
106
|
+
But `setup.rb` is distributed under the GNU LGPL license. See the file for more information.
|
data/Rakefile
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
require 'rake/testtask'
|
2
2
|
require 'rubygems/tasks'
|
3
|
+
require "steep"
|
3
4
|
|
4
|
-
task :default => :test
|
5
|
+
task :default => [:test, :typecheck]
|
5
6
|
|
6
7
|
Rake::TestTask.new
|
7
8
|
Gem::Tasks.new
|
9
|
+
|
10
|
+
desc "Check type"
|
11
|
+
task :typecheck do
|
12
|
+
Steep::Drivers::Check.new(stdout: $stdout, stderr: $stderr).run
|
13
|
+
end
|
data/Steepfile
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# D = Steep::Diagnostic
|
2
|
+
#
|
3
|
+
target :lib do
|
4
|
+
signature "sig"
|
5
|
+
|
6
|
+
check "lib" # Directory name
|
7
|
+
# check "Gemfile" # File name
|
8
|
+
# check "app/models/**/*.rb" # Glob
|
9
|
+
# ignore "lib/templates/*.rb"
|
10
|
+
|
11
|
+
library "pathname" # Standard libraries
|
12
|
+
# library "strong_json" # Gems
|
13
|
+
|
14
|
+
# configure_code_diagnostics(D::Ruby.default) # `default` diagnostics setting (applies by default)
|
15
|
+
# configure_code_diagnostics(D::Ruby.strict) # `strict` diagnostics setting
|
16
|
+
# configure_code_diagnostics(D::Ruby.lenient) # `lenient` diagnostics setting
|
17
|
+
# configure_code_diagnostics(D::Ruby.silent) # `silent` diagnostics setting
|
18
|
+
# configure_code_diagnostics do |hash| # You can setup everything yourself
|
19
|
+
# hash[D::Ruby::NoMethod] = :information
|
20
|
+
# end
|
21
|
+
end
|
22
|
+
|
23
|
+
# target :test do
|
24
|
+
# signature "sig", "sig-private"
|
25
|
+
#
|
26
|
+
# check "test"
|
27
|
+
#
|
28
|
+
# # library "pathname" # Standard libraries
|
29
|
+
# end
|
data/bin/common-prefix
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'optparse'
|
3
|
+
require "rubygems/specification"
|
3
4
|
require_relative '../lib/pathname/common_prefix'
|
4
5
|
|
5
6
|
opt = OptionParser.new do |opt|
|
6
|
-
opt.version =
|
7
|
+
opt.version = Gem::Specification.load(File.join(__dir__, "../pathname-common_prefix.gemspec")).version
|
7
8
|
opt.banner = <<EOB
|
8
9
|
Usage: common-prefix
|
9
10
|
Show prefix common to pathnames from standard input
|
@@ -13,7 +14,7 @@ EOB
|
|
13
14
|
end
|
14
15
|
opt.parse!
|
15
16
|
|
16
|
-
paths = ARGF.
|
17
|
+
paths = ARGF.each_line.select {|line| line !~ /^$/}.collect(&:chomp)
|
17
18
|
begin
|
18
19
|
puts Pathname.common_prefix(paths)
|
19
20
|
rescue => err
|
@@ -3,21 +3,25 @@ require 'pathname'
|
|
3
3
|
class Pathname
|
4
4
|
class << self
|
5
5
|
def common_prefix(*paths)
|
6
|
-
return if paths.empty?
|
7
6
|
paths.flatten!
|
7
|
+
return if paths.empty?
|
8
|
+
# @type var paths: NonEmptyArray[string | Pathname]
|
8
9
|
Pathname(paths.pop).common_prefix(paths)
|
9
10
|
end
|
10
11
|
end
|
11
12
|
|
12
13
|
def common_prefix(*others)
|
13
14
|
others.flatten!
|
15
|
+
# @type var others: Array[string | Pathname]
|
14
16
|
others.map! {|path| Pathname path}
|
17
|
+
# @type var others: Array[Pathname]
|
15
18
|
enum_for(:ascend).find {|path|
|
16
|
-
|
19
|
+
# @type path: pathnamable
|
20
|
+
others.all? {|other|other.start_with?(path)}
|
17
21
|
}
|
18
22
|
end
|
19
23
|
|
20
|
-
def start_with?(
|
21
|
-
enum_for(:descend).include?(Pathname(
|
24
|
+
def start_with?(prefix)
|
25
|
+
enum_for(:descend).include?(Pathname(prefix))
|
22
26
|
end
|
23
27
|
end
|
@@ -1,11 +1,13 @@
|
|
1
1
|
Gem::Specification.new do |gem|
|
2
2
|
gem.name = 'pathname-common_prefix'
|
3
|
-
gem.version = '0.0.
|
3
|
+
gem.version = '0.0.2'
|
4
4
|
gem.authors = ['KITAITI Makoto']
|
5
5
|
gem.email = ['KitaitiMakoto@gmail.com']
|
6
|
-
gem.description = 'This file provides `Pathname.common_prefix` and `Pathname#common_prefix` which
|
7
|
-
gem.summary = '
|
8
|
-
gem.homepage = 'https://
|
6
|
+
gem.description = 'This file provides `Pathname.common_prefix` and `Pathname#common_prefix` which calculate the common prefix in the passed paths.'
|
7
|
+
gem.summary = 'Calculate prefix commont to some pathnames'
|
8
|
+
gem.homepage = 'https://gitlab.com/KitaitiMakoto/pathname-common_prefix'
|
9
|
+
|
10
|
+
gem.metadata["source_code_uri"] = "https://gitlab.com/KitaitiMakoto/pathname-common_prefix"
|
9
11
|
|
10
12
|
gem.files = %w[
|
11
13
|
lib/pathname/common_prefix.rb
|
@@ -14,6 +16,7 @@ Gem::Specification.new do |gem|
|
|
14
16
|
README.markdown
|
15
17
|
Rakefile setup.rb
|
16
18
|
pathname-common_prefix.gemspec
|
19
|
+
Steepfile sig/pathname-common_prefix.rbs
|
17
20
|
]
|
18
21
|
gem.executables = %w[common-prefix]
|
19
22
|
gem.test_files = %w[test/test_common_prefix.rb]
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# TypeProf 0.21.8
|
2
|
+
|
3
|
+
# Classes
|
4
|
+
class Pathname
|
5
|
+
def self.common_prefix: (*pathnamable_array paths) -> Pathname?
|
6
|
+
def common_prefix: (*pathnamable_array others) -> Pathname?
|
7
|
+
def start_with?: (pathnamable other) -> bool
|
8
|
+
end
|
9
|
+
|
10
|
+
type pathnamable = string | Pathname
|
11
|
+
type pathnamable_array = pathnamable | Array[pathnamable_array]
|
12
|
+
|
13
|
+
# Class just for type checking
|
14
|
+
class NonEmptyArray[T] < Array[T]
|
15
|
+
def pop: -> T
|
16
|
+
end
|
metadata
CHANGED
@@ -1,18 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pathname-common_prefix
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- KITAITI Makoto
|
9
|
-
autorequire:
|
8
|
+
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2023-12-24 00:00:00.000000000 Z
|
13
12
|
dependencies: []
|
14
13
|
description: This file provides `Pathname.common_prefix` and `Pathname#common_prefix`
|
15
|
-
which
|
14
|
+
which calculate the common prefix in the passed paths.
|
16
15
|
email:
|
17
16
|
- KitaitiMakoto@gmail.com
|
18
17
|
executables:
|
@@ -20,36 +19,37 @@ executables:
|
|
20
19
|
extensions: []
|
21
20
|
extra_rdoc_files: []
|
22
21
|
files:
|
23
|
-
- lib/pathname/common_prefix.rb
|
24
|
-
- test/test_common_prefix.rb
|
25
|
-
- bin/common-prefix
|
26
22
|
- README.markdown
|
27
23
|
- Rakefile
|
28
|
-
-
|
24
|
+
- Steepfile
|
25
|
+
- bin/common-prefix
|
26
|
+
- lib/pathname/common_prefix.rb
|
29
27
|
- pathname-common_prefix.gemspec
|
30
|
-
|
28
|
+
- setup.rb
|
29
|
+
- sig/pathname-common_prefix.rbs
|
30
|
+
- test/test_common_prefix.rb
|
31
|
+
homepage: https://gitlab.com/KitaitiMakoto/pathname-common_prefix
|
31
32
|
licenses: []
|
32
|
-
|
33
|
+
metadata:
|
34
|
+
source_code_uri: https://gitlab.com/KitaitiMakoto/pathname-common_prefix
|
35
|
+
post_install_message:
|
33
36
|
rdoc_options: []
|
34
37
|
require_paths:
|
35
38
|
- lib
|
36
39
|
required_ruby_version: !ruby/object:Gem::Requirement
|
37
|
-
none: false
|
38
40
|
requirements:
|
39
|
-
- -
|
41
|
+
- - ">="
|
40
42
|
- !ruby/object:Gem::Version
|
41
43
|
version: '0'
|
42
44
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
43
|
-
none: false
|
44
45
|
requirements:
|
45
|
-
- -
|
46
|
+
- - ">="
|
46
47
|
- !ruby/object:Gem::Version
|
47
48
|
version: '0'
|
48
49
|
requirements: []
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
summary: Calcurate prefix commont to some pathnames
|
50
|
+
rubygems_version: 3.5.3
|
51
|
+
signing_key:
|
52
|
+
specification_version: 4
|
53
|
+
summary: Calculate prefix commont to some pathnames
|
54
54
|
test_files:
|
55
55
|
- test/test_common_prefix.rb
|