Module: Flycal::DescriptionQuery

Defined in:
lib/flycal/description_query.rb

Overview

Shared helpers for --description filtering and --groupBy string patterns.

OR / group terms are separated by "|" (also ","). Matching is case-insensitive against event summary and description.

Class Method Summary collapse

Class Method Details

.match?(event_summary, event_description, query) ⇒ Boolean

Returns:

  • (Boolean)


15
16
17
18
19
20
21
22
# File 'lib/flycal/description_query.rb', line 15

def match?(event_summary, event_description, query)
  terms = patterns(query)
  return true if terms.empty?

  summary = event_summary.to_s.downcase
  description = event_description.to_s.downcase
  terms.any? { |term| summary.include?(term.downcase) || description.include?(term.downcase) }
end

.match_term?(event_summary, event_description, term) ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
27
28
29
30
# File 'lib/flycal/description_query.rb', line 24

def match_term?(event_summary, event_description, term)
  needle = term.to_s.downcase
  return false if needle.empty?

  event_summary.to_s.downcase.include?(needle) ||
    event_description.to_s.downcase.include?(needle)
end

.patterns(query) ⇒ Object



11
12
13
# File 'lib/flycal/description_query.rb', line 11

def patterns(query)
  query.to_s.split(/[|,]/).map(&:strip).reject(&:empty?)
end