mini_object 0.0.1 → 0.0.2

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: 42c7b681ee29460d5b652d07069aa46b50dbd3f7
4
- data.tar.gz: 6b9083abe99eed8a6c42b777984e7f0cab6491ae
3
+ metadata.gz: 0aa379aae7d9c42cfcfb360a0ddb6fda0fcecdaa
4
+ data.tar.gz: 320b678ed4208c284b00d89d8d9d78fa0de57ae3
5
5
  SHA512:
6
- metadata.gz: fae92c73f7def24ddb55120650925f6ecfedb8e322ce1be48d6aa970be5979e8a76ebbb29625ea8d5efae1f03b468e7a57204378d4f2b4b2fcb90445d777c59d
7
- data.tar.gz: 696a5b683d06e54a23ebecb377245c71fd2620c8b785b5502671dc6134eec557253fb5c2241fef0c6711e30803952bd72a1e8a551f31f93f17ee868a39e8381c
6
+ metadata.gz: 1b0abff2dcdab9666d1c296e9072171c7b82dea205b469f8752a9dcf062688e9599153d508c0f1dbd61dff41b098e1806dae089d034f91983119b8a86989e03c
7
+ data.tar.gz: 6c2fc780b5cceb48245f03a8554f8cbce836e88f185ece9523ed353fbaf53ebbdfe0722546d1aa2dbd47e7185f711d61e662e00d75be73778ca4a14eb9ca3a09
data/.gitignore CHANGED
@@ -0,0 +1 @@
1
+ pkg
data/.travis.yml ADDED
@@ -0,0 +1,11 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - jruby-19mode
5
+ - 2.0.0
6
+ - 2.1.5
7
+ - 2.2.0
8
+ cache: bundler
9
+ addons:
10
+ code_climate:
11
+ repo_token: 08412207ff7867475ecaeb400f6b3438e1d5fc6d191e0866abb8f1611c07444f
data/Gemfile CHANGED
@@ -6,3 +6,8 @@ group :test, :development do
6
6
  gem 'rspec', require: false
7
7
  gem 'pry', require: false
8
8
  end
9
+
10
+ group :test do
11
+ gem "codeclimate-test-reporter", require: false
12
+ end
13
+
data/Gemfile.lock CHANGED
@@ -6,9 +6,13 @@ PATH
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
+ codeclimate-test-reporter (0.4.5)
10
+ simplecov (>= 0.7.1, < 1.0.0)
9
11
  coderay (1.1.0)
10
12
  diff-lcs (1.2.5)
13
+ docile (1.1.5)
11
14
  method_source (0.8.2)
15
+ multi_json (1.10.1)
12
16
  pry (0.10.1)
13
17
  coderay (~> 1.1.0)
14
18
  method_source (~> 0.8.1)
@@ -26,6 +30,11 @@ GEM
26
30
  rspec-mocks (3.1.3)
27
31
  rspec-support (~> 3.1.0)
28
32
  rspec-support (3.1.2)
33
+ simplecov (0.9.1)
34
+ docile (~> 1.1.0)
35
+ multi_json (~> 1.0)
36
+ simplecov-html (~> 0.8.0)
37
+ simplecov-html (0.8.0)
29
38
  slop (3.6.0)
30
39
 
31
40
  PLATFORMS
@@ -33,6 +42,7 @@ PLATFORMS
33
42
 
34
43
  DEPENDENCIES
35
44
  bundler (~> 1.3)
45
+ codeclimate-test-reporter
36
46
  mini_object!
37
47
  pry
38
48
  rake
