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.
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: