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
         |