data/README.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # MiniObject
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/mini_object.svg)](http://badge.fury.io/rb/mini_object)
4
+ [![Build Status](https://travis-ci.org/manuelmorales/mini-object.svg)](https://travis-ci.org/manuelmorales/mini-object)
5
+ [![Code Climate](https://codeclimate.com/github/manuelmorales/mini-object/badges/gpa.svg)](https://codeclimate.com/github/manuelmorales/mini-object)
6
+
3
7
  A set of tools which will make easier to work with objects instead of classes
4
8
  and injecting dependencies.
5
9
 
data/lib/box.rb CHANGED
@@ -2,6 +2,7 @@ module MiniObject
2
2
  class Box
3
3
  include Injectable
4
4
  include RemarkableInspect
5
+ include MiniObject
5
6
 
6
7
  def initialize attrs = {}
7
8
  self.attributes= attrs
data/lib/injectable.rb CHANGED
@@ -21,8 +21,9 @@ module MiniObject
21
21
  end
22
22
  else
23
23
  if value == NULL
24
- p = instance_variable_get("@#{name}_proc")
25
- p || raise("No #{name} defined yet for #{inspect}")
24
+ p = instance_variable_get("@#{name}_proc") ||
25
+ self.class.instance_variable_get("@#{name}_default_proc") ||
26
+ raise("No #{name} defined yet for #{inspect}")
26
27
  p.call
27
28
  else
28
29
  send("#{name}=", value)
@@ -38,14 +39,16 @@ module MiniObject
38
39
  end
39
40
  end
40
41
 
41
- def cattr_injectable name
42
+ def cattr_injectable name, &block
42
43
  define_singleton_method name, &Injectable.getsetter_definition_for(name)
43
44
  define_singleton_method "#{name}=", &Injectable.setter_definition_for(name)
45
+ send(name, &block) if block
44
46
  end
45
47
 
46
- def attr_injectable name
48
+ def attr_injectable name, &block
47
49
  define_method name, &Injectable.getsetter_definition_for(name)
48
50
  define_method "#{name}=", &Injectable.setter_definition_for(name)
51
+ instance_variable_set("@#{name}_default_proc", block) if block
49
52
  end
50
53
 
51
54
  def let name, &block
data/lib/inline.rb CHANGED
@@ -5,20 +5,21 @@ module MiniObject
5
5
 
6
6
  attr_accessor :inline_name
7
7
 
8
- def initialize name = nil, &block
8
+ def initialize name = nil, args = {}, &block
9
+ args.each do |k,v|
10
+ define_singleton_method(k) { v }
11
+ end
12
+
9
13
  @inline_name = name || 'inline'
10
14
  instance_exec self, &block if block
11
15
  end
12
16
 
13
17
  def remarkable_methods
14
- methods - self.class.instance_methods
18
+ (methods - self.class.instance_methods).sort
15
19
  end
16
20
 
17
21
  def remarkable_name
18
22
  "#{inline_name || 'anon'} / Inline"
19
23
  end
20
-
21
- # TODO: Explore the possiblity of allowing access to methods and
22
- # vars defined outside the block.
23
24
  end
24
25
  end
data/lib/mini_object.rb CHANGED
@@ -9,4 +9,5 @@ module MiniObject
9
9
  autoload :Tool, 'tool'
10
10
  autoload :ForwardingDSL, 'forwarding_dsl'
11
11
  autoload :RemarkableInspect, 'remarkable_inspect'
12
+ autoload :Box, 'box'
12
13
  end
@@ -26,7 +26,7 @@ module MiniObject
26
26
  end
27
27
 
28
28
  def remarkable_methods
29
- (self.instance_methods - Box.instance_methods).map(&:to_s).tap do |mm|
29
+ (self.instance_methods - Box.instance_methods).sort.map(&:to_s).tap do |mm|
30
30
  # Substittues [my_method, my_method=] by [my_method/=]
31
31
  mm.grep(/\=$/).each do |setter|
32
32
  getter = setter.gsub /\=$/, ''
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module MiniObject
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
Binary file
data/mini_object.gemspec CHANGED
@@ -10,8 +10,8 @@ Gem::Specification.new do |spec|
10
10
  spec.version = MiniObject::VERSION
11
11
  spec.authors = ["Manuel Morales"]
12
12
  spec.email = ['manuelmorales@gmail.com']
13
- spec.description = File.read('README.md').split("\n").reject{|l| l.length == 0 || l =~ /^[#=]+/ }.first
14
- spec.summary = spec.description
13
+ spec.summary = 'Easier working with instances instead of classes and dependency injection'
14
+ spec.description = 'A set of tools which will make easier to work with objects instead of classes and injecting dependencies.'
15
15
  spec.homepage = "https://github.com/manuelmorales/#{spec.name.gsub('_','-')}"
16
16
  spec.license = "MIT"
17
17
 
@@ -21,5 +21,5 @@ Gem::Specification.new do |spec|
21
21
  spec.require_paths = ["lib"]
22
22
 
23
23
  spec.add_development_dependency "bundler", "~> 1.3"
24
- spec.add_development_dependency "rake"
24
+ spec.add_development_dependency "rake", '~> 10.4'
25
25
  end
data/spec/spec_helper.rb CHANGED
@@ -13,3 +13,6 @@ include MiniObject
13
13
 
14
14
  $LOAD_PATH.unshift File.expand_path('spec/support')
15
15
 
16
+ require "codeclimate-test-reporter"
17
+ CodeClimate::TestReporter.start
18
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mini_object
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Manuel Morales
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-08 00:00:00.000000000 Z
11
+ date: 2015-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -28,18 +28,18 @@ dependencies:
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '10.4'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '10.4'
41
41
  description: A set of tools which will make easier to work with objects instead of
42
- classes
42
+ classes and injecting dependencies.
43
43
  email:
44
44
  - manuelmorales@gmail.com
45
45
  executables: []
@@ -47,6 +47,7 @@ extensions: []
47
47
  extra_rdoc_files: []
48
48
  files:
49
49
  - ".gitignore"
50
+ - ".travis.yml"
50
51
  - ".yardoc/checksums"
51
52
  - ".yardoc/object_types"
52
53
  - ".yardoc/objects/root.dat"
@@ -64,6 +65,7 @@ files:
64
65
  - lib/remarkable_inspect.rb
65
66
  - lib/resolver.rb
66
67
  - lib/version.rb
68
+ - mini_object-0.0.1.gem
67
69
  - mini_object.gemspec
68
70
  - spec/box_spec.rb
69
71
  - spec/injectable_spec.rb
@@ -96,7 +98,7 @@ rubyforge_project:
96
98
  rubygems_version: 2.2.2
97
99
  signing_key:
98
100
  specification_version: 4
99
- summary: A set of tools which will make easier to work with objects instead of classes
101
+ summary: Easier working with instances instead of classes and dependency injection
100
102
  test_files:
101
103
  - spec/box_spec.rb
102
104
  - spec/injectable_spec.rb