pathtree 0.2.0 → 0.3.0
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 +4 -4
- data/CHANGELOG.md +26 -0
- data/lib/pathtree/version.rb +1 -1
- data/lib/pathtree.rb +49 -28
- metadata +6 -117
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d8abe169d75eec0e468f2632575fea2087681a73a60792f58bdb13519b71633
|
4
|
+
data.tar.gz: 82d71231c2b80f0ec8ebaea69677b2d12c6ee2ebfcb0aec83accf6c67255b1df
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 30599d8e1979cfa9f5589985da12e7711ddbffe60e7407f877f3b9dec78185bff29876951791f8525d0531d9a94d17b47a86a5ed988ea41608fb7c60e7b4d18a
|
7
|
+
data.tar.gz: 128c8141f301f80b321af22171203c7bad4c666a03e51b8a477445f6a37ec177cc890026acdf069afdca346f37745341c844085cd9b19a59c81ed2b69edf0ee9
|
data/CHANGELOG.md
CHANGED
@@ -7,6 +7,32 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
7
7
|
|
8
8
|
## Unreleased
|
9
9
|
|
10
|
+
## 0.3.0 - 2021-12-12
|
11
|
+
|
12
|
+
### Added
|
13
|
+
|
14
|
+
* GitLab CI which checks tests with Minitest and lint rules with RuboCop
|
15
|
+
* Enable to pass `Proc` object to `path` argument
|
16
|
+
of `Pathtree::Dsl#file` and `Pathtree::Dsl#directory`.
|
17
|
+
|
18
|
+
```ruby
|
19
|
+
file :main_idr, -> { _1.capitalize } # Main.idr
|
20
|
+
```
|
21
|
+
|
22
|
+
* `Pathtree::StringRefinements#split_extension`
|
23
|
+
* `Pathtree::ObjectRefinements#file_path` and `Pathtree::ObjectRefinements#directory_path`
|
24
|
+
|
25
|
+
### Removed
|
26
|
+
|
27
|
+
* `Pathtree::SymbolRefinements`
|
28
|
+
* Move to `Pathtree::StringRefinements#split_extension`
|
29
|
+
* `dot` option for `Pathtree::Dsl#file` and `Pathtree::Dsl#directory`
|
30
|
+
* Use `Proc` for path instead
|
31
|
+
|
32
|
+
### Changed
|
33
|
+
|
34
|
+
* Visibility of `Pathtree::Dsl#read` to private
|
35
|
+
|
10
36
|
## 0.2.0 - 2021-11-20
|
11
37
|
|
12
38
|
### Changed
|
data/lib/pathtree/version.rb
CHANGED
data/lib/pathtree.rb
CHANGED
@@ -4,23 +4,6 @@ require 'pathname'
|
|
4
4
|
require_relative 'pathtree/version'
|
5
5
|
|
6
6
|
class Pathtree < Pathname
|
7
|
-
module SymbolRefinements
|
8
|
-
refine Symbol do
|
9
|
-
# +type+ option can be one of the following:
|
10
|
-
#
|
11
|
-
# +:directory+:: +:directory+ simply converts to +String+.
|
12
|
-
# +:file+:: +:file+ converts to +String+, and turn +aaa_bbb_ccc+ into +aaa_bbb.ccc+ for example.
|
13
|
-
def path(type: :directory)
|
14
|
-
case type
|
15
|
-
in :directory
|
16
|
-
to_s
|
17
|
-
in :file
|
18
|
-
to_s.sub(/\A[a-z0-9_]*\K_(?=[a-z0-9]+\Z)/, '.')
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
7
|
module StringRefinements
|
25
8
|
refine String do
|
26
9
|
def prefix_dot
|
@@ -28,16 +11,48 @@ class Pathtree < Pathname
|
|
28
11
|
|
29
12
|
".#{self}"
|
30
13
|
end
|
14
|
+
|
15
|
+
# Split at last underscore `_` and turn last part into file extension
|
16
|
+
#
|
17
|
+
# "aaa_bbb_ccc".split_extension #=> aaa_bbb.ccc
|
18
|
+
def split_extension
|
19
|
+
sub(/\A[a-z0-9_]*\K_(?=[a-z0-9]+\Z)/, '.')
|
20
|
+
end
|
31
21
|
end
|
32
22
|
end
|
33
23
|
|
34
|
-
|
35
|
-
using SymbolRefinements
|
24
|
+
module ObjectRefinements
|
36
25
|
using StringRefinements
|
37
26
|
|
27
|
+
refine Object do
|
28
|
+
# Use Pathtree::StringRefinements#split_extension by default
|
29
|
+
def file_path(name:)
|
30
|
+
path(name: name, proc_for_nil: -> { _1.split_extension })
|
31
|
+
end
|
32
|
+
|
33
|
+
def directory_path(name:)
|
34
|
+
path(name: name, proc_for_nil: -> { _1 })
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def path(name:, proc_for_nil:) # :nodoc:
|
40
|
+
case self
|
41
|
+
in String
|
42
|
+
self
|
43
|
+
in NilClass
|
44
|
+
proc_for_nil.call(name.to_s)
|
45
|
+
in Proc
|
46
|
+
call(name.to_s)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
class Dsl
|
38
53
|
def self.read(file_path, working_directory: Pathname.pwd)
|
39
54
|
new(working_directory: working_directory)
|
40
|
-
.tap { _1.read
|
55
|
+
.tap { _1.send(:read, file_path) }
|
41
56
|
.instance_variable_get(:@working_directory)
|
42
57
|
end
|
43
58
|
|
@@ -46,23 +61,21 @@ class Pathtree < Pathname
|
|
46
61
|
@working_directory = Pathtree.new(working_directory)
|
47
62
|
end
|
48
63
|
|
49
|
-
|
50
|
-
|
51
|
-
|
64
|
+
using ObjectRefinements
|
65
|
+
|
66
|
+
def file(name, path = nil)
|
67
|
+
path = path.file_path(name: name)
|
52
68
|
|
53
|
-
def file(name, path = name.path(type: :file), dot: false)
|
54
69
|
# NOTE: Temporal variable is needed
|
55
70
|
# since define_singleton_method's block is evaluated using instance_eval
|
56
71
|
# which is same as define_method.
|
57
72
|
working_directory = @working_directory
|
58
73
|
|
59
|
-
path = path.prefix_dot if dot
|
60
|
-
|
61
74
|
@working_directory.define_singleton_method(name) { working_directory / path }
|
62
75
|
end
|
63
76
|
|
64
|
-
def directory(name, path =
|
65
|
-
path = path.
|
77
|
+
def directory(name, path = nil, &block)
|
78
|
+
path = path.directory_path(name: name)
|
66
79
|
|
67
80
|
# NOTE: Temporal variable is needed
|
68
81
|
# since define_singleton_method's block is evaluated using instance_eval
|
@@ -77,5 +90,13 @@ class Pathtree < Pathname
|
|
77
90
|
end
|
78
91
|
|
79
92
|
alias dir directory
|
93
|
+
|
94
|
+
private
|
95
|
+
|
96
|
+
using StringRefinements
|
97
|
+
|
98
|
+
def read(file_path)
|
99
|
+
instance_eval File.read(file_path)
|
100
|
+
end
|
80
101
|
end
|
81
102
|
end
|
metadata
CHANGED
@@ -1,127 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pathtree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- gemmaro
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
12
|
-
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: pathname
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 0.2.0
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 0.2.0
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: minitest
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '5.0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '5.0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rake
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '13.0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '13.0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rdoc
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '6.3'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '6.3'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rubocop
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '1.7'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '1.7'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: rubocop-minitest
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: 0.15.2
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - "~>"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: 0.15.2
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: rubocop-rake
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - "~>"
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: 0.6.0
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - "~>"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: 0.6.0
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: solargraph
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - "~>"
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: 0.44.0
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - "~>"
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: 0.44.0
|
11
|
+
date: 2021-12-12 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
125
13
|
description: Tree structure of Pathname
|
126
14
|
email:
|
127
15
|
- gemmaro.dev@gmail.com
|
@@ -137,7 +25,8 @@ files:
|
|
137
25
|
homepage: https://gitlab.com/gemmaro/pathtree
|
138
26
|
licenses:
|
139
27
|
- MIT
|
140
|
-
metadata:
|
28
|
+
metadata:
|
29
|
+
rubygems_mfa_required: 'true'
|
141
30
|
post_install_message:
|
142
31
|
rdoc_options: []
|
143
32
|
require_paths:
|
@@ -153,7 +42,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
153
42
|
- !ruby/object:Gem::Version
|
154
43
|
version: '0'
|
155
44
|
requirements: []
|
156
|
-
rubygems_version: 3.2.
|
45
|
+
rubygems_version: 3.2.32
|
157
46
|
signing_key:
|
158
47
|
specification_version: 4
|
159
48
|
summary: Tree structure of Pathname
|