pathtree 0.1.0 → 0.1.1

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: de74120e5b4aa9d6861e270420fb1e03fc28a77e9e9ef6f88299e931293511f2
4
- data.tar.gz: ec2845821ab2900a60588e4ad1762cae05111ce7b6a7eada70a4a46d889843d9
3
+ metadata.gz: 13b52803c5a409fd368d095edb856e29a3a54c6c7e177df66e4410473ee3f776
4
+ data.tar.gz: 4ee4258ce192ae3d6ff2f8b943f1d76bc886ce7a2fdbaf851aa549c74d6050ac
5
5
  SHA512:
6
- metadata.gz: ae867e4b72f16495c41f196d5795762cc16992437e3e5ddb86dad1ba99415df5e22143ff390557a7fc19d43af5ed84efbe33f8f9038282816aa7bb40bca5fcc8
7
- data.tar.gz: e623ba3f2e117245979f6d9ebe3a2fbc4866bc8aef4100afb4ba90d25c60c0e35b35a8468d2d8f6e09621d8716528fc7127691f393ab58530ee34102531bcdf1
6
+ metadata.gz: f615213773979b011228246740045d274021ca3c453466403cb3c90a44795d0f589f2f4ac5fad0dc1938ee19fb72d089217739fea2061ee7b9d81dc583cc8a64
7
+ data.tar.gz: 476c327f6704ec2a80ef6abc2eb98f079b6f82aba2cf40f5299e7a7a37163e44dec6baa6046824dc71623f0dab9dd30f8a88b58f7817003e3ed4a9105bbc6c09
data/CHANGELOG.md CHANGED
@@ -7,6 +7,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## Unreleased
9
9
 
10
+ ## 0.1.1 - 2021-11-20
11
+
12
+ ### Added
13
+
14
+ * `dot` option for `Pathtree::Dsl#file` and `Pathtree::Dsl#directory`.
15
+ If `dot: true`, then path name is prefixed with dot (period) character
16
+ unless it start with dot already.
17
+
18
+ ```ruby
19
+ # old
20
+ file :rubocop_yml, '.rubocop_yml'
21
+
22
+ # new
23
+ file :rubocop_yml, dot: true # .rubocop.yml
24
+ ```
25
+
26
+ * `Pathtree::Dsl#dir` alias for `Pathtree::Dsl#directory`.
27
+
10
28
  ## 0.1.0 - 2021-11-13
11
29
 
12
30
  - Initial release
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Pathtree
4
- VERSION = '0.1.0'
4
+ VERSION = '0.1.1'
5
5
  end
data/lib/pathtree.rb CHANGED
@@ -21,8 +21,19 @@ class Pathtree
21
21
  end
22
22
  end
23
23
 
24
+ module StringRefinements
25
+ refine String do
26
+ def prefix_dot
27
+ return self if start_with?('.')
28
+
29
+ ".#{self}"
30
+ end
31
+ end
32
+ end
33
+
24
34
  class Dsl
25
35
  using SymbolRefinements
36
+ using StringRefinements
26
37
 
27
38
  attr_reader :tree
28
39
 
@@ -40,26 +51,34 @@ class Pathtree
40
51
  File.read(file_path).then { instance_eval(_1) }
41
52
  end
42
53
 
43
- def file(name, path = name.path(type: :file))
54
+ def file(name, path = name.path(type: :file), dot: false)
44
55
  # NOTE: Temporal variable is needed
45
56
  # since define_singleton_method's block is evaluated using instance_eval
46
57
  # which is same as define_method.
47
58
  working_directory = @working_directory
48
59
 
60
+ path = path.prefix_dot if dot
61
+
49
62
  @tree.define_singleton_method(name) { working_directory / path }
50
63
  end
51
64
 
52
- def directory(name, path = name.path, &block)
65
+ def directory(name, path = name.path, dot: false, &block)
66
+ path = path.prefix_dot if dot
67
+
68
+ # NOTE: Temporal variable is needed
69
+ # since define_singleton_method's block is evaluated using instance_eval
70
+ # which is same as define_method.
53
71
  working_directory = @working_directory / path
54
72
 
55
73
  @tree.define_singleton_method(name) do
56
- Dsl.new(working_directory: working_directory)
57
- .tap do |d|
58
- d.tree.instance_variable_set('@path', working_directory)
59
- d.instance_eval(&block) if block_given?
60
- end.tree
74
+ Dsl.new(working_directory: working_directory).tap do |d|
75
+ d.tree.instance_variable_set('@path', working_directory)
76
+ d.instance_eval(&block) if block_given?
77
+ end.tree
61
78
  end
62
79
  end
80
+
81
+ alias dir directory
63
82
  end
64
83
 
65
84
  module KernelRefinements
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pathtree
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - gemmaro
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-13 00:00:00.000000000 Z
11
+ date: 2021-11-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pathname