Module: Teems::Services::SyncDirNaming
- Included in:
- SyncStore
- Defined in:
- lib/teems/services/sync_dir_naming.rb
Overview
Directory naming helpers for SyncStore
Constant Summary collapse
- GENERIC_LABELS =
['Group Chat', '1:1 Chat', 'Meeting Chat', 'Channel', 'Space'].freeze
- MAX_DIR_NAME_LENGTH =
100- TYPE_DIRS =
{ 'oneOnOne' => 'dms', 'group' => 'groups', 'meeting' => 'meetings', 'channel' => 'channels', 'space' => 'spaces' }.freeze
Class Method Summary collapse
- .build_dir_name(chat_id, display_name) ⇒ Object
- .sanitize_display_name(name) ⇒ Object
- .sanitize_id(id) ⇒ Object
- .type_dir(chat_type) ⇒ Object
Class Method Details
.build_dir_name(chat_id, display_name) ⇒ Object
32 33 34 35 36 37 38 39 |
# File 'lib/teems/services/sync_dir_naming.rb', line 32 def build_dir_name(chat_id, display_name) sanitized = sanitize_display_name(display_name) safe_id = sanitize_id(chat_id) return safe_id unless sanitized return sanitized unless GENERIC_LABELS.include?(display_name.strip) "#{sanitized} (#{safe_id[0, 20]})" end |
.sanitize_display_name(name) ⇒ Object
24 25 26 27 28 29 30 |
# File 'lib/teems/services/sync_dir_naming.rb', line 24 def sanitize_display_name(name) return nil if name.to_s.strip.empty? sanitized = name.strip.gsub(%r{[/\\:*?"<>|]}, '-').gsub(/\s+/, ' ') sanitized = sanitized[0, MAX_DIR_NAME_LENGTH].gsub(/[\s.]+\z/, '') sanitized.empty? ? nil : sanitized end |
.sanitize_id(id) ⇒ Object
20 21 22 |
# File 'lib/teems/services/sync_dir_naming.rb', line 20 def sanitize_id(id) id.gsub(/[:@]/, '_') end |
.type_dir(chat_type) ⇒ Object
16 |
# File 'lib/teems/services/sync_dir_naming.rb', line 16 def type_dir(chat_type) = TYPE_DIRS[chat_type] || 'other' |