mini_object 0.0.1 → 0.0.2

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: 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