lib/when_exe/calendarnote.rb in when_exe-0.4.6 vs lib/when_exe/calendarnote.rb in when_exe-0.5.0

- old
+ new

@@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- =begin - Copyright (C) 2011-2015 Takashi SUGA + Copyright (C) 2011-2021 Takashi SUGA You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive. =end module When @@ -106,23 +106,27 @@ # @param [Boolean] compact 余分な nil や空配列を除去するか否か # @param [Symbol] symbol 取り出したいハッシュ要素(:note, :value, etc.) # # @return [Array] ハッシュ要素からなる配列(元の構造が配列であった場合) # - # @note 引数 symbol が Integer の場合は添え字とみなして元の配列の要素を取り出す + # @note 引数 symbol が Symbol でも String でもない場合は添え字とみなして元の配列の要素を取り出す # 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)} + 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 @@ -323,10 +327,10 @@ # 暦注サブクラスの場合、暦注要素が増えたり、:note の暦注要素の型が変わったりすることがある。 # def notes(date, options={}) dates, indices, notes, persistence, conditions, options = _parse_note(date, options) retrieved = NotesContainer.retrieve(persistence, date.to_i) - return retrieved unless retrieved == false + return retrieved if retrieved NotesContainer.register(indices.map {|i| next [] unless i <= date.precision _note_values(dates, notes[i-1], _all_keys[i-1], _elements[i-1]) do |dates, focused_notes, notes_hash| focused_notes.each do |note| notes_hash[note] ||= _note_element(note, i, conditions, dates)