enum_plus 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -13,4 +13,5 @@ capybara-*.html
13
13
  /spec/tmp/*
14
14
  **.orig
15
15
  rerun.txt
16
- pickle-email-*.html
16
+ pickle-email-*.html
17
+ *.gem
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gemspec
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Enum Plus
2
2
 
3
- Add enumeration to your ruby classes
3
+ _Add enumeration to your ruby classes_
4
4
 
5
5
  ## Usage
6
6
 
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env rake
2
+ begin
3
+ require 'bundler/setup'
4
+ rescue LoadError
5
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
+ end
7
+
8
+ Bundler::GemHelper.install_tasks
data/enum_plus.gemspec ADDED
@@ -0,0 +1,15 @@
1
+ require File.expand_path('../lib/enum_plus/version', __FILE__)
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = 'enum_plus'
5
+ s.version = EnumPlus::VERSION
6
+ s.authors = ['caedes']
7
+ s.email = ['laurentromain@gmail.com']
8
+ s.homepage = 'https://github.com/caedes/enum_plus'
9
+ s.summary = 'Add enumeration to your ruby classes'
10
+ s.description = s.summary
11
+
12
+ s.files = `git ls-files`.split("\n")
13
+
14
+ s.require_path = 'lib'
15
+ end
data/init.rb ADDED
@@ -0,0 +1 @@
1
+ require 'enum_plus'
@@ -0,0 +1,3 @@
1
+ module EnumPlus
2
+ VERSION = '0.2.0'
3
+ end
data/lib/enum_plus.rb ADDED
@@ -0,0 +1,53 @@
1
+ require 'enum_plus/version'
2
+
3
+ unless String.methods.include? 'underscore'
4
+ class String
5
+ def underscore
6
+ self.gsub(/::/, '/').
7
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
8
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
9
+ tr("-", "_").
10
+ downcase
11
+ end
12
+ end
13
+ end
14
+
15
+ class Object
16
+ def self.enum name, enumeration
17
+ name = name.to_s
18
+ class_eval "
19
+ def self.#{name}_values
20
+ #{enumeration}
21
+ end
22
+ def self.#{name}_captions
23
+ #{enumeration}.map do |value|
24
+ humanize_#{name} value
25
+ end
26
+ end"
27
+ enumeration.each do |value|
28
+ value = value.to_s
29
+ eval "
30
+ def #{value}?
31
+ self.#{name} == '#{value}'
32
+ end
33
+ def #{value}!
34
+ self.#{name} = '#{value}'
35
+ end"
36
+ end
37
+ eval "
38
+ def humanize_#{name} value
39
+ value = value.to_s
40
+ begin
41
+ Required::Module::const_get 'I18n'
42
+ ::I18n.t \"enum.#{self.to_s.underscore}.#{name}.#{'#{value}'}\"
43
+ rescue NameError
44
+ value
45
+ end
46
+ end
47
+ def #{name}_caption
48
+ humanize_#{name} self.#{name}
49
+ end"
50
+
51
+ validates_inclusion_of name.to_sym, { allow_nil: true, in: enumeration } if self.ancestors.include? 'ActiveRecord::Base'
52
+ end
53
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: enum_plus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -19,7 +19,13 @@ extensions: []
19
19
  extra_rdoc_files: []
20
20
  files:
21
21
  - .gitignore
22
+ - Gemfile
22
23
  - README.md
24
+ - Rakefile
25
+ - enum_plus.gemspec
26
+ - init.rb
27
+ - lib/enum_plus.rb
28
+ - lib/enum_plus/version.rb
23
29
  homepage: https://github.com/caedes/enum_plus
24
30
  licenses: []
25
31
  post_install_message: