just_include 0.5.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5bb531492e160e40e8e543e7ccbf5d25de4dc43d
4
- data.tar.gz: 1595543fbe14a3d2ec13ca4ac94c54f55fdee9d8
3
+ metadata.gz: af16d57720d83ee0b395072959c952c8a5d8dd72
4
+ data.tar.gz: 69460cfa156ab923d8e9ea2bde6535ed25d25aae
5
5
  SHA512:
6
- metadata.gz: faa5ce12dc073bd0f616ff1d894ce1dd14ba9293561c3f3916065f3e90f12e44b77e924f0be012279e754612d8e41e4286f3b867c3624786751a2b2211d4f53c
7
- data.tar.gz: 07fabcfa8cbc9defa224120f30c31bae03723b9da3b9e40bf5c30948c6e0576440f7635f5c005d9563f61897595e45b8b83faa45501aeda19b0306ff0ea4c111
6
+ metadata.gz: cfb037fd5da89d7c463feefccafc4b240cb4f9316eb17f48df85f14efd0b70ad29abab496fffd2bcd4c1286e9dfed237fb1e1cca95e7b1057f6c38696719ad4c
7
+ data.tar.gz: 1d589cb571d046765cf004c3d3730c91bc5a88a6fc3443147193eed51f5168c43695f5e93744b104a9a6a2e5aace2463bfed98b4c35cf01852d010fe44c0c456
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- # Specify your gem's dependencies in dynopoker.gemspec
3
+ # Specify your gem's dependencies in just_include.gemspec
4
4
  gemspec
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  JustInclude
2
2
  =============
3
3
 
4
- JustInclude simply wraps included { class_eval { ... } } combo.
5
- class_eval is better then normal method ClassMethods because you can include all kind of things you normally type inside a class. Such as:
4
+ JustInclude changes the way you define methods in included modules. Now you write stuff in your module as you would ctrl+c ctrl+v from class. No more ClassMethods nor Instance Methods. See Usage section for better understanding.
5
+ You can include all kind of things you normally type inside a class. Such as:
6
6
  - methods
7
7
  - class methods
8
8
  - callbacks
@@ -12,6 +12,8 @@ class_eval is better then normal method ClassMethods because you can include all
12
12
  - extends / includes
13
13
  etc...
14
14
 
15
+ JustInclude has zero external dependencies so can be used in pure ruby apps also, not only Rails.
16
+
15
17
 
16
18
  Usecase
17
19
  -------
data/just_include.gemspec CHANGED
@@ -1,24 +1,23 @@
1
1
  # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "just_include/version"
2
+ $:.push File.expand_path('../lib', __FILE__)
3
+ require 'just_include/version'
4
4
 
5
5
  Gem::Specification.new do |s|
6
- s.name = "just_include"
6
+ s.name = 'just_include'
7
7
  s.version = JustInclude::VERSION
8
- s.authors = ["kubenstein"]
9
- s.email = ["kubenstein@gmail.com"]
10
- s.homepage = "https://github.com/kubenstein/just_include"
8
+ s.authors = ['kubenstein']
9
+ s.email = ['kubenstein@gmail.com']
10
+ s.homepage = 'https://github.com/kubenstein/just_include'
11
11
  s.summary = %q{Simplify including functionality from module to class}
12
12
  s.description = %q{With JustInclude you can include all kind of things from module to class, such as: methods, class methods, callbacks, relation definitions, act_as_*, constans, extends/includes, etc...}
13
+ s.license = 'MIT'
13
14
 
14
- s.rubyforge_project = "just_include"
15
+ s.rubyforge_project = 'just_include'
15
16
 
16
17
  s.files = `git ls-files`.split("\n")
17
18
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
- s.require_paths = ["lib"]
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
20
+ s.require_paths = ['lib']
20
21
 
21
- # specify any dependencies here; for example:
22
- # s.add_development_dependency "rspec"
23
- # s.add_runtime_dependency "rest-client"
22
+ s.add_development_dependency 'rspec', '~> 3'
24
23
  end
