eac_fs 0.13.0 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 72b813f16e52d3d6aec045e053b008f8a758518bf7d032f45026dcc1023359ce
4
- data.tar.gz: 0455d5d966ab2f2134c5757f7e36885eb727a03f335512a837e5ed14cdb3413e
3
+ metadata.gz: 67ecee467e1090048cee39cf7ac2466c9c6b5cadd94dc15b8460d941cb7d053a
4
+ data.tar.gz: a980f7eb121bc6c28ca546228e044795a20fd90b224938ed3dfd01d1280cfb69
5
5
  SHA512:
6
- metadata.gz: 20b89a16b8c56a46cc6310dcb0c7db9e8d4a8e09a9e329507861111630903598062b905116b5404225312abc5b0b2817f7781d0b9d5144f6db81a6d344164d75
7
- data.tar.gz: f8b1c3a0c0f1a00750aabd037922453b9de167893817ce72330571bc5381c198f82a8ae6116278251745d7d931007abe11ec526c0d2b1c39c4dd5af4596ba684
6
+ metadata.gz: bc41798978be925acce17cc05790230ac2f9655f9fc9b7ed86ef6335873d4f98ecf952a0a965acc0b139dfa44724dbbc5baf704adcf96909de6266b7371eb45d
7
+ data.tar.gz: ddb6da66ffe30077ddbcc0f01ed4e30177b2f23d82f2b7e9706697ddfa6258876ee2831839021cc7f1e4f5984c4be51417e3f1b555adb54bcaf1e4159f426cd9
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EacFs
6
+ class Comparator
7
+ class Build
8
+ TRUNCATE_FILE_CONTENT = "__TRUNCATED__\n"
9
+
10
+ enable_method_class
11
+ common_constructor :comparator, :root
12
+ delegate :rename_files, :truncate_files, to: :comparator
13
+
14
+ # @return [Hash]
15
+ def result
16
+ build(root)
17
+ end
18
+
19
+ private
20
+
21
+ def build(obj)
22
+ if obj.file?
23
+ build_file(obj)
24
+ elsif obj.directory?
25
+ build_directory(obj)
26
+ else
27
+ raise "Unknown filesystem object \"#{obj}\""
28
+ end
29
+ end
30
+
31
+ # @param dir [Pathname]
32
+ # @return [Hash]
33
+ def build_directory(dir)
34
+ dir.children.map do |child|
35
+ [fs_object_basename(child), build(child)]
36
+ end.to_h
37
+ end
38
+
39
+ # @param file [Pathname]
40
+ # @return [Hash]
41
+ def build_file(file)
42
+ truncate_file?(file) ? TRUNCATE_FILE_CONTENT : file.read
43
+ end
44
+
45
+ # @return [String]
46
+ def fs_object_basename(obj)
47
+ rename_files.inject(obj.basename.to_path) { |a, e| e.apply(a) }
48
+ end
49
+
50
+ def truncate_file?(file)
51
+ truncate_files.any? do |pattern|
52
+ file.basename.fnmatch?(pattern)
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -4,51 +4,15 @@ require 'eac_ruby_utils/core_ext'
4
4
 
5
5
  module EacFs
6
6
  class Comparator
7
- require_sub __FILE__
8
-
9
- TRUNCATE_FILE_CONTENT = "__TRUNCATED__\n"
7
+ require_sub __FILE__, require_dependency: true
10
8
 
11
9
  enable_immutable
12
10
  immutable_accessor :rename_file, :truncate_file, type: :array
13
11
 
14
- # @return [Hash]
15
- def build(obj)
16
- if obj.file?
17
- build_file(obj)
18
- elsif obj.directory?
19
- build_directory(obj)
20
- else
21
- raise "Unknown filesystem object \"#{obj}\""
22
- end
23
- end
24
-
25
12
  alias rename_file_push rename_file
26
13
 
27
14
  def rename_file(from, to)
28
15
  rename_file_push(::EacFs::Comparator::RenameFile.new(from, to))
29
16
  end
30
-
31
- private
32
-
33
- # @param dir [Pathname]
34
- # @return [Hash]
35
- def build_directory(dir)
36
- dir.children.map do |child|
37
- [fs_object_basename(child), build(child)]
38
- end.to_h
39
- end
40
-
41
- # @param file [Pathname]
42
- # @return [Hash]
43
- def build_file(file)
44
- return TRUNCATE_FILE_CONTENT if truncate_files.include?(file.basename.to_path)
45
-
46
- file.read
47
- end
48
-
49
- # @return [String]
50
- def fs_object_basename(obj)
51
- rename_files.inject(obj.basename.to_path) { |a, e| e.apply(a) }
52
- end
53
17
  end
54
18
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacFs
4
- VERSION = '0.13.0'
4
+ VERSION = '0.14.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eac_fs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Put here the authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-29 00:00:00.000000000 Z
11
+ date: 2022-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: content-type
@@ -93,6 +93,7 @@ files:
93
93
  - lib/eac_fs.rb
94
94
  - lib/eac_fs/cached_download.rb
95
95
  - lib/eac_fs/comparator.rb
96
+ - lib/eac_fs/comparator/build.rb
96
97
  - lib/eac_fs/comparator/rename_file.rb
97
98
  - lib/eac_fs/contexts.rb
98
99
  - lib/eac_fs/file_info.rb