goaltender 0.0.2 → 0.0.3
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/goaltender-0.0.1.gem +0 -0
- data/lib/goaltender/base.rb +72 -74
- data/lib/goaltender/base_module.rb +23 -0
- data/lib/goaltender/input.rb +2 -2
- data/lib/goaltender/value_parser/date.rb +1 -1
- data/lib/goaltender/value_parser.rb +9 -0
- data/lib/goaltender/version.rb +1 -1
- data/lib/goaltender.rb +6 -22
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 04e9a394f95b65ed94175af20c9d06f09c12e65b
|
4
|
+
data.tar.gz: 6f71d0fe681e1451c7c91eefc253cfb4d7de83c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64815ae11f3e5757035297c2b612056afdf54b17a4c70cb895f2f68ab62b25d3229b0bd8e0188e32055f6939b383b0d1404ed79af558bc146479bfd8e23e6b43
|
7
|
+
data.tar.gz: e7bf2d1441bf6df976ed0172c1b7f6aced4fb31f5b4e98decd704bbc3d5c5a711300fb49915b79d4ec0c3900bff141e43186e4b52ddfb605c7ef6453a7af1ec5
|
Binary file
|
data/lib/goaltender/base.rb
CHANGED
@@ -1,95 +1,93 @@
|
|
1
|
-
|
2
|
-
class Base
|
1
|
+
class Goaltender::Base
|
3
2
|
|
4
|
-
|
5
|
-
|
3
|
+
include ActiveModel::Model
|
4
|
+
include Goaltender::BaseModule
|
6
5
|
|
7
|
-
|
8
|
-
|
6
|
+
attr_reader :params, :inputs
|
7
|
+
attr_accessor :inputs
|
9
8
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
9
|
+
def initialize(args)
|
10
|
+
@params = HashWithIndifferentAccess.new(args)
|
11
|
+
@inputs = set_inputs
|
12
|
+
after_init(@params)
|
13
|
+
end
|
15
14
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
end
|
22
|
-
hash
|
15
|
+
def to_h
|
16
|
+
hash = {}
|
17
|
+
inputs.each do |input|
|
18
|
+
value = instance_variable_get("@#{input.variable_name}")
|
19
|
+
hash[input.variable_name] = value
|
23
20
|
end
|
21
|
+
hash
|
22
|
+
end
|
24
23
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
end
|
24
|
+
def save
|
25
|
+
before_save
|
26
|
+
success = valid_form? ? persist! : false
|
27
|
+
if success
|
28
|
+
after_save
|
29
|
+
true
|
30
|
+
else
|
31
|
+
false
|
34
32
|
end
|
33
|
+
end
|
35
34
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
35
|
+
private
|
36
|
+
|
37
|
+
def set_inputs
|
38
|
+
current_class_name = self.class.name
|
39
|
+
relevant_classes = [current_class_name]
|
40
|
+
classes = current_class_name.split("::")
|
41
|
+
while classes.present?
|
42
|
+
classes.pop
|
43
|
+
possibility = classes.join("::")
|
44
|
+
relevant_classes << possibility unless possibility.exclude?("::")
|
45
|
+
current_class_name = possibility
|
46
|
+
end
|
48
47
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
end
|
48
|
+
all_inputs = []
|
49
|
+
Goaltender::Base.input_definitions.each do |class_name, form_inputs|
|
50
|
+
if relevant_classes.include?(class_name)
|
51
|
+
form_inputs.each do |form_input|
|
52
|
+
name = form_input[0]
|
53
|
+
type = form_input[1]
|
54
|
+
options = form_input[2]
|
55
|
+
input_value = params[name]
|
56
|
+
input = Goaltender::Input.new(self, name, type, input_value, options)
|
57
|
+
self.class.__send__(:attr_accessor, input.variable_name)
|
58
|
+
instance_variable_set("@#{input.variable_name.to_s}", input.parsed_value)
|
59
|
+
all_inputs << input
|
62
60
|
end
|
63
61
|
end
|
64
|
-
all_inputs
|
65
62
|
end
|
63
|
+
all_inputs
|
64
|
+
end
|
66
65
|
|
67
|
-
|
68
|
-
|
69
|
-
|
66
|
+
def valid_form?
|
67
|
+
valid? && object.valid?
|
68
|
+
end
|
70
69
|
|
71
|
-
|
72
|
-
|
73
|
-
|
70
|
+
def persist!
|
71
|
+
object.save
|
72
|
+
end
|
74
73
|
|
75
|
-
|
74
|
+
# METHODS FOR CHILDREN
|
76
75
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
76
|
+
def after_init(args)
|
77
|
+
# this method is optionally implemented by children to
|
78
|
+
# override default initialization behavior
|
79
|
+
end
|
81
80
|
|
82
|
-
|
83
|
-
|
84
|
-
|
81
|
+
def object
|
82
|
+
# optionally implemented by children
|
83
|
+
end
|
85
84
|
|
86
|
-
|
87
|
-
|
88
|
-
|
85
|
+
def after_save
|
86
|
+
# optionally implemented by children
|
87
|
+
end
|
89
88
|
|
90
|
-
|
91
|
-
|
92
|
-
|
89
|
+
def before_save
|
90
|
+
# optionally implemented by children
|
91
|
+
end
|
93
92
|
|
94
|
-
end
|
95
93
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Goaltender
|
2
|
+
module BaseModule
|
3
|
+
|
4
|
+
class << self
|
5
|
+
def included(base)
|
6
|
+
base.extend ClassMethods
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
module ClassMethods
|
11
|
+
def input(name, type = nil, options = {})
|
12
|
+
@@input_definitions ||= {}
|
13
|
+
array = @@input_definitions[self.name].present? ? @@input_definitions[self.name] : []
|
14
|
+
array << [name, type, options]
|
15
|
+
@@input_definitions[self.name] = array
|
16
|
+
end
|
17
|
+
|
18
|
+
def input_definitions
|
19
|
+
@@input_definitions
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/goaltender/input.rb
CHANGED
@@ -12,11 +12,11 @@ module Goaltender
|
|
12
12
|
@parse_format = options[:parse_format]
|
13
13
|
@form_path = options[:form_path]
|
14
14
|
@form_class = generate_form_class
|
15
|
-
@variable_name = @name
|
15
|
+
@variable_name = options[:variable_name] || @name
|
16
16
|
end
|
17
17
|
|
18
18
|
def value_parser
|
19
|
-
@value_parser ||= "
|
19
|
+
@value_parser ||= "FormParse::ValueParser::#{type.to_s.classify}".constantize.new({
|
20
20
|
input_value: input_value,
|
21
21
|
parse_format: parse_format,
|
22
22
|
form_class: form_class,
|
@@ -1,3 +1,12 @@
|
|
1
|
+
require 'goaltender/value_parser/belongs_to'
|
2
|
+
require 'goaltender/value_parser/boolean'
|
3
|
+
require 'goaltender/value_parser/date'
|
4
|
+
require 'goaltender/value_parser/datetime'
|
5
|
+
require 'goaltender/value_parser/float'
|
6
|
+
require 'goaltender/value_parser/has_many'
|
7
|
+
require 'goaltender/value_parser/integer'
|
8
|
+
require 'goaltender/value_parser/string'
|
9
|
+
|
1
10
|
module Goaltender
|
2
11
|
class ValueParser
|
3
12
|
|
data/lib/goaltender/version.rb
CHANGED
data/lib/goaltender.rb
CHANGED
@@ -1,25 +1,9 @@
|
|
1
|
-
require "goaltender/version"
|
2
|
-
require 'goaltender/base'
|
3
|
-
|
4
1
|
module Goaltender
|
5
2
|
|
6
|
-
class << self
|
7
|
-
def included(base)
|
8
|
-
base.extend ClassMethods
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
module ClassMethods
|
13
|
-
def input(name, type = nil, options = {})
|
14
|
-
@@input_definitions ||= {}
|
15
|
-
array = @@input_definitions[self.name].present? ? @@input_definitions[self.name] : []
|
16
|
-
array << [name, type, options]
|
17
|
-
@@input_definitions[self.name] = array
|
18
|
-
end
|
19
|
-
|
20
|
-
def input_definitions
|
21
|
-
@@input_definitions
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
3
|
end
|
4
|
+
|
5
|
+
require "goaltender/version"
|
6
|
+
require "goaltender/base_module"
|
7
|
+
require 'goaltender/value_parser'
|
8
|
+
require 'goaltender/input'
|
9
|
+
require 'goaltender/base'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: goaltender
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Francis
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-08-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -54,9 +54,11 @@ files:
|
|
54
54
|
- Rakefile
|
55
55
|
- bin/console
|
56
56
|
- bin/setup
|
57
|
+
- goaltender-0.0.1.gem
|
57
58
|
- goaltender.gemspec
|
58
59
|
- lib/goaltender.rb
|
59
60
|
- lib/goaltender/base.rb
|
61
|
+
- lib/goaltender/base_module.rb
|
60
62
|
- lib/goaltender/input.rb
|
61
63
|
- lib/goaltender/value_parser.rb
|
62
64
|
- lib/goaltender/value_parser/belongs_to.rb
|
@@ -89,7 +91,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
89
91
|
version: '0'
|
90
92
|
requirements: []
|
91
93
|
rubyforge_project:
|
92
|
-
rubygems_version: 2.
|
94
|
+
rubygems_version: 2.4.8
|
93
95
|
signing_key:
|
94
96
|
specification_version: 4
|
95
97
|
summary: Rails form parser
|