Module: When::CalendarNote::NotesContainer
- Defined in:
- lib/when_exe/calendarnote.rb
Overview
暦注検索結果を保存するコンテナ
Instance Method Summary collapse
-
#[](symbol) ⇒ Array
暦注検索結果コンテナのハッシュ要素.
-
#simplify(compact = true) ⇒ NotesContainer
暦注検索結果コンテナの次元を下げる.
-
#subset(condition, compact = true) ⇒ Array
暦注検索結果コンテナの条件に合う要素を抽出する.
-
#value(compact = true, symbol = :value) ⇒ Array
暦注検索結果コンテナのハッシュ要素.
Instance Method Details
#[](symbol) ⇒ Array
Note:
引数 symbol が Integer の場合は添え字とみなして元の配列の要素を取り出す
暦注検索結果コンテナのハッシュ要素
141 142 143 |
# File 'lib/when_exe/calendarnote.rb', line 141 def [](symbol) value(false, symbol) end |
#simplify(compact = true) ⇒ NotesContainer
暦注検索結果コンテナの次元を下げる
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/when_exe/calendarnote.rb', line 87 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
暦注検索結果コンテナの条件に合う要素を抽出する
152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 |
# File 'lib/when_exe/calendarnote.rb', line 152 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 が Symbol でも String でもない場合は添え字とみなして元の配列の要素を取り出す
暦注検索結果コンテナのハッシュ要素
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/when_exe/calendarnote.rb', line 113 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 case symbol when Symbol, String sliced = _dig(self) {|target| target.fetch(symbol, nil)} else return _bless(slice(symbol)) end end sliced = _bless(sliced) compact ? sliced.simplify : sliced end |