refinement_builder 1.0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 876cdf993f77dcc65626e8f9930ba615a0bf31c2
4
+ data.tar.gz: d3a5a108063281d9ccb878acd27fb6320a7d93b1
5
+ SHA512:
6
+ metadata.gz: 2ab3470f5365c2083a41dd5773fa99ba7d1cb7353f0d683c511a336c0694cb26496d16637cbea29249de6a368a997cd6a213b355df16779512ec1c373d287026
7
+ data.tar.gz: 7c220b5c2abd1ba9f9f7d1458d3e46f9313e7c0c9310a252382acd4d3a37b2f318893f832706aae86af16738de36ef3cf0c54e0b25e358a31b8d98b6e8b5280c
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+ require 'refinement_builder'
3
+ class RefinementBuilder::CLI < Thor
4
+ desc "test", "run tests"
5
+ def test
6
+ puts "No tests have been wrritten"
7
+ exit
8
+ end
9
+ end
10
+ RefinementBuilder::CLI.start ARGV
@@ -0,0 +1,33 @@
1
+ module RefinementBuilder
2
+
3
+ def build_refinement(class_name, namespace: Object, refines: Object, &blk)
4
+ const = namespace.const_set class_name, Module.new(&blk)
5
+ const.instance_methods(false).each do |method_name|
6
+ orig_method = const.instance_method method_name
7
+ const.send :define_method, method_name do |*args, **keywords, &blk|
8
+ if eql?(const)
9
+ if keywords.empty?
10
+ orig_method.bind(const).call *args, &blk
11
+ else
12
+ orig_method.bind(const).call *args, **keywords, &blk
13
+ end
14
+ else
15
+ if keywords.empty?
16
+ const.send method_name, *args, &blk
17
+ else
18
+ const.send method_name, *args, **keywords, &blk
19
+ end
20
+ end
21
+ end
22
+ const.send :module_function, method_name
23
+ const.send(:refine, refines) { include const }
24
+ end
25
+ end
26
+
27
+ module_function :build_refinement
28
+
29
+ refine Object do
30
+ include CoreExt::RefinementBuilder
31
+ end
32
+
33
+ end
data/lib/version.rb ADDED
@@ -0,0 +1,3 @@
1
+ module RefinementBuilder
2
+ VERSION = '1.0.0'
3
+ end
metadata ADDED
@@ -0,0 +1,61 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: refinement_builder
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - max pleaner
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-11-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: gemmyrb
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: ''
28
+ email: maxpleaner@gmail.com
29
+ executables:
30
+ - refinement_builder
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - bin/refinement_builder
35
+ - lib/refinement_builder.rb
36
+ - lib/version.rb
37
+ homepage: http://github.com/maxpleaner/refinement_builder
38
+ licenses:
39
+ - MIT
40
+ metadata: {}
41
+ post_install_message:
42
+ rdoc_options: []
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '2.3'
50
+ required_rubygems_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 2.5.1
55
+ requirements: []
56
+ rubyforge_project:
57
+ rubygems_version: 2.5.1
58
+ signing_key:
59
+ specification_version: 4
60
+ summary: refinement builder class/dsl
61
+ test_files: []