Last active
December 9, 2015 23:28
-
-
Save baya/4344170 to your computer and use it in GitHub Desktop.
状态管理工具v2.0
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 用于维护状态列表 | |
# Example: | |
# | |
# sm = CodeNoteMapper.new({ | |
# '-3' => '购买彩票失败', | |
# '-1' => ['默认', '未做任何处理'], | |
# '0' => '投注成功', | |
# '1' => '购买彩票成功' | |
# }) | |
# sm['默认'].code #=> '-1' | |
# sm['默认'].note #=> '未做任何处理' | |
# sm['默认'].name #=> '默认' | |
# sm['默认', '投注成功'].codes #=> ['-1', '0'] | |
# item = sm['-1'] | |
# item.note #=> '未做任何处理' | |
# item.code #=> '-1' | |
# item.name #=> '默认' | |
class CodeNoteMapper | |
def initialize h = {} | |
@status = {} | |
@items = [] | |
@raw = h | |
@data = nil | |
h.each {|k, v| | |
v = [v] if !v.is_a? Array | |
name = v[0] | |
code = k | |
note = v[1].nil? ? name : v[1] | |
item = OpenStruct.new(name: name, code: code, note: note) | |
@status[k] = item | |
@items << item | |
} | |
@enum = @items.to_enum | |
end | |
def raw | |
@raw.dup | |
end | |
def [](*indexs) | |
@data = indexs.map {|index| | |
@items.detect {|item| item.name == index || item.code == index } | |
}.uniq {|item| item.code } | |
self | |
end | |
def code | |
@data.first.code | |
end | |
def name | |
@data.first.name | |
end | |
def note | |
@data.first.note | |
end | |
def codes | |
@data.map(&:code) | |
end | |
def each | |
@enum.each {|item| yield item } | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment