Module: When::CalendarNote::NotesContainer
- Defined in:
- lib/when_exe/calendarnote.rb
Overview
暦注検索結果を保存するコンテナ
Class Method Summary collapse
-
.register(notes, persistence, sdn) ⇒ Object
永続データに暦注検索結果を登録する.
-
.retrieve(persistence, sdn) ⇒ Object
永続データから暦注検索結果を取り出す.
-
.verify(pattern, value) ⇒ Object
パターンの値の一致を判定する.
Instance Method Summary collapse
-
#[](symbol) ⇒ Array
暦注検索結果コンテナのハッシュ要素.
-
#simplify(compact = true) ⇒ NotesContainer
暦注検索結果コンテナの次元を下げる.
-
#subset(condition, compact = true) ⇒ Array
暦注検索結果コンテナの条件に合う要素を抽出する.
-
#value(compact = true, symbol = :value) ⇒ Array
暦注検索結果コンテナのハッシュ要素.
Class Method Details
.register(notes, persistence, sdn) ⇒ Object
永続データに暦注検索結果を登録する
63 64 65 66 67 68 69 |
# File 'lib/when_exe/calendarnote.rb', line 63 def register(notes, persistence, sdn) if persistence persistence.store(sdn, notes) persistence.extend(self) end notes.extend(self) end |
.retrieve(persistence, sdn) ⇒ Object
永続データから暦注検索結果を取り出す
75 76 77 78 |
# File 'lib/when_exe/calendarnote.rb', line 75 def retrieve(persistence, sdn) return false unless persistence persistence.fetch(sdn, false) end |
.verify(pattern, value) ⇒ Object
パターンの値の一致を判定する
84 85 86 87 88 |
# File 'lib/when_exe/calendarnote.rb', line 84 def verify(pattern, value) value = value.label if !value.kind_of?(When::BasicTypes::M17n) && value.respond_to?(:label) pattern = When::EncodingConversion.to_internal_encoding(pattern) pattern.kind_of?(Regexp) ? value =~ pattern : value == pattern end |
Instance Method Details
#[](symbol) ⇒ Array
Note:
引数 symbol が Integer の場合は添え字とみなして元の配列の要素を取り出す
暦注検索結果コンテナのハッシュ要素
147 148 149 |
# File 'lib/when_exe/calendarnote.rb', line 147 def [](symbol) value(false, symbol) end |
#simplify(compact = true) ⇒ NotesContainer
暦注検索結果コンテナの次元を下げる
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/when_exe/calendarnote.rb', line 97 def simplify(compact=true) if kind_of?(Hash) && !key?(:note) # Persistent NotesContainer simplified = {} each_pair do |key, value| value = value.simplify(compact) if value.kind_of?(NotesContainer) simplified[key] = value if value end else # Non-Persistent NotesContainer simplified = self simplified = _compact(simplified) if compact simplified = simplified[0] while simplified.kind_of?(Array) && simplified.size <= 1 end _bless(simplified) end |
#subset(condition, compact = true) ⇒ Array
暦注検索結果コンテナの条件に合う要素を抽出する
158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 |
# File 'lib/when_exe/calendarnote.rb', line 158 def subset(condition, compact=true) if kind_of?(Hash) && !key?(:note) # Persistent NotesContainer result = {} each_pair do |key, value| value = value.subset(condition, compact) if value.kind_of?(NotesContainer) result[key] = value if value end else # Non-Persistent NotesContainer result = _dig(self) {|target| (condition.each_pair {|key, pattern| break nil unless NotesContainer.verify(pattern, target[key])}) ? target : nil } result = _compact(result) if compact end _bless(result) end |
#value(compact = true, symbol = :value) ⇒ Array
Note:
引数 symbol が Integer の場合は添え字とみなして元の配列の要素を取り出す
暦注検索結果コンテナのハッシュ要素
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
# File 'lib/when_exe/calendarnote.rb', line 123 def value(compact=true, symbol=:value) if kind_of?(Hash) && !key?(:note) # Persistent NotesContainer sliced = {} each_pair do |key, val| sliced[key] = val[symbol] end else # Non-Persistent NotesContainer return _bless(slice(symbol)) if symbol.kind_of?(Integer) sliced = _dig(self) {|target| target.fetch(symbol, nil)} end sliced = _bless(sliced) compact ? sliced.simplify : sliced end |