fern-form 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 54f6064e12a694034e7e4fd134b1b5949a0557215edb547ef13a9ecf2f1fbe2c
4
+ data.tar.gz: 3a37feb110c43d5c33b57c977db2c67b994f2e026640723cbf0e2a9017eebb06
5
+ SHA512:
6
+ metadata.gz: 96eff9379cb4702c194d5acdafb7df378987132f53c90218bff01a11779ea924f1f5fa76c04d840193bba1cfcf821e6e199ddf35fcf5be1271521fe095f6cc82
7
+ data.tar.gz: d7d48adc15738647fa36a1ccf6e6f4319fca59f075ee6a14017defe95f73b0d4e15a8de9d30ab2239181d1e189c5ddc663c4c893a0e982b86dddf5879f39a92d
data/lib/fern-form.rb ADDED
@@ -0,0 +1 @@
1
+ require 'fern/form'
data/lib/fern/form.rb ADDED
@@ -0,0 +1,34 @@
1
+ require 'fern/form/dsl'
2
+
3
+ module Fern
4
+ module Form
5
+ extend ActiveSupport::Concern
6
+ attr_reader :form
7
+
8
+ included do
9
+ before_action { build_form if fern[action_name.to_sym].key?(:form) }
10
+
11
+ def build_form
12
+ form = fern[action_name.to_sym][:form]
13
+
14
+ p = extract_params(params, form)
15
+ p = symbolize_keys(p)
16
+
17
+ @form = form[:klass].new(p)
18
+ end
19
+
20
+ def extract_params(params, form)
21
+ p = params
22
+
23
+ p = params[form[:key]] if form.key?(:key)
24
+ p = p.permit! if p.respond_to?(:permit!)
25
+
26
+ p
27
+ end
28
+
29
+ def symbolize_keys(form_params)
30
+ form_params&.to_hash&.deep_symbolize_keys
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,22 @@
1
+ require 'fern/api'
2
+
3
+ module Fern
4
+ module Form
5
+ module Dsl
6
+ def self.included(receiver)
7
+ receiver.extend(ClassMethods)
8
+ end
9
+
10
+ module ClassMethods
11
+ end
12
+ def form(klass, key = nil)
13
+ @controller.fern[@name][:form] = {
14
+ key: key,
15
+ klass: klass
16
+ }
17
+ end
18
+ end
19
+ end
20
+ end
21
+
22
+ Fern::Api::Endpoint.class_eval { include Fern::Form::Dsl }
@@ -0,0 +1,5 @@
1
+ module Fern
2
+ module Form
3
+ VERSION = '0.0.2'.freeze
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,147 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fern-form
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Kyle Kestell
8
+ - Ryan Andersen
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2017-03-11 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: minitest
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '5.0'
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '5.0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: rake
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '12.0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '12.0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: rubocop
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: 0.74.0
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: 0.74.0
56
+ - !ruby/object:Gem::Dependency
57
+ name: fern-api
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: actionpack
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '5.0'
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '5.0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: activesupport
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '5.0'
91
+ type: :runtime
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '5.0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: fern-api
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :runtime
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ description: Form support for Fern.
113
+ email:
114
+ - kyle@kestell.org
115
+ - itsryanandersen@gmail.com
116
+ executables: []
117
+ extensions: []
118
+ extra_rdoc_files: []
119
+ files:
120
+ - lib/fern-form.rb
121
+ - lib/fern/form.rb
122
+ - lib/fern/form/dsl.rb
123
+ - lib/fern/form/version.rb
124
+ homepage: https://github.com/fern-rb/fern-form
125
+ licenses:
126
+ - MIT
127
+ metadata: {}
128
+ post_install_message:
129
+ rdoc_options: []
130
+ require_paths:
131
+ - lib
132
+ required_ruby_version: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: 2.3.0
137
+ required_rubygems_version: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ requirements: []
143
+ rubygems_version: 3.0.6
144
+ signing_key:
145
+ specification_version: 4
146
+ summary: Fern Form
147
+ test_files: []