data/lib/just_include.rb CHANGED
@@ -1,2 +1,2 @@
1
- require "just_include/version"
2
- require "just_include/just_include"
1
+ require 'just_include/version'
2
+ require 'just_include/just_include'
@@ -4,14 +4,18 @@
4
4
 
5
5
  module JustInclude
6
6
 
7
- def self.included(base)
8
- base.extend(ActiveSupport::Concern)
9
- base.extend(ClassMethods)
7
+ def self.included(included_module)
8
+ included_module.extend(IncludedModuleClassMethods)
10
9
  end
11
10
 
12
- module ClassMethods
11
+ module IncludedModuleClassMethods
13
12
  def just_include(&block)
14
- included { class_eval(&block) }
13
+ class << self; attr_accessor :block; end
14
+ self.block = block
15
+ end
16
+
17
+ def included(including_class)
18
+ including_class.class_eval(&self.block)
15
19
  end
16
20
  end
17
21
 
@@ -1,3 +1,3 @@
1
1
  module JustInclude
2
- VERSION = "0.5.0"
2
+ VERSION = '1.0.0'
3
3
  end
@@ -0,0 +1,57 @@
1
+ require_relative './spec_helper'
2
+
3
+
4
+ describe JustInclude do
5
+
6
+ let(:empty_module) { Module.new }
7
+ let(:empty_class) { Class.new }
8
+ let(:functionality_module) do
9
+
10
+
11
+ module OtherModule
12
+ def class_method_from_other_module
13
+ end
14
+ end
15
+
16
+ Module.new do
17
+ include JustInclude
18
+ just_include do
19
+
20
+ extend OtherModule
21
+
22
+ def self.class_method
23
+ end
24
+
25
+ def instance_method
26
+ end
27
+
28
+ end
29
+ end
30
+
31
+ end
32
+
33
+ it 'allows class to include module using just_include DSL' do
34
+ expect(empty_module).not_to respond_to(:just_include)
35
+ empty_module.send :include, JustInclude
36
+ expect(empty_module).to respond_to(:just_include)
37
+ end
38
+
39
+ it 'adds class methods to class' do
40
+ expect(empty_class).not_to respond_to(:class_method)
41
+ empty_class.send :include, functionality_module
42
+ expect(empty_class).to respond_to(:class_method)
43
+ end
44
+
45
+ it 'adds instance methods to class' do
46
+ expect(empty_class.new).not_to respond_to(:instance_method)
47
+ empty_class.send :include, functionality_module
48
+ expect(empty_class.new).to respond_to(:instance_method)
49
+ end
50
+
51
+ it 'adds class methods to class from other module' do
52
+ expect(empty_class).not_to respond_to(:class_method_from_other_module)
53
+ empty_class.send :include, functionality_module
54
+ expect(empty_class).to respond_to(:class_method_from_other_module)
55
+ end
56
+
57
+ end
@@ -0,0 +1,5 @@
1
+ require 'rspec'
2
+ require 'just_include'
3
+
4
+ RSpec.configure do |config|
5
+ end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: just_include
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - kubenstein
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-01 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2014-10-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '3'
13
27
  description: 'With JustInclude you can include all kind of things from module to class,
14
28
  such as: methods, class methods, callbacks, relation definitions, act_as_*, constans,
15
29
  extends/includes, etc...'
@@ -27,8 +41,11 @@ files:
27
41
  - lib/just_include.rb
28
42
  - lib/just_include/just_include.rb
29
43
  - lib/just_include/version.rb
44
+ - specs/just_include_spec.rb
45
+ - specs/spec_helper.rb
30
46
  homepage: https://github.com/kubenstein/just_include
31
- licenses: []
47
+ licenses:
48
+ - MIT
32
49
  metadata: {}
33
50
  post_install_message:
34
51
  rdoc_options: []
@@ -46,7 +63,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
46
63
  version: '0'
47
64
  requirements: []
48
65
  rubyforge_project: just_include
49
- rubygems_version: 2.0.6
66
+ rubygems_version: 2.2.2
50
67
  signing_key:
51
68
  specification_version: 4
52
69
  summary: Simplify including functionality from module to class