just_include 0.5.0 → 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 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