k_builder 0.0.16 → 0.0.19
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/k_builder.gemspec +2 -1
- data/lib/k_builder.rb +1 -0
- data/lib/k_builder/base_builder.rb +33 -26
- data/lib/k_builder/base_configuration.rb +106 -0
- data/lib/k_builder/builder.rb +4 -0
- data/lib/k_builder/configuration.rb +2 -13
- data/lib/k_builder/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f81ce6d464232f632884a2d3c1e04c180551644bf5ce9202a4a5d4a2e20d5c40
|
4
|
+
data.tar.gz: bdc67f51753f3b63944b88ad3f739ba4710bf0981190fd9d7b8ce69eea6493aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db0ac5f45c53b1a4d7d58e9acfd5bd106402039f1d28d81c998d3279f4b1177980817b284362cd272853735f02eb492a8d131cbcade21dacf707132269b84c75
|
7
|
+
data.tar.gz: 24ff7bfeefa7db10f9a028cbda7695f171a5d7d6095be2a23637a9d3e7e727323512962414d5236d6961d4864aa4aad3521770f33120f2df07740671878a9e70
|
data/k_builder.gemspec
CHANGED
@@ -39,5 +39,6 @@ Gem::Specification.new do |spec|
|
|
39
39
|
# spec.extensions = ['ext/k_builder/extconf.rb']
|
40
40
|
|
41
41
|
spec.add_dependency 'handlebars-helpers', '~> 0'
|
42
|
-
# spec.add_dependency
|
42
|
+
# spec.add_dependency "anyway_config" , ">= 2.0.0"
|
43
|
+
# spec.add_dependency "config" , ">= 3.0.0"
|
43
44
|
end
|
data/lib/k_builder.rb
CHANGED
@@ -70,35 +70,42 @@ module KBuilder
|
|
70
70
|
hash
|
71
71
|
end
|
72
72
|
|
73
|
-
#
|
74
|
-
#
|
75
|
-
#
|
76
|
-
#
|
77
|
-
#
|
78
|
-
#
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
73
|
+
# TODO
|
74
|
+
# Support Nesting
|
75
|
+
# Support Generation fo the following
|
76
|
+
# - fluent set_
|
77
|
+
# - Support setter (non-fluent)
|
78
|
+
# - Support getter (non-fluent)
|
79
|
+
|
80
|
+
# # builds a nested structure by either builder block or hash
|
81
|
+
# # @param data_structure [type=DataStructure]
|
82
|
+
# # @param builder [type=Builder]
|
83
|
+
# # @param attributes [type=Hash|DataStructure instance]
|
84
|
+
# # @param &block
|
85
|
+
# #
|
86
|
+
# # @return [type=Hash]
|
87
|
+
# def build_nested(data_structure, builder, attributes = {}, &block)
|
88
|
+
# if block_given?
|
89
|
+
# builder.build(&block).to_h
|
90
|
+
# else
|
91
|
+
# build_hash(data_structure, attributes)
|
92
|
+
# end
|
93
|
+
# end
|
87
94
|
|
88
95
|
private
|
89
96
|
|
90
|
-
#
|
91
|
-
# @param data_structure [type=DataStructure]
|
92
|
-
# @param attributes [type=Hash, DataStructure]
|
93
|
-
#
|
94
|
-
# @return [type=Hash]
|
95
|
-
def build_hash(data_structure, attributes)
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
end
|
97
|
+
# #
|
98
|
+
# # @param data_structure [type=DataStructure]
|
99
|
+
# # @param attributes [type=Hash, DataStructure]
|
100
|
+
# #
|
101
|
+
# # @return [type=Hash]
|
102
|
+
# def build_hash(data_structure, attributes)
|
103
|
+
# if attributes.is_a?(data_structure)
|
104
|
+
# attributes.to_h
|
105
|
+
# else
|
106
|
+
# data_structure.new(attributes).to_h
|
107
|
+
# end
|
108
|
+
# end
|
102
109
|
|
103
110
|
# Defines all of the necessary builder setter methods
|
104
111
|
#
|
@@ -0,0 +1,106 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module KBuilder
|
4
|
+
# Base configuration object for all k_builder* GEM
|
5
|
+
class BaseConfiguration
|
6
|
+
def to_hash
|
7
|
+
hash = {}
|
8
|
+
instance_variables.each { |var| hash[var.to_s.delete('@')] = instance_variable_get(var) }
|
9
|
+
hash
|
10
|
+
end
|
11
|
+
|
12
|
+
def kv(name, value)
|
13
|
+
puts "#{name.rjust(30)} : #{value}"
|
14
|
+
end
|
15
|
+
|
16
|
+
# All of this code should be extracted into a module
|
17
|
+
#
|
18
|
+
# The module should then be extracted out into a GEM so that
|
19
|
+
# I can include it as needed. The GEM might be called
|
20
|
+
# (dynamic attributes) and would allow a regular class to act like an OpenStruct
|
21
|
+
# K-DSL uses data hash, while base configuration uses instance variables
|
22
|
+
|
23
|
+
def respond_to_missing?(name, *_args, &_block)
|
24
|
+
# puts 'respond_to_missing?'
|
25
|
+
# puts "respond_to_missing: #{name}"
|
26
|
+
n = name.to_s
|
27
|
+
n = n[0..-2] if n.end_with?('=')
|
28
|
+
|
29
|
+
if n.end_with?('?')
|
30
|
+
super
|
31
|
+
else
|
32
|
+
# This has not been fully tested
|
33
|
+
instance_variable_defined?("@#{n}") || super
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def method_missing(name, *args, &_block)
|
38
|
+
# puts "method_missing: #{name}"
|
39
|
+
# puts "args.length : #{args.length}"
|
40
|
+
|
41
|
+
add_getter_or_param_method(name)
|
42
|
+
add_setter_method(name)
|
43
|
+
|
44
|
+
send(name, args[0]) if args.length == 1 # name.end_with?('=')
|
45
|
+
|
46
|
+
super unless self.class.method_defined?(name)
|
47
|
+
end
|
48
|
+
|
49
|
+
# Handles Getter method and method with single parameter
|
50
|
+
# object.my_name
|
51
|
+
# object.my_name('david')
|
52
|
+
def add_getter_or_param_method(name)
|
53
|
+
# L.progress(1, 'add_getter_or_param_method')
|
54
|
+
self.class.class_eval do
|
55
|
+
# L.progress(2, 'add_getter_or_param_method')
|
56
|
+
name = name.to_s.gsub(/=$/, '')
|
57
|
+
# L.progress(3, 'add_getter_or_param_method')
|
58
|
+
# L.kv 'name', name
|
59
|
+
define_method(name) do |*args|
|
60
|
+
# L.progress(4, 'add_getter_or_param_method')
|
61
|
+
# L.kv 'add_getter_or_param_method', name
|
62
|
+
raise KBuilder::Error, 'Multiple setting values is not supported' if args.length > 1
|
63
|
+
|
64
|
+
if args.length.zero?
|
65
|
+
get_value(name)
|
66
|
+
else
|
67
|
+
send("#{name}=", args[0])
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
# Handles Setter method
|
74
|
+
# object.my_name = 'david'
|
75
|
+
def add_setter_method(name)
|
76
|
+
# L.progress(1, 'add_setter_method')
|
77
|
+
self.class.class_eval do
|
78
|
+
# L.progress(2, 'add_setter_method')
|
79
|
+
name = name.to_s.gsub(/=$/, '')
|
80
|
+
# L.progress(3, 'add_setter_method')
|
81
|
+
# L.kv 'add_setter_method', name
|
82
|
+
define_method("#{name}=") do |value|
|
83
|
+
# L.progress(4, 'add_setter_method')
|
84
|
+
# L.kv 'name', name
|
85
|
+
# L.kv 'value', value
|
86
|
+
instance_variable_set("@#{name}", value)
|
87
|
+
# my_data[name.to_s] = value
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def get_value(name)
|
93
|
+
instance_variable_get("@#{name}")
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
# class L
|
98
|
+
# def self.progress(index, label)
|
99
|
+
# puts "#{index} - #{label}"
|
100
|
+
# end
|
101
|
+
|
102
|
+
# def self.kv(name, value)
|
103
|
+
# puts "#{name.rjust(30)} : #{value}"
|
104
|
+
# end
|
105
|
+
# end
|
106
|
+
end
|
data/lib/k_builder/builder.rb
CHANGED
@@ -105,11 +105,13 @@ module KBuilder
|
|
105
105
|
end
|
106
106
|
|
107
107
|
# Setter for template folder
|
108
|
+
# Refactor: Make Private
|
108
109
|
def template_folder=(value)
|
109
110
|
hash['template_folder'] = File.expand_path(value)
|
110
111
|
end
|
111
112
|
|
112
113
|
# Getter for template folder
|
114
|
+
# Refactor: generate
|
113
115
|
def template_folder
|
114
116
|
hash['template_folder']
|
115
117
|
end
|
@@ -125,11 +127,13 @@ module KBuilder
|
|
125
127
|
end
|
126
128
|
|
127
129
|
# Setter for global template folder
|
130
|
+
# Refactor: Make Private
|
128
131
|
def global_template_folder=(value)
|
129
132
|
hash['global_template_folder'] = File.expand_path(value)
|
130
133
|
end
|
131
134
|
|
132
135
|
# Setter for global template folder
|
136
|
+
# Refactor: generate
|
133
137
|
def global_template_folder
|
134
138
|
hash['global_template_folder']
|
135
139
|
end
|
@@ -20,12 +20,13 @@ module KBuilder
|
|
20
20
|
end
|
21
21
|
|
22
22
|
# Configuration class
|
23
|
-
class Configuration
|
23
|
+
class Configuration < BaseConfiguration
|
24
24
|
attr_accessor :target_folder
|
25
25
|
attr_accessor :template_folder
|
26
26
|
attr_accessor :global_template_folder
|
27
27
|
|
28
28
|
def initialize
|
29
|
+
super
|
29
30
|
@target_folder = Dir.getwd
|
30
31
|
@template_folder = File.join(Dir.getwd, '.templates')
|
31
32
|
@global_template_folder = nil
|
@@ -38,17 +39,5 @@ module KBuilder
|
|
38
39
|
kv 'template_folder' , template_folder
|
39
40
|
kv 'global_template_folder', global_template_folder
|
40
41
|
end
|
41
|
-
|
42
|
-
def to_hash
|
43
|
-
hash = {}
|
44
|
-
instance_variables.each { |var| hash[var.to_s.delete('@')] = instance_variable_get(var) }
|
45
|
-
hash
|
46
|
-
end
|
47
|
-
|
48
|
-
private
|
49
|
-
|
50
|
-
def kv(name, value)
|
51
|
-
puts "#{name.rjust(30)} : #{value}"
|
52
|
-
end
|
53
42
|
end
|
54
43
|
end
|
data/lib/k_builder/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: k_builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.19
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Cruwys
|
@@ -54,6 +54,7 @@ files:
|
|
54
54
|
- k_builder.gemspec
|
55
55
|
- lib/k_builder.rb
|
56
56
|
- lib/k_builder/base_builder.rb
|
57
|
+
- lib/k_builder/base_configuration.rb
|
57
58
|
- lib/k_builder/builder.rb
|
58
59
|
- lib/k_builder/configuration.rb
|
59
60
|
- lib/k_builder/version.rb
|