def delete_by_time(issues, hash_key = "actual_date", older_tag = nil, newer_tag = nil)
      # in case if not tags specified - return unchanged array
      return issues if older_tag.nil? && newer_tag.nil?

      older_tag = ensure_older_tag(older_tag, newer_tag)

      newer_tag_time = newer_tag && get_time_of_tag(newer_tag)
      older_tag_time = older_tag && get_time_of_tag(older_tag)

      issues.select do |issue|
        if issue[hash_key]
          time = Time.parse(issue[hash_key].to_s).utc

          tag_in_range_old = tag_newer_old_tag?(older_tag_time, time)

          tag_in_range_new = tag_older_new_tag?(newer_tag_time, time)

          tag_in_range = tag_in_range_old && tag_in_range_new

          tag_in_range
        else
          false
        end
      end
    end
def delete_by_time(issues, hash_key = "actual_date", older_tag = nil, newer_tag = nil)
      # in case if not tags specified - return unchanged array
      return issues if older_tag.nil? && newer_tag.nil?

      older_tag = ensure_older_tag(older_tag, newer_tag)

      newer_tag_time = newer_tag && get_time_of_tag(newer_tag)
      older_tag_time = older_tag && get_time_of_tag(older_tag)

      issues.select do |issue|
        if issue[hash_key]
          time = Time.parse(issue[hash_key].to_s).utc

          tag_in_range_old = tag_newer_old_tag?(older_tag_time, time)

          tag_in_range_new = tag_older_new_tag?(newer_tag_time, time)

          tag_in_range = tag_in_range_old && tag_in_range_new

          tag_in_range
        else
          false
        end
      end
    end
Method filter issues, that belong only specified tag range
 @param [Array] issues issues to filter
 @param [Symbol] hash_key key of date value default is :actual_date
 @param [Hash, Nil] older_tag all issues before this tag date will be excluded. May be nil, if it's first tag
 @param [Hash, Nil] newer_tag all issue after this tag will be excluded. May be nil for unreleased section
 @return [Array] filtered issues