mixiner 0.1.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 +7 -0
- data/lib/mixiner.rb +56 -0
- metadata +73 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d0b2caa890502462d975ea5a7fa97513712afdc4
|
4
|
+
data.tar.gz: 6e786bfee393e1d075324c2034f21e6dc6f73787
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ac933f632339a9f29f3c8b19e7bfb08b4f15074a58920faa851265465fa5c785c47bd608801a761cc87c65fe225865570982c9ed26f9e6881159bbdf18b6ecd5
|
7
|
+
data.tar.gz: 8f64feed88c62a0ce6aab698c3f45157a645f14f2d64c2b2d8482a8eac48773a59c059265f29d426c4f4f35a375534766982a0fe2a1b36dccd75bb8a34a38a77
|
data/lib/mixiner.rb
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
# Make easy to create mixin modules to group together related methods.
|
2
|
+
#
|
3
|
+
# As those methods are not defined directly on the class those can be redefined
|
4
|
+
# afterwards.
|
5
|
+
#
|
6
|
+
# @example
|
7
|
+
# class Settings
|
8
|
+
# # make the mixin method available
|
9
|
+
# include Mixiner
|
10
|
+
#
|
11
|
+
# def initialize
|
12
|
+
# @properties = {}
|
13
|
+
# end
|
14
|
+
#
|
15
|
+
# def property name, type
|
16
|
+
# # define the methods in the mixin
|
17
|
+
# mixin('Properties').define_method name do
|
18
|
+
# @properties[name]
|
19
|
+
# end
|
20
|
+
#
|
21
|
+
# mixin('Properties').define_method "#{ name }=" do |value|
|
22
|
+
# @properties[name] = value if value.kind_of? type
|
23
|
+
# end
|
24
|
+
# end
|
25
|
+
#
|
26
|
+
# property limit, Integer
|
27
|
+
# property name, String
|
28
|
+
#
|
29
|
+
# # overwrite the name writter with custom logic
|
30
|
+
# def name= value
|
31
|
+
# super value.capitalize
|
32
|
+
# end
|
33
|
+
#
|
34
|
+
# end
|
35
|
+
module Mixiner
|
36
|
+
|
37
|
+
# Initialize or retrieve a mixin module for the given subject
|
38
|
+
#
|
39
|
+
# Create a mixin module to group a set of related methods making sure that
|
40
|
+
# `define_method` is public so it is easier to add methods there.
|
41
|
+
#
|
42
|
+
# The module is defined just once and is included in the base class to make
|
43
|
+
# those methods accessible.
|
44
|
+
def mixin subject
|
45
|
+
if self.const_defined? subject, false
|
46
|
+
self.const_get subject
|
47
|
+
else
|
48
|
+
mod = Module.new do
|
49
|
+
public_class_method :define_method
|
50
|
+
end
|
51
|
+
self.const_set subject, mod
|
52
|
+
self.include mod
|
53
|
+
mod
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
metadata
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mixiner
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Eloy Espinaco
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-05-10 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: cutest
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: yard
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description:
|
42
|
+
email: eloyesp@gmail.com
|
43
|
+
executables: []
|
44
|
+
extensions: []
|
45
|
+
extra_rdoc_files: []
|
46
|
+
files:
|
47
|
+
- lib/mixiner.rb
|
48
|
+
homepage: https://rubygems.org/gems/mixiner
|
49
|
+
licenses:
|
50
|
+
- GPL-3.0+
|
51
|
+
metadata: {}
|
52
|
+
post_install_message:
|
53
|
+
rdoc_options: []
|
54
|
+
require_paths:
|
55
|
+
- lib
|
56
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
61
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
requirements: []
|
67
|
+
rubyforge_project:
|
68
|
+
rubygems_version: 2.2.2
|
69
|
+
signing_key:
|
70
|
+
specification_version: 4
|
71
|
+
summary: Help you put methods in a mixin
|
72
|
+
test_files: []
|
73
|
+
has_rdoc:
|