k_type 0.0.3 → 0.0.8
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/Rakefile +2 -0
- data/k_type.gemspec +1 -0
- data/lib/k_type/composite.rb +53 -0
- data/lib/k_type/layered_folders.rb +17 -13
- data/lib/k_type/named_folders.rb +25 -0
- data/lib/k_type/version.rb +1 -1
- data/lib/k_type.rb +8 -1
- metadata +19 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 81e12c5e1221f34c6932f756316be4cd448b485c864e00032fe1061796dd1b9f
|
4
|
+
data.tar.gz: d8219232da4b73d6fb4e475fad17aa883f32c559cd931d89c499c8aa9aa4d1e5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fbbb1b900d30e01b39c6df6fe72a8c37f4ebf009f707f24719adf2e955da32f70386b918d26ab65723ed43089eb4d805b2235f50e9646e84e77e99fece1237d8
|
7
|
+
data.tar.gz: 5097adb3642706db3f1b10317d2fc8c113b136f38ea39871689918c6d4219307ef86e2c9bf4db4b9e93f234d3c88301ec46d3f96c678b818b9aa3fd07aa8e494
|
data/Rakefile
CHANGED
data/k_type.gemspec
CHANGED
@@ -0,0 +1,53 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# TODO: future
|
4
|
+
# This pattern would be great as a configurable generic class
|
5
|
+
#
|
6
|
+
# children could be renamed as:
|
7
|
+
# - directors
|
8
|
+
# - components
|
9
|
+
# - elements
|
10
|
+
#
|
11
|
+
# It may also be relevant to separate parent form children
|
12
|
+
|
13
|
+
# Parent director allows upwards navigation
|
14
|
+
# attr_reader :parent
|
15
|
+
# Children directors allow downwards navigation plus access to sub-directors
|
16
|
+
# attr_reader :children
|
17
|
+
|
18
|
+
module KType
|
19
|
+
# Composite Design Pattern: https://refactoring.guru/design-patterns/composite
|
20
|
+
module Composite
|
21
|
+
# Parent allows upwards navigation to components
|
22
|
+
attr_reader :parent
|
23
|
+
|
24
|
+
# Children allow downwards navigation plus access to sub-components
|
25
|
+
attr_reader :children
|
26
|
+
|
27
|
+
def attach_parent(parent)
|
28
|
+
@parent = parent
|
29
|
+
end
|
30
|
+
|
31
|
+
def navigate_parent
|
32
|
+
parent.nil? ? self : parent
|
33
|
+
end
|
34
|
+
|
35
|
+
def root?
|
36
|
+
parent.nil?
|
37
|
+
end
|
38
|
+
|
39
|
+
# Implement as needed (Implement is not provided here because you may want to use hash or array and have additional logic)
|
40
|
+
# def reset_children
|
41
|
+
# end
|
42
|
+
# def add_child
|
43
|
+
# end
|
44
|
+
# def remove_child
|
45
|
+
# end
|
46
|
+
# def get_children
|
47
|
+
# end
|
48
|
+
# def has_child?
|
49
|
+
# end
|
50
|
+
# def execute
|
51
|
+
# end
|
52
|
+
end
|
53
|
+
end
|
@@ -1,17 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module KType
|
4
|
-
#
|
5
|
-
# Named folders makes sense for generated/output folders because you may want
|
6
|
-
# more than one type of location to generate output.
|
7
|
-
#
|
8
|
-
# Don't confuse multiple named output folders with sub-paths, when you want to
|
9
|
-
# build up a file name in a child folder, you can do that as part of building
|
10
|
-
# the filename.
|
11
|
-
#
|
12
|
-
# The idea behind named folders is for when you have two or more totally different
|
13
|
-
# outputs that (may live in the a similar location) or live in different locations.
|
14
|
-
|
15
4
|
# Layered folders allow files to be found in any of the searchable folders
|
16
5
|
#
|
17
6
|
# They derive from and thus work just like named folders in that they allow folders
|
@@ -71,8 +60,13 @@ module KType
|
|
71
60
|
def add(folder_key, *folder_parts)
|
72
61
|
folder = super(folder_key, *folder_parts)
|
73
62
|
|
74
|
-
ordered_keys.
|
75
|
-
|
63
|
+
index = ordered_keys.find_index(folder_key)
|
64
|
+
if index
|
65
|
+
ordered_folders[index] = folder
|
66
|
+
else
|
67
|
+
ordered_keys.prepend(folder_key)
|
68
|
+
ordered_folders.prepend(folder)
|
69
|
+
end
|
76
70
|
|
77
71
|
folder
|
78
72
|
end
|
@@ -100,5 +94,15 @@ module KType
|
|
100
94
|
}
|
101
95
|
}.merge(@folders)
|
102
96
|
end
|
97
|
+
|
98
|
+
def debug(title: 'layered folders')
|
99
|
+
log.section_heading title
|
100
|
+
|
101
|
+
ordered_keys.each do |key|
|
102
|
+
folder = folders[key]
|
103
|
+
log.kv key.to_s, folder
|
104
|
+
end
|
105
|
+
nil
|
106
|
+
end
|
103
107
|
end
|
104
108
|
end
|
data/lib/k_type/named_folders.rb
CHANGED
@@ -34,6 +34,8 @@ module KType
|
|
34
34
|
#
|
35
35
|
# Do I need to support :default?
|
36
36
|
class NamedFolders
|
37
|
+
include KLog::Logging
|
38
|
+
|
37
39
|
attr_reader :folders
|
38
40
|
|
39
41
|
attr_reader :current
|
@@ -54,6 +56,12 @@ module KType
|
|
54
56
|
@current = folder_key
|
55
57
|
end
|
56
58
|
|
59
|
+
def current_folder
|
60
|
+
return nil unless @current
|
61
|
+
|
62
|
+
get(@current)
|
63
|
+
end
|
64
|
+
|
57
65
|
# Add support for file_parts
|
58
66
|
def add(folder_key, *folder_parts)
|
59
67
|
# get a predefined folder by symbol
|
@@ -89,10 +97,27 @@ module KType
|
|
89
97
|
@folders.keys
|
90
98
|
end
|
91
99
|
|
100
|
+
def folder_paths
|
101
|
+
@folders.values
|
102
|
+
end
|
103
|
+
|
92
104
|
def to_h
|
93
105
|
@folders
|
94
106
|
end
|
95
107
|
|
108
|
+
def debug(title: 'named folders')
|
109
|
+
log.section_heading title
|
110
|
+
|
111
|
+
log.kv 'current', current
|
112
|
+
log.info ''
|
113
|
+
|
114
|
+
folders.each_key do |key|
|
115
|
+
folder = folders[key]
|
116
|
+
log.kv key.to_s, folder
|
117
|
+
end
|
118
|
+
nil
|
119
|
+
end
|
120
|
+
|
96
121
|
private
|
97
122
|
|
98
123
|
def join_folder_parts(folder_parts)
|
data/lib/k_type/version.rb
CHANGED
data/lib/k_type.rb
CHANGED
@@ -1,12 +1,19 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'k_log'
|
3
4
|
require 'k_type/version'
|
5
|
+
require 'k_type/composite'
|
4
6
|
require 'k_type/named_folders'
|
5
7
|
require 'k_type/layered_folders'
|
6
8
|
|
7
9
|
module KType
|
8
10
|
# raise KType::Error, 'Sample message'
|
9
11
|
class Error < StandardError; end
|
12
|
+
end
|
10
13
|
|
11
|
-
|
14
|
+
if ENV['KLUE_DEBUG']&.to_s&.downcase == 'true'
|
15
|
+
namespace = 'KType::Version'
|
16
|
+
file_path = $LOADED_FEATURES.find { |f| f.include?('k_type/version') }
|
17
|
+
version = KType::VERSION.ljust(9)
|
18
|
+
puts "#{namespace.ljust(35)} : #{version.ljust(9)} : #{file_path}"
|
12
19
|
end
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: k_type
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Cruwys
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
12
|
-
dependencies:
|
11
|
+
date: 2022-01-12 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: k_log
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
description: " K Type provides base types for KlueLess code generation\n"
|
14
28
|
email:
|
15
29
|
- david@ideasmen.com.au
|
@@ -38,6 +52,7 @@ files:
|
|
38
52
|
- hooks/update-version
|
39
53
|
- k_type.gemspec
|
40
54
|
- lib/k_type.rb
|
55
|
+
- lib/k_type/composite.rb
|
41
56
|
- lib/k_type/layered_folders.rb
|
42
57
|
- lib/k_type/named_folders.rb
|
43
58
|
- lib/k_type/version.rb
|
@@ -63,7 +78,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
63
78
|
- !ruby/object:Gem::Version
|
64
79
|
version: '0'
|
65
80
|
requirements: []
|
66
|
-
rubygems_version: 3.2.
|
81
|
+
rubygems_version: 3.2.33
|
67
82
|
signing_key:
|
68
83
|
specification_version: 4
|
69
84
|
summary: K Type provides base types for KlueLess code generation
|