eac_fs 0.13.0 → 0.14.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
  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