pathutil 0.1.0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a5e8217f19941dcb6f7060af726863789c844402
4
- data.tar.gz: cc17e2e5cd8acfea2c85c608dde8ba8f8f4ecec4
3
+ metadata.gz: 669c8ad0cd1c1453270dc9f60b8cab8a1df7402b
4
+ data.tar.gz: 5e29a250d54e9aea640c556f929cc8b83940db71
5
5
  SHA512:
6
- metadata.gz: 255fd2e9685ba5b0df03b7606b7b8f5440b4de42b8c22eb030d3e4e513e68eae47d521bb372c3c2abb03aab2ff8c689d55731688736db8794dd4d76c28c22694
7
- data.tar.gz: 30aaf4263534f08ce58b79c8ed2e0542051b2391341a3f892fb112531956bdf72e7a131639b8b4f40d02fb7b99e9db50c01d0873c40f17b5d37eea0ae646c4d3
6
+ metadata.gz: 19cebb9ac016da538e72374cba8c51f5d1a9f229e0cea0f022560257d6b96eac66a43d6a078c7fa7c9ef674df8768213df87950d1b60f489b91ab75f7a2b272c
7
+ data.tar.gz: 7d118f6675c9d116b5b5bc670c35fe79a8ba1cd62c0ccd815fb7c4011fb57c9a4eb08ed7a070855097a2fa00a154cbf81cd9fef262681ff084a1e90ff419e83a
data/Gemfile CHANGED
@@ -14,6 +14,7 @@ end
14
14
  group :development do
15
15
  gem "rspec", :require => false
16
16
  gem "rspec-helpers", :require => false
17
+ gem "luna-rubocop-formatters", :require => false
17
18
  gem "rubocop", :github => "bbatsov/rubocop", :require => false
18
19
  gem "luna-rspec-formatters", :require => false
19
20
  gem "benchmark-ips", :require => false
data/Rakefile CHANGED
@@ -14,6 +14,8 @@ RSpec::Core::RakeTask.new :spec
14
14
  BenchmarkTask.new :benchmark
15
15
  task :test => :spec
16
16
 
17
+ # ----------------------------------------------------------------------------
18
+
17
19
  namespace :diff do
18
20
  desc "List methods we have that Pathname doesn't."
19
21
  task :methods do
@@ -24,6 +26,8 @@ namespace :diff do
24
26
  end
25
27
  end
26
28
 
29
+ # ----------------------------------------------------------------------------
30
+
27
31
  namespace :missing do
28
32
  desc "List methods we are missing."
29
33
  task :methods do
@@ -38,6 +42,8 @@ namespace :missing do
38
42
  end
39
43
  end
40
44
 
45
+ # ----------------------------------------------------------------------------
46
+
41
47
  namespace :pathname do
42
48
  desc "List all of Pathnames methods."
43
49
  task :methods do
@@ -53,6 +59,8 @@ namespace :pathname do
53
59
  end
54
60
  end
55
61
 
62
+ # ----------------------------------------------------------------------------
63
+
56
64
  desc "List all of Pathutils methods."
57
65
  task :methods do
58
66
  methods = Pathutil.instance_methods - Object.instance_methods
@@ -63,3 +71,10 @@ task :methods do
63
71
 
64
72
  $stdout.puts
65
73
  end
74
+
75
+ # ----------------------------------------------------------------------------
76
+
77
+ task :rubocop do
78
+ sh "bundle", "exec", "rubocop", "-DE", "-r", "luna/rubocop/formatters/checks", \
79
+ "-f", "Luna::RuboCop::Formatters::Checks"
80
+ end
data/lib/pathutil.rb CHANGED
@@ -11,42 +11,12 @@ require "find"
11
11
 
12
12
  class Pathutil
13
13
  extend Forwardable::Extended
14
- self.class.send(:attr_writer, :encoding)
15
14
  attr_writer :encoding
16
15
 
17
- #
18
-
19
- class << self
20
-
21
- # ------------------------------------------------------------------------
22
- # Aliases the default system encoding to us so that we can do most read
23
- # and write operations with that encoding, instead of being crazy.
24
- # @note you are encouraged to override this if you need to.
25
- # ------------------------------------------------------------------------
26
-
27
- def encoding
28
- return @encoding ||= begin
29
- Encoding.default_external
30
- end
31
- end
32
-
33
- # ------------------------------------------------------------------------
34
- # Normalize CRLF -> LF on Windows reads, to ease your troubles.
35
- # Normalize LF -> CLRF on Windows write, to ease their troubles.
36
- # ------------------------------------------------------------------------
37
-
38
- def normalize
39
- return @normalize ||= {
40
- :read => Gem.win_platform?,
41
- :write => Gem.win_platform?
42
- }
43
- end
44
- end
45
-
46
16
  # --------------------------------------------------------------------------
