Module: Teems::Models::Parsing
Overview
Shared parsing helpers for API response data
Class Method Summary collapse
- .mention_display_name(entries) ⇒ Object
- .normalize_mentions(data) ⇒ Object
- .parse_files_json(files_json) ⇒ Object
- .parse_mentions(mentions_json) ⇒ Object
- .parse_time(time_str) ⇒ Object
- .strip_html(html) ⇒ Object
Class Method Details
.mention_display_name(entries) ⇒ Object
50 51 52 53 |
# File 'lib/teems/models/parsing.rb', line 50 def mention_display_name(entries) name = entries.filter_map { |entry| entry['displayName'] }.join(' ') name unless name.empty? end |
.normalize_mentions(data) ⇒ Object
41 42 43 44 45 46 47 48 |
# File 'lib/teems/models/parsing.rb', line 41 def normalize_mentions(data) return nil unless data parsed = data.is_a?(String) ? JSON.parse(data) : data parsed if parsed.is_a?(Array) rescue JSON::ParserError nil end |
.parse_files_json(files_json) ⇒ Object
24 25 26 27 28 29 30 |
# File 'lib/teems/models/parsing.rb', line 24 def parse_files_json(files_json) return [] unless files_json JSON.parse(files_json) rescue JSON::ParserError [] end |
.parse_mentions(mentions_json) ⇒ Object
32 33 34 35 36 37 38 39 |
# File 'lib/teems/models/parsing.rb', line 32 def parse_mentions(mentions_json) raw = normalize_mentions(mentions_json) return [] unless raw raw.group_by { |mention| mention['mri'] } .except(nil) .each_value.filter_map { |entries| mention_display_name(entries) } end |
.parse_time(time_str) ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/teems/models/parsing.rb', line 16 def parse_time(time_str) return nil unless time_str Time.parse(time_str) rescue ArgumentError nil end |
.strip_html(html) ⇒ Object
9 10 11 12 13 14 |
# File 'lib/teems/models/parsing.rb', line 9 def strip_html(html) return nil unless html require 'cgi' CGI.unescapeHTML(html.gsub(/<[^>]+>/, ' ')).gsub(' ', ' ').gsub(/\s+/, ' ').strip end |