ehbrs_ruby_utils 0.41.2 → 0.43.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/lib/ehbrs_ruby_utils/music/sort/files/base.rb +43 -0
- data/lib/ehbrs_ruby_utils/music/sort/files/factory.rb +64 -0
- data/lib/ehbrs_ruby_utils/music/sort/files/scanner.rb +60 -0
- data/lib/ehbrs_ruby_utils/music/sort/files.rb +13 -0
- data/lib/ehbrs_ruby_utils/music/sort.rb +11 -0
- data/lib/ehbrs_ruby_utils/version.rb +1 -1
- metadata +9 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d49474096e476f03b1771e1da9b08054fa00d5a5daa095735d03bbab244c36b3
|
4
|
+
data.tar.gz: 59f7d23319c7666b9751f2008b2c72fac3a4967a3c35f3988452f9c150450256
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 98094f7b4340f323ad143a14f21c7ac6f7bb453d9647b3d55efbb0b4c567e4351d52fcbbb3ebd71a9e92a72a78debae83badf0eeffae02e2739c9993191ff07f
|
7
|
+
data.tar.gz: c2e6242a13bf62cf5681107be0741caef823569196cf71809f79be4e1e865c2525bf0bf6f99d8ec959c43c350a7bcb0ad6676ab9b23233e31f2a8f97bd7fe126
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'ehbrs_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module EhbrsRubyUtils
|
6
|
+
module Music
|
7
|
+
module Sort
|
8
|
+
module Files
|
9
|
+
class Base
|
10
|
+
common_constructor :section, :order, :name, :original_path, :padding, default: [nil, 0] do
|
11
|
+
self.original_path = original_path.if_present { |v| v.to_pathname.expand_path }
|
12
|
+
end
|
13
|
+
|
14
|
+
def reorder(new_section, new_order, padding)
|
15
|
+
self.class.new(new_section, new_order, name, original_path, padding)
|
16
|
+
end
|
17
|
+
|
18
|
+
def target_basename
|
19
|
+
"#{section}#{order.to_s.rjust(padding, '0')} #{name}"
|
20
|
+
end
|
21
|
+
|
22
|
+
def source_basename
|
23
|
+
original_path.if_present(&:basename) || raise('Original path is blank')
|
24
|
+
end
|
25
|
+
|
26
|
+
def to_s
|
27
|
+
target_basename
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def <=>(other)
|
33
|
+
%i[section order name].each do |a|
|
34
|
+
r = send(a) <=> other.send(a)
|
35
|
+
return r unless r.zero?
|
36
|
+
end
|
37
|
+
0
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'ehbrs_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module EhbrsRubyUtils
|
6
|
+
module Music
|
7
|
+
module Sort
|
8
|
+
module Files
|
9
|
+
class Factory
|
10
|
+
SECTION_CURRENT = 'A'
|
11
|
+
SECTION_NEW = 'Z'
|
12
|
+
SECTIONS = [SECTION_CURRENT, SECTION_NEW].freeze
|
13
|
+
NO_ORDER = Float::INFINITY
|
14
|
+
|
15
|
+
enable_simple_cache
|
16
|
+
common_constructor :path, :config_data
|
17
|
+
|
18
|
+
def basename
|
19
|
+
by_pattern(3).if_present(path.basename.to_path)
|
20
|
+
end
|
21
|
+
|
22
|
+
def build
|
23
|
+
::EhbrsRubyUtils::Music::Sort::Files::Base.new(section, order, basename, path)
|
24
|
+
end
|
25
|
+
|
26
|
+
def order
|
27
|
+
order_from_config_data || by_pattern(2).if_present(NO_ORDER, &:to_i)
|
28
|
+
end
|
29
|
+
|
30
|
+
def section
|
31
|
+
r = section_from_config_data || by_pattern(1).if_present(SECTION_NEW)
|
32
|
+
return SECTION_CURRENT if r.blank? || r.upcase == SECTION_CURRENT
|
33
|
+
|
34
|
+
SECTION_NEW
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def by_pattern(index)
|
40
|
+
match_builded_pattern.if_present { |v| v[index] }
|
41
|
+
end
|
42
|
+
|
43
|
+
def match_builded_pattern_uncached
|
44
|
+
/\A([a-z])?([0-9]+)\s+(\S.*)\z/i.match(path.basename.to_path)
|
45
|
+
end
|
46
|
+
|
47
|
+
def order_from_config_data
|
48
|
+
config_data.each_value do |files|
|
49
|
+
files.index(basename).if_present { |v| return v + 1 }
|
50
|
+
end
|
51
|
+
nil
|
52
|
+
end
|
53
|
+
|
54
|
+
def section_from_config_data
|
55
|
+
config_data.each do |section, files|
|
56
|
+
return section if files.include?(basename)
|
57
|
+
end
|
58
|
+
nil
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'ehbrs_ruby_utils/core_ext'
|
4
|
+
require 'ehbrs_ruby_utils/music/sort/files/factory'
|
5
|
+
|
6
|
+
module EhbrsRubyUtils
|
7
|
+
module Music
|
8
|
+
module Sort
|
9
|
+
module Files
|
10
|
+
class Scanner
|
11
|
+
enable_simple_cache
|
12
|
+
common_constructor :root
|
13
|
+
|
14
|
+
def all
|
15
|
+
by_section.flat_map { |_s, fs| fs }
|
16
|
+
end
|
17
|
+
|
18
|
+
def config_file
|
19
|
+
root.join('.sort')
|
20
|
+
end
|
21
|
+
|
22
|
+
# @return [Integer]
|
23
|
+
def count
|
24
|
+
by_section.values.inject(0) { |a, e| a + e.count }
|
25
|
+
end
|
26
|
+
|
27
|
+
def search(name)
|
28
|
+
all.find { |sf| sf.name == name }
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def by_section_uncached
|
34
|
+
r = {}
|
35
|
+
to_sort.each do |f|
|
36
|
+
sf = ::EhbrsRubyUtils::Music::Sort::Files::Factory.new(f, config_data).build
|
37
|
+
r[sf.section] ||= []
|
38
|
+
r[sf.section] << sf
|
39
|
+
end
|
40
|
+
EhbrsRubyUtils::Music::Sort::Files::Factory::SECTIONS.index_with do |s|
|
41
|
+
r[s] || []
|
42
|
+
end.freeze
|
43
|
+
end
|
44
|
+
|
45
|
+
def config_data_uncached
|
46
|
+
if config_file.exist?
|
47
|
+
::EacRubyUtils::Yaml.load_file(config_file)
|
48
|
+
else
|
49
|
+
{}
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def to_sort
|
54
|
+
root.children.reject { |e| e.basename.to_path.start_with?('.') }
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ehbrs_ruby_utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.43.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eduardo H. Bogoni
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-05-
|
11
|
+
date: 2024-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aranha
|
@@ -70,20 +70,14 @@ dependencies:
|
|
70
70
|
requirements:
|
71
71
|
- - "~>"
|
72
72
|
- !ruby/object:Gem::Version
|
73
|
-
version: '0.
|
74
|
-
- - ">="
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: 0.90.1
|
73
|
+
version: '0.91'
|
77
74
|
type: :runtime
|
78
75
|
prerelease: false
|
79
76
|
version_requirements: !ruby/object:Gem::Requirement
|
80
77
|
requirements:
|
81
78
|
- - "~>"
|
82
79
|
- !ruby/object:Gem::Version
|
83
|
-
version: '0.
|
84
|
-
- - ">="
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
version: 0.90.1
|
80
|
+
version: '0.91'
|
87
81
|
- !ruby/object:Gem::Dependency
|
88
82
|
name: dentaku
|
89
83
|
requirement: !ruby/object:Gem::Requirement
|
@@ -339,6 +333,11 @@ files:
|
|
339
333
|
- lib/ehbrs_ruby_utils/music/ous/artist.rb
|
340
334
|
- lib/ehbrs_ruby_utils/music/ous/category.rb
|
341
335
|
- lib/ehbrs_ruby_utils/music/ous/node.rb
|
336
|
+
- lib/ehbrs_ruby_utils/music/sort.rb
|
337
|
+
- lib/ehbrs_ruby_utils/music/sort/files.rb
|
338
|
+
- lib/ehbrs_ruby_utils/music/sort/files/base.rb
|
339
|
+
- lib/ehbrs_ruby_utils/music/sort/files/factory.rb
|
340
|
+
- lib/ehbrs_ruby_utils/music/sort/files/scanner.rb
|
342
341
|
- lib/ehbrs_ruby_utils/patches.rb
|
343
342
|
- lib/ehbrs_ruby_utils/patches/object.rb
|
344
343
|
- lib/ehbrs_ruby_utils/patches/object/template.rb
|