hashifiable 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/hashifiable.rb CHANGED
@@ -2,10 +2,21 @@ require 'json'
2
2
 
3
3
  module Hashifiable
4
4
  def hashify(*args)
5
- ## Defines to_hash with specified arguments.
5
+
6
+ ## Defines to_hash method dinamically with the key/values specified in *args.
6
7
  define_method :to_hash do
7
8
  hash_representation = {}
8
- args.each do |attribute|
9
+
10
+ methods = args.select { |a| a.is_a?(Symbol) }
11
+ procs = args.select { |a| a.is_a?(Hash) }.inject { |all, hash| all.merge(hash) }
12
+
13
+ ## Create keys for all lambdas sent.
14
+ procs.each do |name, function|
15
+ hash_representation[name] = instance_exec(&function)
16
+ end
17
+
18
+ ## Create keys for all methods specified.
19
+ methods.each do |attribute|
9
20
  hash_representation[attribute] = self.send(attribute)
10
21
  end
11
22
 
@@ -1,8 +1,8 @@
1
1
  module Hashifiable
2
2
  module Version
3
3
  MAJOR = 0
4
- MINOR = 0
5
- PATCH = 1
4
+ MINOR = 1
5
+ PATCH = 0
6
6
 
7
7
  def self.to_s
8
8
  [MAJOR, MINOR, PATCH].join('.')
metadata CHANGED
@@ -1,32 +1,51 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hashifiable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Pablo Astigrraga
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-06-19 00:00:00.000000000 Z
12
+ date: 2013-06-20 00:00:00.000000000 Z
12
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
13
30
  - !ruby/object:Gem::Dependency
14
31
  name: rspec
15
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
16
34
  requirements:
17
- - - '>='
35
+ - - ! '>='
18
36
  - !ruby/object:Gem::Version
19
37
  version: '0'
20
38
  type: :development
21
39
  prerelease: false
22
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
23
42
  requirements:
24
- - - '>='
43
+ - - ! '>='
25
44
  - !ruby/object:Gem::Version
26
45
  version: '0'
27
- description: "\n With hashify you can specify a line with the methods that will
28
- be called to\n create a hash representation of your object. Simple and straightforward.\n
29
- \ "
46
+ description: ! "\n With hashify you can specify a line with the methods that
47
+ will be called to\n create a hash representation of your object. Simple and
48
+ straightforward.\n "
30
49
  email:
31
50
  - poteland@gmail.com
32
51
  executables: []
@@ -38,26 +57,27 @@ files:
38
57
  homepage: http://github.com/pote/hashify
39
58
  licenses:
40
59
  - MIT
41
- metadata: {}
42
60
  post_install_message:
43
61
  rdoc_options: []
44
62
  require_paths:
45
63
  - lib
46
64
  - lib
47
65
  required_ruby_version: !ruby/object:Gem::Requirement
66
+ none: false
48
67
  requirements:
49
- - - '>='
68
+ - - ! '>='
50
69
  - !ruby/object:Gem::Version
51
70
  version: '0'
52
71
  required_rubygems_version: !ruby/object:Gem::Requirement
72
+ none: false
53
73
  requirements:
54
- - - '>='
74
+ - - ! '>='
55
75
  - !ruby/object:Gem::Version
56
76
  version: '0'
57
77
  requirements: []
58
78
  rubyforge_project:
59
- rubygems_version: 2.0.0.rc.2
79
+ rubygems_version: 1.8.23
60
80
  signing_key:
61
- specification_version: 4
81
+ specification_version: 3
62
82
  summary: A simple way to specify the hash/json representation of your object
63
83
  test_files: []
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 4593d7b77aa53d337d252b6b18cab6c1b721c3b1
4
- data.tar.gz: 5df540d21a9b2a2285f8152e540320d04a4416e3
5
- SHA512:
6
- metadata.gz: 43e7566f9693b90c9b7c82c7596dabd3ac555af73a2d46e47df3a77107acfefdc49d5264b8d27f4d061dbcf916c14e52e1bd97940f6a05c9013f231412420878
7
- data.tar.gz: a34751881d0b560ad86dc4bfabb70951bbf3e948d1e9386078e98bf9adbe92b7f4a898daaf204c3e82da49a48b284c03a2f7339cee06aaedb06667c2bc72acfb