persis 0.0.1

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.
Files changed (2) hide show
  1. data/lib/persis.rb +48 -0
  2. metadata +62 -0
data/lib/persis.rb ADDED
@@ -0,0 +1,48 @@
1
+ module Persistable
2
+
3
+ def self.included(klass)
4
+ klass.extend Enumerable
5
+ klass.extend ClassMethods
6
+ klass.instance_variable_set :@instances_list, []
7
+ klass.instance_variable_set :@_attributes, []
8
+ end
9
+
10
+ module ClassMethods
11
+ def define_attrs(*attrs)
12
+ (@_attributes += attrs).uniq!
13
+ end
14
+ def each
15
+ @instances_list.each{|instance| yield instance}
16
+ end
17
+ def save(instance)
18
+ @instances_list << instance
19
+ end
20
+ def delete_if
21
+ instance = @instances_list.find{|instance| yield instance }
22
+ @instances_list -= [instance]
23
+ end
24
+ def all
25
+ @instances_list
26
+ end
27
+ def method_missing(method_name, *args)
28
+ if method_name =~ /^find_by_/
29
+ attr_name = method_name.gsub /^find_by_/, ""
30
+ @instances_list.find do |instance|
31
+ attr = instance.send(attr_name)
32
+ args.include? attr
33
+ end
34
+ else
35
+ raise NoMethodError, method_name
36
+ end
37
+ end
38
+ end
39
+ def save
40
+ self.class.save(self)
41
+ end
42
+ def initialize(attrs)
43
+ attrs.each_entry do |key, value|
44
+ instance_variable_set("@#{key}", value)
45
+ end
46
+ end
47
+
48
+ end
metadata ADDED
@@ -0,0 +1,62 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: persis
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 1
9
+ version: 0.0.1
10
+ platform: ruby
11
+ authors:
12
+ - Ariosvaldo Menezes
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2012-08-30 00:00:00 -03:00
18
+ default_executable:
19
+ dependencies: []
20
+
21
+ description: Really! It's just a test! Don't waste your time!
22
+ email: ariosvaldo@tet.com.br
23
+ executables: []
24
+
25
+ extensions: []
26
+
27
+ extra_rdoc_files: []
28
+
29
+ files:
30
+ - lib/persis.rb
31
+ has_rdoc: true
32
+ homepage: http://www.ariosvaldomenezes.org/gems/persis
33
+ licenses: []
34
+
35
+ post_install_message:
36
+ rdoc_options: []
37
+
38
+ require_paths:
39
+ - lib
40
+ required_ruby_version: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ required_rubygems_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ segments:
52
+ - 0
53
+ version: "0"
54
+ requirements: []
55
+
56
+ rubyforge_project:
57
+ rubygems_version: 1.3.6
58
+ signing_key:
59
+ specification_version: 3
60
+ summary: It's just a test
61
+ test_files: []
62
+