47
17
 
48
18
  def initialize(path)
49
- @path = path.respond_to?(:to_path) ? path.to_path : path.to_s
19
+ @path = (path.respond_to?(:to_path) ? path.to_path : path.to_s).dup
50
20
  end
51
21
 
52
22
  # --------------------------------------------------------------------------
@@ -92,7 +62,7 @@ class Pathutil
92
62
 
93
63
  # --------------------------------------------------------------------------
94
64
 
95
- def read_yaml(safe: true, whitelist_classes: [], throw_missing: false)
65
+ def read_yaml(safe: true, whitelist_classes: [], whitelist_symbols: [], throw_missing: false, aliases: true)
96
66
  require "yaml"
97
67
 
98
68
  unless safe
@@ -103,14 +73,17 @@ class Pathutil
103
73
 
104
74
  if !YAML.respond_to?(:safe_load)
105
75
  setup_safe_yaml whitelist_classes
106
- SafeYAML.load(read, {
107
- :raise_on_unknown_tag => true
108
- })
76
+ SafeYAML.load(
77
+ read
78
+ )
109
79
 
110
80
  else
111
- YAML.safe_load(read, {
112
- :whitelist_classes => whitelist_classes
113
- })
81
+ YAML.safe_load(
82
+ read,
83
+ whitelist_classes,
84
+ whitelist_symbols,
85
+ aliases
86
+ )
114
87
  end
115
88
  rescue Errno::ENOENT
116
89
  throw_missing ? raise : (
@@ -284,7 +257,12 @@ class Pathutil
284
257
  # --------------------------------------------------------------------------
285
258
 
286
259
  def descend
287
- return ascend.to_a.reverse.to_enum unless block_given?
260
+ unless block_given?
261
+ return to_enum(
262
+ __method__
263
+ )
264
+ end
265
+
288
266
  ascend.to_a.reverse_each do |val|
289
267
  yield val
290
268
  end
@@ -701,6 +679,49 @@ class Pathutil
701
679
 
702
680
  # --------------------------------------------------------------------------
703
681
 
682
+ class << self
683
+ attr_writer :encoding
684
+
685
+ # ------------------------------------------------------------------------
686
+ # Aliases the default system encoding to us so that we can do most read
687
+ # and write operations with that encoding, instead of being crazy.
688
+ # @note you are encouraged to override this if you need to.
689
+ # ------------------------------------------------------------------------
690
+
691
+ def encoding
692
+ return @encoding ||= begin
693
+ Encoding.default_external
694
+ end
695
+ end
696
+
697
+ # ------------------------------------------------------------------------
698
+ # Normalize CRLF -> LF on Windows reads, to ease your troubles.
699
+ # Normalize LF -> CLRF on Windows write, to ease their troubles.
700
+ # ------------------------------------------------------------------------
701
+
702
+ def normalize
703
+ return @normalize ||= {
704
+ :read => Gem.win_platform?,
705
+ :write => Gem.win_platform?
706
+ }
707
+ end
708
+
709
+ # ------------------------------------------------------------------------
710
+
711
+ def make_tmpname(prefix = "", suffix = nil)
712
+ prefix = prefix.gsub(/\-\Z/, "") + "-" unless prefix.empty?
713
+
714
+ File.join(
715
+ Dir::Tmpname.tmpdir,
716
+ Dir::Tmpname.make_tmpname(
717
+ prefix, suffix
718
+ )
719
+ )
720
+ end
721
+ end
722
+
723
+ # --------------------------------------------------------------------------
724
+
704
725
  rb_delegate :sub, :to => :@path, :wrap => true
705
726
  rb_delegate :chomp, :to => :@path, :wrap => true
706
727
  rb_delegate :gsub, :to => :@path, :wrap => true
@@ -5,5 +5,5 @@
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
7
  class Pathutil
8
- VERSION = "0.1.0"
8
+ VERSION = "0.2.0"
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pathutil
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jordon Bedwell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-21 00:00:00.000000000 Z
11
+ date: 2016-01-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: forwardable-extended