whenum 0.0.0
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.
- checksums.yaml +7 -0
- data/lib/whenum.rb +104 -0
- 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:
|