loser 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 (4) hide show
  1. checksums.yaml +7 -0
  2. data/lib/loser/module.rb +21 -0
  3. data/lib/loser.rb +32 -0
  4. metadata +45 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 24684aeb40148e4a97e42b7c42f03563d1101451
4
+ data.tar.gz: cf789ed0aa1c25e82a47d86de76384bba14842c4
5
+ SHA512:
6
+ metadata.gz: 0c38800e1be4074107c169bc7c12551b5168cc27e1b64bc7b45204ffda3b5a2c89841247445ff43609671771c30f1e190912e7777e2630720865a9575d07f106
7
+ data.tar.gz: 4f12c0edc5ce2f2a7aaa94fd222370f9d3386a633a950264340ece52d16b95373380c8bbce978210dfb7954ad6188b5bd673959d491273bace7fac3c4d2c987d
@@ -0,0 +1,21 @@
1
+ class Module
2
+ def attr_accessor_with_default_setter( *syms, &block )
3
+ raise 'Default value in block required' unless block
4
+ syms.each do | sym |
5
+ module_eval do
6
+ attr_writer( sym )
7
+ define_method( sym ) do | |
8
+ class << self; self; end.class_eval do
9
+ attr_reader( sym )
10
+ end
11
+ if instance_variables.include? "@#{sym}"
12
+ instance_variable_get( "@#{sym}" )
13
+ else
14
+ instance_variable_set( "@#{sym}", block.call )
15
+ end
16
+ end
17
+ end
18
+ end
19
+ nil
20
+ end
21
+ end
data/lib/loser.rb ADDED
@@ -0,0 +1,32 @@
1
+ require 'loser/module'
2
+
3
+ module Loser
4
+
5
+ def self.included(klass)
6
+ attr_accessor_with_default_setter :errors do
7
+ Array.new
8
+ end
9
+ end
10
+
11
+ def valid?
12
+ errors.size == 0
13
+ end
14
+
15
+ def errors_full(separator=', ')
16
+ errors.join(separator)
17
+ end
18
+
19
+ def fail(msg)
20
+ self.errors << msg
21
+ false
22
+ end
23
+
24
+ private
25
+
26
+ def safe
27
+ yield
28
+ rescue
29
+ fail 'Erro inesperado, tente novamente.'
30
+ end
31
+
32
+ end
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: loser
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Marcus Mansur
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-04-02 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A simple gem to add error methods to your ruby class
14
+ email: marcus.v.mansur@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/loser.rb
20
+ - lib/loser/module.rb
21
+ homepage: http://rubygems.org/gems/loser
22
+ licenses:
23
+ - MIT
24
+ metadata: {}
25
+ post_install_message:
26
+ rdoc_options: []
27
+ require_paths:
28
+ - lib
29
+ required_ruby_version: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ required_rubygems_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ requirements: []
40
+ rubyforge_project:
41
+ rubygems_version: 2.1.11
42
+ signing_key:
43
+ specification_version: 4
44
+ summary: Loser!
45
+ test_files: []