Module: MessageStore::EventStore::StreamName::Pattern

Defined in:
lib/message_store/event_store/stream_name/pattern.rb

Class Method Summary collapse

Class Method Details

.categoryObject



29
30
31
# File 'lib/message_store/event_store/stream_name/pattern.rb', line 29

def self.category
  /(?<category>#{entity_and_type_list})/
end

.entityObject



37
38
39
# File 'lib/message_store/event_store/stream_name/pattern.rb', line 37

def self.entity
  /(?<entity>[^-:]+)/
end

.entity_and_type_listObject



33
34
35
# File 'lib/message_store/event_store/stream_name/pattern.rb', line 33

def self.entity_and_type_list
  /#{entity}#{optional(':', type_list)}/
end

.getObject



5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/message_store/event_store/stream_name/pattern.rb', line 5

def self.get
  @pattern ||= %r{
    \A

    #{optional(projection_prefix)}

    #{category}

    #{optional('-', stream_id)}

    \z
  }x
end

.optional(*parts) ⇒ Object



19
20
21
22
23
# File 'lib/message_store/event_store/stream_name/pattern.rb', line 19

def self.optional(*parts)
  inner_pattern = parts.join

  /(?:#{inner_pattern})?/
end

.projection_prefixObject



25
26
27
# File 'lib/message_store/event_store/stream_name/pattern.rb', line 25

def self.projection_prefix
  /\$[[:alnum:]]+-/
end

.stream_idObject



45
46
47
# File 'lib/message_store/event_store/stream_name/pattern.rb', line 45

def self.stream_id
  /(?<stream_id>[[:graph:]]+)/
end

.type_listObject



41
42
43
# File 'lib/message_store/event_store/stream_name/pattern.rb', line 41

def self.type_list
  /(?<type_list>[[:alnum:]+]+)/
end