loser 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: []