Class: Reading::Parsing::Rows::Regular::Notes

Inherits:
Column show all
Defined in:
lib/reading/parsing/rows/regular_columns/notes.rb

Overview

Constant Summary collapse

RATING_CHANGED_WORDS =
%w[
  changed
  updated
  revised
  downgraded
  demoted
  lowered
  upgraded
  promoted
  raised
]

Constants inherited from Column

Column::SHARED_REGEXES

Class Method Summary collapse

Methods inherited from Column

column_name, flatten_into_arrays, regexes_before_formats, segment_group_separator, split_by_format?, split_by_segment?, split_by_segment_group?, to_sym, tweaks

Class Method Details

.regexes(segment_index) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/reading/parsing/rows/regular_columns/notes.rb', line 24

def self.regexes(segment_index)
  [%r{\A
    (?:(?<blurb>💬)|(?<private>🔒))?\s*
    (?<date>\d{4}/\d\d?/\d\d?)?:?\s*
    (?:
      (?:
        (?:#{RATING_CHANGED_WORDS.join("|")})?\s*rating
        |
        rating\s*(?:#{RATING_CHANGED_WORDS.join("|")})?
      )?
      (?:\s+from\s+)?
      (?:
        (?<rating_from>\d)
        \s+to\s+
        (?<rating_to>\d)
      )
      (?:\s+because\s+|\s*[[:punct:]]\s*)?
    )?
    (?<content>.+)?
  \z}xi]
end

.segment_separatorObject



20
21
22
# File 'lib/reading/parsing/rows/regular_columns/notes.rb', line 20

def self.segment_separator
  /\s*--\s*/
end