magicka 0.4.0 → 0.5.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/.circleci/config.yml +19 -5
- data/README.md +1 -1
- data/config/check_specs.yml +2 -0
- data/lib/magicka.rb +8 -8
- data/lib/magicka/aggregator.rb +19 -0
- data/lib/magicka/aggregator/method_builder.rb +40 -0
- data/lib/magicka/element.rb +2 -1
- data/lib/magicka/element/method_builder.rb +40 -0
- data/lib/magicka/form.rb +3 -8
- data/lib/magicka/version.rb +1 -1
- data/spec/lib/magicka/{method_builder_spec.rb → element/method_builder_spec.rb} +1 -1
- data/spec/lib/magicka/form_spec.rb +38 -4
- metadata +5 -3
- data/lib/magicka/method_builder.rb +0 -38
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 05ffde0ed491999459ac688704b00c0ce07e2c93ae89aaa75f78a1c6b8acabba
|
4
|
+
data.tar.gz: 6d08209c27862a6791917a32e322775bfc801a00dcb666924d7b0b387c92f03b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d2aa6d343fe5104e275dc9257fb838c650f0353406452b217fb17f40978ea4152838c56181300bec3f1da208f28764790e947619f5137426545206c540e5952
|
7
|
+
data.tar.gz: 91036aeff9fbefe61eacc3b93005e8f51e9c6cf86ce7cb618e5360ea8059c7ba6df680c4bd5cebf9c57cb3a8154058b63aa1aeb1c362261b4613e4707cf41ca0
|
data/.circleci/config.yml
CHANGED
@@ -7,8 +7,12 @@ workflows:
|
|
7
7
|
filters:
|
8
8
|
tags:
|
9
9
|
only: /.*/
|
10
|
+
- checks:
|
11
|
+
filters:
|
12
|
+
tags:
|
13
|
+
only: /.*/
|
10
14
|
- build-and-release:
|
11
|
-
requires: [test]
|
15
|
+
requires: [test, checks]
|
12
16
|
filters:
|
13
17
|
tags:
|
14
18
|
only: /\d+\.\d+\.\d+/
|
@@ -18,7 +22,7 @@ workflows:
|
|
18
22
|
jobs:
|
19
23
|
test:
|
20
24
|
docker:
|
21
|
-
- image: darthjee/circleci_rails_gems:0.
|
25
|
+
- image: darthjee/circleci_rails_gems:0.6.0
|
22
26
|
environment:
|
23
27
|
PROJECT: magicka
|
24
28
|
steps:
|
@@ -32,12 +36,22 @@ jobs:
|
|
32
36
|
- run:
|
33
37
|
name: RSpec
|
34
38
|
command: bundle exec rspec
|
35
|
-
- run:
|
36
|
-
name: Rubocop
|
37
|
-
command: rubocop
|
38
39
|
- run:
|
39
40
|
name: Coverage Test Report
|
40
41
|
command: cc-test-reporter after-build --exit-code $?
|
42
|
+
checks:
|
43
|
+
docker:
|
44
|
+
- image: darthjee/circleci_rails_gems:0.6.0
|
45
|
+
environment:
|
46
|
+
PROJECT: magicka
|
47
|
+
steps:
|
48
|
+
- checkout
|
49
|
+
- run:
|
50
|
+
name: Bundle Install
|
51
|
+
command: bundle install
|
52
|
+
- run:
|
53
|
+
name: Rubocop
|
54
|
+
command: rubocop
|
41
55
|
- run:
|
42
56
|
name: Yardstick coverage check
|
43
57
|
command: bundle exec rake verify_measurements
|
data/README.md
CHANGED
@@ -11,7 +11,7 @@ Magicka
|
|
11
11
|
|
12
12
|
Yard Documentation
|
13
13
|
-------------------
|
14
|
-
[https://www.rubydoc.info/gems/magicka/0.
|
14
|
+
[https://www.rubydoc.info/gems/magicka/0.5.0](https://www.rubydoc.info/gems/magicka/0.5.0)
|
15
15
|
|
16
16
|
Installation
|
17
17
|
---------------
|
data/config/check_specs.yml
CHANGED
data/lib/magicka.rb
CHANGED
@@ -10,12 +10,12 @@ require 'sinclair'
|
|
10
10
|
#
|
11
11
|
# module holding herlper to render inputs
|
12
12
|
module Magicka
|
13
|
-
autoload :VERSION,
|
14
|
-
autoload :
|
15
|
-
autoload :
|
16
|
-
autoload :
|
17
|
-
autoload :
|
18
|
-
autoload :
|
19
|
-
autoload :
|
20
|
-
autoload :Select,
|
13
|
+
autoload :VERSION, 'magicka/version'
|
14
|
+
autoload :Aggregator, 'magicka/aggregator'
|
15
|
+
autoload :Button, 'magicka/button'
|
16
|
+
autoload :Element, 'magicka/element'
|
17
|
+
autoload :FormElement, 'magicka/form_element'
|
18
|
+
autoload :Form, 'magicka/form'
|
19
|
+
autoload :Input, 'magicka/input'
|
20
|
+
autoload :Select, 'magicka/select'
|
21
21
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Magicka
|
4
|
+
# @api public
|
5
|
+
#
|
6
|
+
# Class representing an element agregator, representing a model
|
7
|
+
class Aggregator
|
8
|
+
autoload :MethodBuilder, 'magicka/aggregator/method_builder'
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def with_element(element_class, method_name = nil)
|
12
|
+
MethodBuilder
|
13
|
+
.new(self, element_class, method_name)
|
14
|
+
.prepare
|
15
|
+
.build
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Magicka
|
4
|
+
class Aggregator
|
5
|
+
# @api private
|
6
|
+
#
|
7
|
+
# Class responsible for building an {Aggregator} method
|
8
|
+
class MethodBuilder < Sinclair
|
9
|
+
def initialize(klass, element_class, method_name = nil)
|
10
|
+
super(klass)
|
11
|
+
|
12
|
+
@element_class = element_class
|
13
|
+
@method_name = method_name
|
14
|
+
end
|
15
|
+
|
16
|
+
def prepare
|
17
|
+
element_klass = element_class
|
18
|
+
|
19
|
+
add_method(method_name) do |field, model: self.model, **args|
|
20
|
+
element_klass.render(
|
21
|
+
renderer: renderer, field: field, model: model, **args
|
22
|
+
)
|
23
|
+
end
|
24
|
+
|
25
|
+
self
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
attr_reader :element_class
|
31
|
+
|
32
|
+
def method_name
|
33
|
+
@method_name ||= element_class
|
34
|
+
.name
|
35
|
+
.underscore
|
36
|
+
.gsub(%r{.*/}, '')
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/lib/magicka/element.rb
CHANGED
@@ -5,7 +5,8 @@ module Magicka
|
|
5
5
|
#
|
6
6
|
# Base class for element rendering
|
7
7
|
class Element < Sinclair::Options
|
8
|
-
autoload :ClassMethods,
|
8
|
+
autoload :ClassMethods, 'magicka/element/class_methods'
|
9
|
+
autoload :MethodBuilder, 'magicka/element/method_builder'
|
9
10
|
|
10
11
|
skip_validation
|
11
12
|
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Magicka
|
4
|
+
class Element
|
5
|
+
# @api private
|
6
|
+
#
|
7
|
+
# class responsible for building methods on {Magicka::Element}
|
8
|
+
class MethodBuilder < Sinclair
|
9
|
+
# adds a mehtod +#template+
|
10
|
+
#
|
11
|
+
# The method will always return the template given in the params
|
12
|
+
#
|
13
|
+
# @param template [String] path to template file
|
14
|
+
#
|
15
|
+
# @return [Array<Sinclair::MethodDefinition>]
|
16
|
+
def add_template(template)
|
17
|
+
add_method(:template) do
|
18
|
+
template
|
19
|
+
end
|
20
|
+
|
21
|
+
build
|
22
|
+
end
|
23
|
+
|
24
|
+
# adds a mehtod +#template_folder+
|
25
|
+
#
|
26
|
+
# The method will always return the template folder given in the params
|
27
|
+
#
|
28
|
+
# @param template_folder [String] path to template folder
|
29
|
+
#
|
30
|
+
# @return [Array<Sinclair::MethodDefinition>]
|
31
|
+
def add_template_folder(folder)
|
32
|
+
add_method(:template_folder) do
|
33
|
+
folder
|
34
|
+
end
|
35
|
+
|
36
|
+
build
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/lib/magicka/form.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module Magicka
|
4
4
|
# Class responsible for controlling one object form
|
5
|
-
class Form
|
5
|
+
class Form < Aggregator
|
6
6
|
attr_reader :model
|
7
7
|
|
8
8
|
def initialize(renderer, model)
|
@@ -10,13 +10,8 @@ module Magicka
|
|
10
10
|
@model = model
|
11
11
|
end
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
end
|
16
|
-
|
17
|
-
def select(field, model: self.model, **args)
|
18
|
-
Select.render(renderer: renderer, field: field, model: model, **args)
|
19
|
-
end
|
13
|
+
with_element(Input)
|
14
|
+
with_element(Select)
|
20
15
|
|
21
16
|
def button(**args)
|
22
17
|
Button.render(renderer: renderer, **args)
|
data/lib/magicka/version.rb
CHANGED
@@ -35,8 +35,7 @@ describe Magicka::Form do
|
|
35
35
|
let(:arguments) do
|
36
36
|
{
|
37
37
|
label: label,
|
38
|
-
placeholder: placeholder
|
39
|
-
model: model
|
38
|
+
placeholder: placeholder
|
40
39
|
}
|
41
40
|
end
|
42
41
|
|
@@ -45,6 +44,24 @@ describe Magicka::Form do
|
|
45
44
|
|
46
45
|
expect(renderer).to have_received(:render)
|
47
46
|
end
|
47
|
+
|
48
|
+
context 'when passing a custom model' do
|
49
|
+
let(:locals) do
|
50
|
+
{
|
51
|
+
field: field,
|
52
|
+
label: label,
|
53
|
+
ng_errors: 'my_custom_model.errors.field',
|
54
|
+
ng_model: 'my_custom_model.field',
|
55
|
+
placeholder: placeholder
|
56
|
+
}
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'renders an input' do
|
60
|
+
form.input(field, model: 'my_custom_model', **arguments)
|
61
|
+
|
62
|
+
expect(renderer).to have_received(:render)
|
63
|
+
end
|
64
|
+
end
|
48
65
|
end
|
49
66
|
|
50
67
|
describe '#select' do
|
@@ -66,16 +83,33 @@ describe Magicka::Form do
|
|
66
83
|
let(:arguments) do
|
67
84
|
{
|
68
85
|
label: label,
|
69
|
-
model: model,
|
70
86
|
options: options
|
71
87
|
}
|
72
88
|
end
|
73
89
|
|
74
|
-
it 'renders
|
90
|
+
it 'renders a select' do
|
75
91
|
form.select(field, arguments)
|
76
92
|
|
77
93
|
expect(renderer).to have_received(:render)
|
78
94
|
end
|
95
|
+
|
96
|
+
context 'when passing a custom model' do
|
97
|
+
let(:locals) do
|
98
|
+
{
|
99
|
+
field: field,
|
100
|
+
label: label,
|
101
|
+
ng_errors: 'my_custom_model.errors.field',
|
102
|
+
ng_model: 'my_custom_model.field',
|
103
|
+
options: options
|
104
|
+
}
|
105
|
+
end
|
106
|
+
|
107
|
+
it 'renders a select' do
|
108
|
+
form.select(field, model: 'my_custom_model', **arguments)
|
109
|
+
|
110
|
+
expect(renderer).to have_received(:render)
|
111
|
+
end
|
112
|
+
end
|
79
113
|
end
|
80
114
|
|
81
115
|
describe '#button' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: magicka
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- DarthJee
|
@@ -397,13 +397,15 @@ files:
|
|
397
397
|
- config/yardstick.yml
|
398
398
|
- docker-compose.yml
|
399
399
|
- lib/magicka.rb
|
400
|
+
- lib/magicka/aggregator.rb
|
401
|
+
- lib/magicka/aggregator/method_builder.rb
|
400
402
|
- lib/magicka/button.rb
|
401
403
|
- lib/magicka/element.rb
|
402
404
|
- lib/magicka/element/class_methods.rb
|
405
|
+
- lib/magicka/element/method_builder.rb
|
403
406
|
- lib/magicka/form.rb
|
404
407
|
- lib/magicka/form_element.rb
|
405
408
|
- lib/magicka/input.rb
|
406
|
-
- lib/magicka/method_builder.rb
|
407
409
|
- lib/magicka/select.rb
|
408
410
|
- lib/magicka/version.rb
|
409
411
|
- magicka.gemspec
|
@@ -471,11 +473,11 @@ files:
|
|
471
473
|
- spec/integration/yard/.keep
|
472
474
|
- spec/lib/magicka/button_spec.rb
|
473
475
|
- spec/lib/magicka/element/class_methods_spec.rb
|
476
|
+
- spec/lib/magicka/element/method_builder_spec.rb
|
474
477
|
- spec/lib/magicka/element_spec.rb
|
475
478
|
- spec/lib/magicka/form_element_spec.rb
|
476
479
|
- spec/lib/magicka/form_spec.rb
|
477
480
|
- spec/lib/magicka/input_spec.rb
|
478
|
-
- spec/lib/magicka/method_builder_spec.rb
|
479
481
|
- spec/lib/magicka/select_spec.rb
|
480
482
|
- spec/spec_helper.rb
|
481
483
|
- spec/support/models/.keep
|
@@ -1,38 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Magicka
|
4
|
-
# @api private
|
5
|
-
#
|
6
|
-
# class responsible for building methods on {Magicka::Element}
|
7
|
-
class MethodBuilder < Sinclair
|
8
|
-
# adds a mehtod +#template+
|
9
|
-
#
|
10
|
-
# The method will always return the template given in the params
|
11
|
-
#
|
12
|
-
# @param template [String] path to template file
|
13
|
-
#
|
14
|
-
# @return [Array<Sinclair::MethodDefinition>]
|
15
|
-
def add_template(template)
|
16
|
-
add_method(:template) do
|
17
|
-
template
|
18
|
-
end
|
19
|
-
|
20
|
-
build
|
21
|
-
end
|
22
|
-
|
23
|
-
# adds a mehtod +#template_folder+
|
24
|
-
#
|
25
|
-
# The method will always return the template folder given in the params
|
26
|
-
#
|
27
|
-
# @param template_folder [String] path to template folder
|
28
|
-
#
|
29
|
-
# @return [Array<Sinclair::MethodDefinition>]
|
30
|
-
def add_template_folder(folder)
|
31
|
-
add_method(:template_folder) do
|
32
|
-
folder
|
33
|
-
end
|
34
|
-
|
35
|
-
build
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|