whenum 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/whenum.rb +104 -0
  3. metadata +44 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5570d9499b285c5e535d74eab1a8ef7e87ce602f
4
+ data.tar.gz: 1954c5448ad48269d4dc613a0926cb9f2d389eaf
5
+ SHA512:
6
+ metadata.gz: 58394596f7bdf6251df9b04fb030f73d7da004c3946faeb842fe1b14ff0f6db3e7517adcf9348ebbca15ab00e1a60d14a2d14d7172818b3292860b4e966c05d5
7
+ data.tar.gz: c654aacc4a34c9220fc3105789e5f709b84ae9661cea7b7e0e7dd85105a1616919f33afb71da791da4679cecea101494f34f7aa7b84c4dadd587a9ef44ba7948
data/lib/whenum.rb ADDED
@@ -0,0 +1,104 @@
1
+ module BaseModule
2
+ def self.included(base)
3
+ base.extend EnumStatus
4
+ end
5
+ end
6
+
7
+ module EnumStatus
8
+ def clever_column(status,*hash)
9
+ # status_name 方法
10
+ self.send(:define_method,"#{status}_name", lambda {
11
+ if @value_sym
12
+ puts @value_sym.to_sym.to_s
13
+ end
14
+ })
15
+
16
+ # status 获取方法
17
+ self.send(:define_method, "#{status}" , lambda {
18
+ if @value
19
+ @value.to_s
20
+ end
21
+ })
22
+
23
+ hash[0].keys.each do |keyname|
24
+ # 判断是否是指定的某种状态
25
+ self.send(:define_method, "#{status}_#{keyname}?",
26
+ lambda { puts hash[0].fetch(keyname.to_sym) == @value })
27
+
28
+ # 强制设定为某种状态
29
+ self.send(:define_method, "#{status}_#{keyname}!",
30
+ lambda {
31
+ if hash[0].has_key?(keyname.to_sym)
32
+ @value_sym = keyname.to_sym
33
+ @value = hash[0].fetch(keyname.to_sym)
34
+ puts keyname.to_sym
35
+ else
36
+ puts "该方法不存在"
37
+ end
38
+ })
39
+ end
40
+ # 为属性设置为某种状态
41
+ self.send(:define_method,"#{status}=", lambda{ |*args|
42
+ if args[0].is_a?(Numeric) || args[0].is_a?(Integer) || args[0].is_a?(Float)
43
+ raise ArgumentError, '传入参数不允许为数值类型!'
44
+ else
45
+ if hash[0].has_key?(args[0])
46
+ @value_sym = args[0]
47
+ puts @value = hash[0].fetch(args[0])
48
+ else
49
+ raise ArgumentError, "#{args[0]} key不存在!"
50
+ end
51
+ end
52
+ })
53
+
54
+ # status_array 的方法
55
+ self.class.send(:define_method, "#{status}_array", lambda{|*args|
56
+ puts hash[0].invert.to_a.to_s
57
+ })
58
+ end
59
+ end
60
+
61
+
62
+ class ActiveRecord::Base
63
+ include BaseModule
64
+ end
65
+ #class Deal
66
+ # include BaseModule
67
+ # clever_column :status, {actived: 0, deleted: 1, updated: 2, create: 3}
68
+ #end
69
+ #
70
+ #deal = Deal.new
71
+ #Deal.status_array # [[0, :actived], [1, :deleted], [2, :updated], [3, :create]]
72
+ ##deal.status = 1 # 不接受传入值为阿拉伯数字
73
+ #deal.status = :create # 3
74
+ ##deal.status = :aaaa
75
+ #deal.status # 3
76
+ #deal.status_name # create
77
+ #deal.status_actived? # false
78
+ #deal.status_deleted? # false
79
+ #deal.status_updated? # false
80
+ #deal.status_create? # true
81
+ #deal.status_updated! # updated
82
+ #deal.status_name # updated
83
+ #deal.status_create? # false
84
+ #deal.status_updated? # true
85
+
86
+
87
+ #class Person
88
+ # include BaseModule
89
+ # clever_column :enus, {create: 0, new: 1, insert: 2, start: 3}
90
+ #end
91
+
92
+ #person = Person.new
93
+ #Person.enus_array
94
+ #person.enus = 1
95
+ #person.enus = :new
96
+ #person.enus
97
+ #person.enus_name
98
+ #person.enus_create?
99
+ #person.enus_new?
100
+ #person.enus_insert?
101
+ #person.enus_start?
102
+ #person.enus_create!
103
+ #person.enus_new?
104
+ #person.enus_asd?
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: whenum
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Hao Wang
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-02-21 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: enum status
14
+ email: wanghao293@126.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/whenum.rb
20
+ homepage: http://rubygems.org/gems/whenum
21
+ licenses: []
22
+ metadata: {}
23
+ post_install_message:
24
+ rdoc_options: []
25
+ require_paths:
26
+ - lib
27
+ required_ruby_version: !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - - '>='
30
+ - !ruby/object:Gem::Version
31
+ version: '0'
32
+ required_rubygems_version: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - '>='
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ requirements: []
38
+ rubyforge_project:
39
+ rubygems_version: 2.1.0
40
+ signing_key:
41
+ specification_version: 4
42
+ summary: Model Whenum
43
+ test_files: []
44
+ has_rdoc: