Module: Dialog::Metamess

Defined in:
lib/metamess/_run.rb,
lib/metamess/func.rb,
lib/metamess/event_c.rb,
lib/metamess/event/notify_o.rb,
lib/metamess/content/content_o.rb,
lib/metamess/service/service_o.rb,
lib/metamess/event/notify_o-create_f.rb,
lib/metamess/event/notify_o-pinned_f.rb,
lib/metamess/event/notify_o-migrate_f.rb,
lib/metamess/content/content_o-media_f.rb,
lib/metamess/content/content_o-simple_f.rb,
lib/metamess/event/notify_o-chattitle_f.rb,
lib/metamess/service/service_o-inline_f.rb,
lib/metamess/content/content_o-command_f.rb,
lib/metamess/content/content_o-contact_f.rb,
lib/metamess/event/notify_o-chatmember_f.rb,
lib/metamess/service/service_o-callback_f.rb

Constant Summary collapse

ALL_CAPS =
('A'..'Z').to_a.join

Class Method Summary collapse

Class Method Details

.chatmemberCommon(args) ⇒ Object



45
46
47
48
49
50
51
52
# File 'lib/metamess/event/notify_o-chatmember_f.rb', line 45

def chatmemberCommon(args)      
  metamessGen(args,eval2mmsg = { 
    :from         => {f1: '[:chat]'},               
    :to           => {t1: '[:fqndata][:o][:chat]'},
    :fFields      => {v1: :title},
    :fFieldsOpt   => {v1: :username},                                      
  }) 
end

.chatmemberInCommon(args) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/metamess/event/notify_o-chatmember_f.rb', line 54

def chatmemberInCommon(args)
  chatmemberCommon(args)   
  content_messageDefaults(args)      
  content_messageDefaultsGet(args)        
  content_userDefaults(args)      
  metamessGen(args,eval2mmsg = { 
    :from         => {f1: '[:new_chat_members][0]'},                
    :to           => {t1: '[:fqndata][:g][:user]'},
    :fFields      => args[:x][:metamess][:userDefaults_fFields],
    :fFieldsOpt   => args[:x][:metamess][:userDefaults_fFieldsOpt],
  })        
end

.chatmemberOutCommon(args) ⇒ Object



92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/metamess/event/notify_o-chatmember_f.rb', line 92

def chatmemberOutCommon(args)
  chatmemberCommon(args)   
  content_messageDefaults(args)      
  content_messageDefaultsGet(args)        
  content_userDefaults(args)      
  metamessGen(args,eval2mmsg = { 
    :from         => {f1: '[:left_chat_member]'},                
    :to           => {t1: '[:fqndata][:g][:user]'},
    :fFields      => args[:x][:metamess][:userDefaults_fFields],
    :fFieldsOpt   => args[:x][:metamess][:userDefaults_fFieldsOpt],
  })         
end

.collect(args, fqnrun) ⇒ Object



131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
# File 'lib/metamess/_run.rb', line 131

def collect(args,fqnrun)
  until fqnrun.nil?
    fqn = args[:mmsg][:fqn]
#           Dialog.logger.debug "RUN Metamess - collect: #{fqnrun}"          
    
    if fqnrun.key?(:g) && !fqnrun.key?(:f) && !fqnrun.key?(:o) && !fqnrun.key?(:c)
      run = "#{fqn[:c].to_s.capitalize}#{fqn[:o].to_s.capitalize}#{fqn[:f].to_s.capitalize}#{fqnrun[:g].to_s.capitalize}" 
    elsif fqnrun.key?(:f) && !fqnrun.key?(:o) && !fqnrun.key?(:c)
      run = "#{fqn[:c].to_s.capitalize}#{fqn[:o].to_s.capitalize}#{fqnrun[:f].to_s.capitalize}" 
    elsif fqnrun.key?(:o) && !fqnrun.key?(:c)
      run = "#{fqn[:c].to_s.capitalize}#{fqnrun[:o].to_s.capitalize}"
    elsif fqnrun.key?(:c)
      run = "#{fqnrun[:c].to_s.capitalize}"          
    else
      Dialog.logger.error "LOST MESSAGE!! "          
      raise 'LostMessage'
    end     
  
    run = "collect_#{run}"
#           Dialog.logger.debug "RUN Metamess - begin: #{run}"
    Dialog.clear(args)
    args[:mmsg][:fqnrun] = fqnrun
    send(run.to_sym, args)
    fqnrun = args[:mmsg][:fqnrun]
    Dialog.clear(args)
#           Dialog.logger.debug "RUN Metamess - end: #{run}"
  end  
end

.collect_DialogEventNotifyMigrateChannel(args) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/metamess/event/notify_o-create_f.rb', line 32

def collect_DialogEventNotifyMigrateChannel(args)
  metaStep(args, __method__.to_s)
  ### BODY

  ### EOF BODY
  return final(args)
end

.collect_DialogEventNotifyMigrateGroup(args) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/metamess/event/notify_o-create_f.rb', line 24

def collect_DialogEventNotifyMigrateGroup(args)
  metaStep(args, __method__.to_s)
  ### BODY

  ### EOF BODY
  return final(args)
end

.collect_DialogEventNotifyMigrateMain(args) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/metamess/event/notify_o-migrate_f.rb', line 24

def collect_DialogEventNotifyMigrateMain(args)
  metaStep(args, __method__.to_s)
  ### BODY

  ### EOF BODY
  return final(args)
end

.collect_DialogEventNotifyPinnedMain(args) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/metamess/event/notify_o-pinned_f.rb', line 24

def collect_DialogEventNotifyPinnedMain(args)
  metaStep(args, __method__.to_s)
  ### BODY

  ### EOF BODY
  return final(args)
end

.collect_Event(args) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/metamess/event_c.rb', line 16

def collect_Event(args)
  metaStep(args, __method__.to_s)
  ### BODY

  ### EOF BODY
  return final(args)
end

.collect_EventContent(args) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/metamess/content/content_o.rb', line 16

def collect_EventContent(args)
  metaStep(args, __method__.to_s)
  ### BODY

  ### Message
  content_message(args)
  ### User
  content_user(args) unless args[:rmsg][:chat][:type] == 'channel'
  ### Chat
  content_chat(args) 
  ### Chat - private
  content_chat_private(args) if args[:rmsg][:chat][:type] == 'private'    
  ### Chat - group
  content_chat_adv(args) unless args[:rmsg][:chat][:type] == 'private'
  ### Channel
  content_channel(args) if args[:rmsg][:chat][:type] == 'channel' 
  
  ### Reply
  content_reply(args)   unless args[:rmsg][:reply_to_message].nil?
  ### Forward
  content_forward(args) unless args[:rmsg][:forward_date].nil?
  ### Edit
  content_edit(args)    unless args[:rmsg][:edit_date].nil?
  
  getChatContext(args)
  content_getFQN(args)
  
  ### EOF BODY
  return final(args)
end

.collect_EventContentCommand(args) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/metamess/content/content_o-command_f.rb', line 16

def collect_EventContentCommand(args)
  metaStep(args, __method__.to_s)
  ### BODY
  commandType(args)      
  ### EOF BODY
  return final(args)
end

.collect_EventContentCommandDialog(args) ⇒ Object



82
83
84
85
86
87
88
# File 'lib/metamess/content/content_o-command_f.rb', line 82

def collect_EventContentCommandDialog(args)
  metaStep(args, __method__.to_s)
  ### BODY

  ### EOF BODY
  return final(args)
end

.collect_EventContentCommandTelegram(args) ⇒ Object



90
91
92
93
94
95
96
# File 'lib/metamess/content/content_o-command_f.rb', line 90

def collect_EventContentCommandTelegram(args)
  metaStep(args, __method__.to_s)
  ### BODY

  ### EOF BODY
  return final(args)
end

.collect_EventContentContact(args) ⇒ Object



16
17
18
19
20
21
22
23
# File 'lib/metamess/content/content_o-contact_f.rb', line 16

def collect_EventContentContact(args)
  metaStep(args, __method__.to_s)
  ### BODY
  args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Content::Family::Contact::Genus.Main
  
  ### EOF BODY
  return final(args)
end

.collect_EventContentContactMain(args) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/metamess/content/content_o-contact_f.rb', line 25

def collect_EventContentContactMain(args)
  metaStep(args, __method__.to_s)
  ### BODY
  
  metamessGen(args,eval2mmsg = { 
    :from         => {f1: '[:contact]'},                  
    :to           => {t1: '[:fqndata][:f][:contact]'},
    :fFields      => {v1: :phone_number, v2: :first_name, v3: :last_name, v4: :user_id},
  }) 
  
  ### EOF BODY
  return final(args)
end

.collect_EventContentMedia(args) ⇒ Object



16
17
18
19
20
21
22
23
24
25
# File 'lib/metamess/content/content_o-media_f.rb', line 16

def collect_EventContentMedia(args)
  metaStep(args, __method__.to_s)
  ### BODY
  metamessGen(args,eval2mmsg = { 
    :to           => {t1: '[:fqndata][:f]'},
    :fFieldsOpt   => {v1: :caption},
  })        
  ### EOF BODY
  return final(args)
end

.collect_EventContentMediaAudio(args) ⇒ Object



89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/metamess/content/content_o-media_f.rb', line 89

def collect_EventContentMediaAudio(args)
  metaStep(args, __method__.to_s)
  ###
  from  = {f1: '[:audio]'}        
  eval2mmsg = defaults_media(eval2mmsg)
  eval2mmsg[:from] = from              
  metamessGen(args,eval2mmsg) 
  eval2mmsg = defaults_mediaWithDuration(eval2mmsg)
  eval2mmsg[:from] = from      
  metamessGen(args,eval2mmsg)        
  ### EOF BODY
  return final(args)
end

.collect_EventContentMediaDocument(args) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/metamess/content/content_o-media_f.rb', line 60

def collect_EventContentMediaDocument(args)
  metaStep(args, __method__.to_s)
  ### BODY
  eval2mmsg = defaults_media(eval2mmsg)
  eval2mmsg[:from]  = {f1: '[:document]'}
  metamessGen(args,eval2mmsg) 
  
  metamessGen(args,eval2mmsg = { 
    :from         => {f1: '[:document]'},
    :to           => {t1: '[:fqndata][:f][:file]'},
    :fFields      => {v1: :file_name},
    :fFieldsOpt   => {v1: :name},
  })
  
  args[:mmsg][:fqndata][:f][:file][:path] = Dialog::Wrappers.apiGetFilePath(args[:mmsg][:fqndata][:f][:file][:id])      
  ### EOF BODY
  return final(args)
end

.collect_EventContentMediaPhoto(args) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/metamess/content/content_o-media_f.rb', line 47

def collect_EventContentMediaPhoto(args)
  metaStep(args, __method__.to_s)
  ### BODY
  #args[:rmsg].photo[-1].file_size ## TODO - for array
  eval2mmsg = defaults_media(eval2mmsg)
  eval2mmsg[:from]  = {f1: '[:photo][-1]'}
  metamessGen(args,eval2mmsg)  
  
  args[:mmsg][:fqndata][:f][:file][:path] = Dialog::Wrappers.apiGetFilePath(args[:mmsg][:fqndata][:f][:file][:id])      
  ### EOF BODY
  return final(args)
end

.collect_EventContentMediaSticker(args) ⇒ Object



137
138
139
140
141
142
143
144
145
# File 'lib/metamess/content/content_o-media_f.rb', line 137

def collect_EventContentMediaSticker(args)
  metaStep(args, __method__.to_s)
  ### BODY
  eval2mmsg = defaults_media(eval2mmsg)
  eval2mmsg[:from]  = {f1: '[:sticker]'}
  metamessGen(args,eval2mmsg)       
  ### EOF BODY
  return final(args)
end

.collect_EventContentMediatVoice(args) ⇒ Object



79
80
81
82
83
84
85
86
87
# File 'lib/metamess/content/content_o-media_f.rb', line 79

def collect_EventContentMediatVoice(args)
  metaStep(args, __method__.to_s)
  ### BODY
  eval2mmsg = defaults_media(eval2mmsg)
  eval2mmsg[:from]  = {f1: '[:tvoice]'}
  metamessGen(args,eval2mmsg) 
  ### EOF BODY
  return final(args)
end

.collect_EventContentMediaVideo(args) ⇒ Object



103
104
105
106
107
108
109
110
111
# File 'lib/metamess/content/content_o-media_f.rb', line 103

def collect_EventContentMediaVideo(args)
  metaStep(args, __method__.to_s)
  ### BODY
  eval2mmsg = defaults_media(eval2mmsg)
  eval2mmsg[:from]  = {f1: '[:video]'}
  metamessGen(args,eval2mmsg)       
  ### EOF BODY
  return final(args)
end

.collect_EventContentMediaVideo_note(args) ⇒ Object



113
114
115
116
117
118
119
120
121
# File 'lib/metamess/content/content_o-media_f.rb', line 113

def collect_EventContentMediaVideo_note(args)
  metaStep(args, __method__.to_s)
  ### BODY
  eval2mmsg = defaults_media(eval2mmsg)
  eval2mmsg[:from]  = {f1: '[:video_note]'}
  metamessGen(args,eval2mmsg) 
  ### EOF BODY
  return final(args)
end

.collect_EventContentMediaVoice(args) ⇒ Object



123
124
125
126
127
128
129
130
131
132
133
134
135
# File 'lib/metamess/content/content_o-media_f.rb', line 123

def collect_EventContentMediaVoice(args)
  metaStep(args, __method__.to_s)
  ### BODY
  from  = {f1: '[:voice]'}        
  eval2mmsg = defaults_media(eval2mmsg)
  eval2mmsg[:from] = from
  metamessGen(args,eval2mmsg) 
  eval2mmsg = defaults_mediaWithDuration(eval2mmsg)
  eval2mmsg[:from] = from      
  metamessGen(args,eval2mmsg)
  ### EOF BODY
  return final(args)
end

.collect_EventContentSimple(args) ⇒ Object



16
17
18
19
20
21
22
23
# File 'lib/metamess/content/content_o-simple_f.rb', line 16

def collect_EventContentSimple(args)
  metaStep(args, __method__.to_s)
  ### BODY
  args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Content::Family::Simple::Genus.Text
  
  ### EOF BODY
  return final(args)
end

.collect_EventContentSimpleText(args) ⇒ Object



25
26
27
28
29
30
31
# File 'lib/metamess/content/content_o-simple_f.rb', line 25

def collect_EventContentSimpleText(args)
  metaStep(args, __method__.to_s)
  ### BODY
  
  ### EOF BODY
  return final(args)
end

.collect_EventNotify(args) ⇒ Object



16
17
18
19
20
21
22
23
24
# File 'lib/metamess/event/notify_o.rb', line 16

def collect_EventNotify(args)
  metaStep(args, __method__.to_s)
  ### BODY
  content_user(args) unless args[:rmsg][:chat][:type] == 'channel'
  ### Chat
  content_chat(args)      
  ### EOF BODY
  return final(args)
end

.collect_EventNotifyChatmember(args) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/metamess/event/notify_o-chatmember_f.rb', line 16

def collect_EventNotifyChatmember(args)
  metaStep(args, __method__.to_s)
  ### BODY
  args[:rmsg][:new_chat_members].each do |member|
    args[:mmsg][:fqndata][:g] ||= {}
    if member[:id] == args[:rmsg][:from][:id] && member[:is_bot] == false
      if args[:rmsg][:chat][:username].nil?
        args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Notify::Family::ChatMember::Genus.In_link
      else
        args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Notify::Family::ChatMember::Genus.In_open            
      end
    else
      args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Notify::Family::ChatMember::Genus.Invite
    end

  end 
  
  unless args[:rmsg][:left_chat_member].nil?
    args[:mmsg][:fqndata][:g] = {}
    if args[:rmsg][:left_chat_member][:id] == args[:rmsg][:from][:id] && args[:rmsg][:left_chat_member][:is_bot] == false
      args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Notify::Family::ChatMember::Genus.Leave
    else            
      args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Notify::Family::ChatMember::Genus.Ban
    end
  end        
  ### EOF BODY
  return final(args)
end

.collect_EventNotifyChatmemberBan(args) ⇒ Object



114
115
116
117
118
119
120
# File 'lib/metamess/event/notify_o-chatmember_f.rb', line 114

def collect_EventNotifyChatmemberBan(args)
  metaStep(args, __method__.to_s)
  ### BODY
  chatmemberOutCommon(args)
  ### EOF BODY
  return final(args)
end


68
69
70
71
72
73
74
# File 'lib/metamess/event/notify_o-chatmember_f.rb', line 68

def collect_EventNotifyChatmemberIn_link(args)
  metaStep(args, __method__.to_s)
  ### BODY
  chatmemberInCommon(args)        
  ### EOF BODY
  return final(args)
end

.collect_EventNotifyChatmemberIn_open(args) ⇒ Object



76
77
78
79
80
81
82
# File 'lib/metamess/event/notify_o-chatmember_f.rb', line 76

def collect_EventNotifyChatmemberIn_open(args)
  metaStep(args, __method__.to_s)
  ### BODY
  chatmemberInCommon(args)
  ### EOF BODY
  return final(args)
end

.collect_EventNotifyChatmemberInvite(args) ⇒ Object



84
85
86
87
88
89
90
# File 'lib/metamess/event/notify_o-chatmember_f.rb', line 84

def collect_EventNotifyChatmemberInvite(args)
  metaStep(args, __method__.to_s)
  ### BODY
  chatmemberInCommon(args)
  ### EOF BODY
  return final(args)
end

.collect_EventNotifyChatmemberLeave(args) ⇒ Object



106
107
108
109
110
111
112
# File 'lib/metamess/event/notify_o-chatmember_f.rb', line 106

def collect_EventNotifyChatmemberLeave(args)
  metaStep(args, __method__.to_s)
  ### BODY
  chatmemberOutCommon(args)
  ### EOF BODY
  return final(args)
end

.collect_EventNotifyChattitle(args) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/metamess/event/notify_o-chattitle_f.rb', line 16

def collect_EventNotifyChattitle(args)
  metaStep(args, __method__.to_s)
  ### BODY
  args[:mmsg][:fqn][:g] = 'new'
  ### EOF BODY
  return final(args)
end

.collect_EventNotifyChattitleNew(args) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/metamess/event/notify_o-chattitle_f.rb', line 24

def collect_EventNotifyChattitleNew(args)
  metaStep(args, __method__.to_s)
  ### BODY

  ### EOF BODY
  return final(args)
end

.collect_EventNotifyCreate(args) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/metamess/event/notify_o-create_f.rb', line 16

def collect_EventNotifyCreate(args)
  metaStep(args, __method__.to_s)
  ### BODY
  args[:mmsg][:fqn][:g] = Dialog::Naming::Class::Default::Order::Default::Genus.Main
  ### EOF BODY
  return final(args)
end

.collect_EventNotifyMigrate(args) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/metamess/event/notify_o-migrate_f.rb', line 16

def collect_EventNotifyMigrate(args)
  metaStep(args, __method__.to_s)
  ### BODY
  args[:mmsg][:fqn][:g] = Dialog::Naming::Class::Default::Order::Default::Genus.Main
  ### EOF BODY
  return final(args)
end

.collect_EventNotifyPinned(args) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/metamess/event/notify_o-pinned_f.rb', line 16

def collect_EventNotifyPinned(args)
  metaStep(args, __method__.to_s)
  ### BODY
  args[:mmsg][:fqn][:g] = Dialog::Naming::Class::Default::Order::Default::Genus.Main
  ### EOF BODY
  return final(args)
end

.collect_EventService(args) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/metamess/service/service_o.rb', line 16

def collect_EventService(args)
  metaStep(args, __method__.to_s)
  ### BODY

  ### EOF BODY
  return final(args)
end

.collect_EventServiceCallbackQuery(args) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/metamess/service/service_o-callback_f.rb', line 16

def collect_EventServiceCallbackQuery(args)
  metaStep(args, __method__.to_s)
  ### BODY
  content_user(args)
  content_message(args) if args[:rmsg].has_key?(:message)
  #location # TODO
  metamessGen(args,eval2mmsg = { 
    :to           => {t1: '[:g][:callback]'},
    :fFields      => {v1: :id, v2: :chat_instance},
    :fFieldsOpt   => {v1: :inline_message_id, v2: :data},
  })
  ### EOF BODY
  return final(args)
end

.collect_EventServiceInline(args) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/metamess/service/service_o-inline_f.rb', line 16

def collect_EventServiceInline(args)
  metaStep(args, __method__.to_s)
  ### BODY

  ### EOF BODY
  return final(args)
end

.collect_EventServiceInlineCresult(args) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/metamess/service/service_o-inline_f.rb', line 40

def collect_EventServiceInlineCresult(args)
  metaStep(args, __method__.to_s)
  ### BODY
  content_user(args)
  metamessGen(args,eval2mmsg = { 
    :to           => {t1: '[:fqndata][:g][:inline]'},
    :fFields      => {v1: :result_id, v2: :query},
    :tFields      => {v1: :id, v2: :query},                                      
    :fFieldsOpt   => {v1: :inline_message_id},
  })        
  ### EOF BODY
  return final(args)
end

.collect_EventServiceInlineQuery(args) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/metamess/service/service_o-inline_f.rb', line 25

def collect_EventServiceInlineQuery(args)
  metaStep(args, __method__.to_s)
  ### BODY
  content_user(args)
  #location # TODO
  metamessGen(args,eval2mmsg = { 
    :to           => {t1: '[:fqndata][:g][:inline]'},
    :fFields      => {v1: :id, v2: :query},
    :fFieldsOpt   => {v1: :offset},                                      
  })        
  ### EOF BODY
  return final(args)
end

.commandType(args) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/metamess/content/content_o-command_f.rb', line 25

def commandType(args)
  case args[:mmsg][:fqndata][:o][:msg][:textStartWith]
  when /^_[а-яА-ЯёЁa-zA-Z0-9]..*.:.*[а-яА-ЯёЁa-zA-Z0-9]+$/
    delimiter = ":"
    args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Content::Family::Command::Genus.Dialog
  when /^_[а-яА-ЯёЁa-zA-Z0-9]*[^:]*\s*[а-яА-ЯёЁa-zA-Z0-9]+$/
    delimiter = "\s"
    args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Content::Family::Command::Genus.Dialog
  when /^\/[а-яА-ЯёЁa-zA-Z0-9]..*.:.*[а-яА-ЯёЁa-zA-Z0-9]+$/
    delimiter = ":"
    args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Content::Family::Command::Genus.Telegram
  when /^\/[а-яА-ЯёЁa-zA-Z0-9]*[^:]*\s*[а-яА-ЯёЁa-zA-Z0-9]+$/
    delimiter = "\s"   
    args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Content::Family::Command::Genus.Telegram
  else
    delimiter = false
  end
  Dialog.logger.debug("######  delimiter - #{delimiter} ")      
  
  if ! delimiter == false
    bot_fullcommand = args[:mmsg][:fqndata][:o][:msg][:textStartWith].split(delimiter)
    bot_command = bot_fullcommand[0].strip[1..-1].downcase
    
    if /.@.*/.match?(bot_command)
      if /.@#{args[:globals][:botUsername].downcase}.*/.match?(bot_command)
        bot_command = bot_command.split('@')[0]
      else
        Dialog.logger.error("######  COMMAND FOR OTHER BOT! ")
        raise
      end
    end
    
    if bot_fullcommand[1].nil?
      bot_subcommand = '_main' 
    else
      bot_fullcommand.shift
      bot_fullcommand.each do |v| 
        if /^#.*|^@.*/.match?(v)
          next
        else
          bot_subcommand = "#{bot_subcommand}_#{v.downcase}"
        end
      end
      bot_subcommand = '_main' if  bot_subcommand == ''          
    end
    
  else
    bot_command = args[:mmsg][:fqndata][:o][:msg][:textStartWith].strip[1..-1].downcase 
    bot_subcommand = '_main'
  end
  
  args[:mmsg][:fqndata][:f][:bot_command] = bot_command
  args[:mmsg][:fqndata][:f][:bot_subcommand] = bot_subcommand
end

.content_channel(args) ⇒ Object



176
177
178
179
180
181
# File 'lib/metamess/content/content_o.rb', line 176

def content_channel(args)      
  metamessGen(args,eval2mmsg = { 
    :to           => {t1: '[:fqndata][:o][:from]'},
    :fFieldsOpt   => {v1: :author_signature},                                      
  })           
end

.content_chat(args) ⇒ Object



147
148
149
150
151
152
153
154
# File 'lib/metamess/content/content_o.rb', line 147

def content_chat(args)
  content_chatDefaults(args)      
  metamessGen(args,eval2mmsg = { 
    :from         => {f1: '[:chat]'},               
    :to           => {t1: '[:fqndata][:o][:chat]'},
    :fFields      => args[:x][:metamess][:chatDefaults_fFields],
  })         
end

.content_chat_adv(args) ⇒ Object



166
167
168
169
170
171
172
173
174
# File 'lib/metamess/content/content_o.rb', line 166

def content_chat_adv(args)      
  metamessGen(args,eval2mmsg = { 
    :from         => {f1: '[:chat]'},               
    :to           => {t1: '[:fqndata][:o][:chat]'},
    :fFields      => {v1: :title},
    :fFieldsOpt   => {v1: :pinned_message, v2: :invite_link, v3: :username},     
    :tFieldsOpt   => {v1: :pinned_message, v2: :invitelink_name, v3: :chatlink_name},                                                                            
  })         
end

.content_chat_private(args) ⇒ Object

Chat - private



157
158
159
160
161
162
163
# File 'lib/metamess/content/content_o.rb', line 157

def content_chat_private(args)              
  metamessGen(args,eval2mmsg = { 
    :from         => {f1: '[:chat]'},                
    :to           => {t1: '[:fqndata][:o][:chat]'},
    :fFields      => {v1: :first_name, v2: :last_name, v3: :username},
  })             
end

.content_chatDefaults(args) ⇒ Object

Chat



143
144
145
# File 'lib/metamess/content/content_o.rb', line 143

def content_chatDefaults(args)
  args[:x][:metamess][:chatDefaults_fFields]  = {v1: :id, v2: :type}
end

.content_edit(args) ⇒ Object



232
233
234
235
236
237
238
239
240
241
242
# File 'lib/metamess/content/content_o.rb', line 232

def content_edit(args)
  args[:mmsg][:actionsd][:edit] = {}          
  args[:mmsg][:fqndata][:o][:msg][:msgtype] =  Dialog::Naming::Class::Event::Order::Content::Type.Edit
  args[:mmsg][:actions] << args[:mmsg][:fqndata][:o][:msg][:msgtype]  

  metamessGen(args,eval2mmsg = { 
    :to           => {t1: '[:actionsd][:edit]'},
    :fFields      => {v1: :edit_date},
    :tFields      => {v1: :date},
  })
end

.content_forward(args) ⇒ Object



201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
# File 'lib/metamess/content/content_o.rb', line 201

def content_forward(args)
  args[:mmsg][:fqndata][:o][:msg][:msgtype] =  Dialog::Naming::Class::Event::Order::Content::Type.Forward
  args[:mmsg][:actions] << args[:mmsg][:fqndata][:o][:msg][:msgtype]
  args[:mmsg][:actionsd][:forward] = {}
  #forward_signature
  
  content_userDefaults(args)      
  metamessGen(args,eval2mmsg = { 
    :from         => {f1: '[:forward_from]'},                                      
    :to           => {t1: '[:actionsd]'},
    :fFields      => args[:x][:metamess][:userDefaults_fFields],
    :fFieldsOpt   => args[:x][:metamess][:userDefaults_fFieldsOpt],                                      
  })        

 
  metamessGen(args,eval2mmsg = { 
    :to           => {t1: '[:actionsd][:forward][:msg]'},
    :fFields      => {v1: :forward_date},
    :tFields      => {v1: :date},                                      
    :fFieldsOpt   => {v1: :forward_from_message_id},
    :tFieldsOpt   => {v1: :id},                                      
  })        

  metamessGen(args,eval2mmsg = { 
    :to           => {t1: '[:actionsd][:forward][:chat]'},
    :fFieldsOpt      => {v1: :forward_from_chat},
    :tFieldsOpt      => {v1: :id},
  })        
        
end

.content_getFQN(args) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/metamess/content/content_o.rb', line 60

def content_getFQN(args)    
  content_getFQNMedia(args)
  
  if args[:mmsg][:fqnrun][:f].nil?
    if args[:rmsg].respond_to?(:contact)   && !args[:rmsg].contact.nil?
            args[:mmsg][:fqnrun][:f] = Dialog::Naming::Class::Event::Order::Content::Family.Contact
    elsif args[:rmsg].respond_to?(:location)  && !args[:rmsg].location.nil?
            args[:mmsg][:fqnrun][:f] = Dialog::Naming::Class::Event::Order::Content::Family.Location
    elsif args[:rmsg].respond_to?(:invoice)   && !args[:rmsg].invoice.nil?
            args[:mmsg][:fqnrun][:f] = Dialog::Naming::Class::Event::Order::Content::Family.Invoice
    end
  end
    
  if args[:mmsg][:fqnrun][:f].nil?
    if args[:mmsg][:fqndata][:o][:msg].key?(:textStartWith)
      case args[:mmsg][:fqndata][:o][:msg][:textStartWith]
      when ->(s) { (s.size < 70  and ((s[0] == '_') or (s[0] == '/'))) }
        args[:mmsg][:fqnrun][:f] = Dialog::Naming::Class::Event::Order::Content::Family.Command
      else
        args[:mmsg][:fqnrun][:f] = Dialog::Naming::Class::Event::Order::Content::Family.Simple
      end
    else
      args[:mmsg][:fqnrun][:f] = Dialog::Naming::Class::Event::Order::Content::Family.Notext
    end
  end
  
end

.content_getFQNMedia(args) ⇒ Object

Content methods



48
49
50
51
52
53
54
55
56
57
58
# File 'lib/metamess/content/content_o.rb', line 48

def content_getFQNMedia(args)
  args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Content::Family::Media::Genus.Photo if args[:rmsg].respond_to?(:photo)           && !args[:rmsg].photo.empty?
  args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Content::Family::Media::Genus.Document if args[:rmsg].respond_to?(:document)     && !args[:rmsg].document.nil?
  args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Content::Family::Media::Genus.Voice if args[:rmsg].respond_to?(:voice)           && !args[:rmsg].voice.nil?
  args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Content::Family::Media::Genus.Audio if args[:rmsg].respond_to?(:audio)           && !args[:rmsg].audio.nil?
  args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Content::Family::Media::Genus.Video if args[:rmsg].respond_to?(:video)           && !args[:rmsg].video.nil?
  args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Content::Family::Media::Genus.Videonote if args[:rmsg].respond_to?(:video_note) && !args[:rmsg].video_note.nil?
  args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Content::Family::Media::Genus.Sticker if args[:rmsg].respond_to?(:sticker)       && !args[:rmsg].sticker.nil?   
  
  args[:mmsg][:fqnrun][:f] = Dialog::Naming::Class::Event::Order::Content::Family.Media unless args[:mmsg][:fqnrun][:g].nil?
end

.content_message(args) ⇒ Object



116
117
118
119
120
121
122
# File 'lib/metamess/content/content_o.rb', line 116

def content_message(args)
  content_messageDefaults(args)      
  content_messageDefaultsGet(args)
  
  args[:mmsg][:fqndata][:o][:msg][:msgtype] =  Dialog::Naming::Class::Event::Order::Content::Type.Original
  args[:rmsg].text.nil? ? true : args[:mmsg][:fqndata][:o][:msg][:textStartWith] = args[:rmsg].text.split[0..10].join(' ')           
end

.content_messageDefaults(args) ⇒ Object

Message



102
103
104
105
# File 'lib/metamess/content/content_o.rb', line 102

def content_messageDefaults(args)
  args[:x][:metamess][:messageDefaults_fFields]  = {v1: :message_id, v2: :date}
  args[:x][:metamess][:messageDefaults_tFields]  = {v1: :id, v2: :date}
end

.content_messageDefaultsGet(args) ⇒ Object



107
108
109
110
111
112
113
114
# File 'lib/metamess/content/content_o.rb', line 107

def content_messageDefaultsGet(args)
  metamessGen(args,eval2mmsg = { 
    :to           => {t1: '[:fqndata][:o][:msg]'},
    :fFields      => args[:x][:metamess][:messageDefaults_fFields],
    :tFields      => args[:x][:metamess][:messageDefaults_tFields],
    :fFieldsOpt   => {v1: :text}                               
  })
end

.content_reply(args) ⇒ Object



184
185
186
187
188
189
190
191
192
193
194
195
196
197
# File 'lib/metamess/content/content_o.rb', line 184

def content_reply(args)
  args[:mmsg][:fqndata][:o][:msg][:msgtype] =  Dialog::Naming::Class::Event::Order::Content::Type.Reply
  args[:mmsg][:actions] << args[:mmsg][:fqndata][:o][:msg][:msgtype]     
  
  #callback
  args[:rmsgMain] = Hash.new.merge(args[:rmsg])
  args[:rmsg] = args[:rmsg][:reply_to_message]
  args[:mmsgMain] = Hash.new.merge(args[:mmsg])
  args[:mmsg] = {}; init(args); args[:mmsgCallback] = Dialog::Metamess.collect_EventContent(args)
  args[:mmsg] = args[:mmsgMain]; args.delete(:mmsgMain)
  args[:rmsg] = args[:rmsgMain]; args.delete(:rmsgMain)
  args[:mmsg][:actionsd][:reply] = args[:mmsgCallback]; args.delete(:mmsgCallback)
  
end

.content_user(args) ⇒ Object



131
132
133
134
135
136
137
138
139
140
# File 'lib/metamess/content/content_o.rb', line 131

def content_user(args)
  content_userDefaults(args)      

  metamessGen(args,eval2mmsg = { 
    :from         => {f1: '[:from]'},                
    :to           => {t1: '[:fqndata][:o][:from]'},
    :fFields      => args[:x][:metamess][:userDefaults_fFields],
    :fFieldsOpt   => args[:x][:metamess][:userDefaults_fFieldsOpt],
  })        
end

.content_userDefaults(args) ⇒ Object

User



126
127
128
129
# File 'lib/metamess/content/content_o.rb', line 126

def content_userDefaults(args)
  args[:x][:metamess][:userDefaults_fFields]    = {v1: :id, v2: :first_name, v3: :username, v4: :is_bot}
  args[:x][:metamess][:userDefaults_fFieldsOpt] = {v1: :last_name, v2: :language_code}
end

.defaults_media(eval2mmsg) ⇒ Object



28
29
30
31
32
33
34
35
36
# File 'lib/metamess/content/content_o-media_f.rb', line 28

def defaults_media(eval2mmsg)
  eval2mmsg = { 
    :to           => {t1: '[:fqndata][:f][:file]'},
    :fFields      => {v1: :file_id, v2: :file_size},
    :tFields      => {v1: :id, v2: :size},
    :fFieldsOpt   => {v1: :mime_type},
  }
  return eval2mmsg
end

.defaults_mediaWithDuration(eval2mmsg) ⇒ Object



38
39
40
41
42
43
44
# File 'lib/metamess/content/content_o-media_f.rb', line 38

def defaults_mediaWithDuration(eval2mmsg)
  eval2mmsg = { 
    :to           => {t1: '[:fqndata][:f][:file]'},
    :fFieldsOpt   => {v1: :duration},
  }
  return eval2mmsg
end

.eval2mmsg_simplemap(eval2mmsg) ⇒ Object

TODO doubled functionality



114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# File 'lib/metamess/func.rb', line 114

def eval2mmsg_simplemap(eval2mmsg) # TODO doubled functionality
  map = {}
  if eval2mmsg.key?(:fFields)
    eval2mmsg[:tFields] = eval2mmsg[:fFields] unless eval2mmsg.key?(:tFields)          
    if eval2mmsg[:fFields].size == eval2mmsg[:tFields].size 
      map[:base] = {}
      i = 1
      while i <= eval2mmsg[:tFields].size  do
        map[:base][:"m#{i}".to_sym] = {from: 'f1', to: 't1'}
        i+=1
      end
    else
      Dialog.logger.error "EVAL map not equal"        
      raise
    end    
  end
  
  if eval2mmsg.key?(:fFieldsOpt)
    eval2mmsg[:tFieldsOpt] = eval2mmsg[:fFieldsOpt] unless eval2mmsg.has_key?(:tFieldsOpt)
    if eval2mmsg[:fFieldsOpt].size == eval2mmsg[:tFieldsOpt].size 
      
      map[:opt] = {}
      i = 1
      while i <= eval2mmsg[:tFieldsOpt].size  do
        map[:opt][:"m#{i}".to_sym] = {from: 'f1', to: 't1'}
        i+=1
      end
    else
      Dialog.logger.error "EVAL map not equal"        
      raise
    end
  end  
  
  #       Dialog.logger.debug "#{map}"          
  return map
end

.final(args) ⇒ Object



163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
# File 'lib/metamess/func.rb', line 163

def final(args)      
    if args[:mmsg][:fqn].key?(:g)
      args[:mmsg].delete(:fqnrun)
    elsif args[:mmsg][:fqn].key?(:f)
      args[:mmsg][:fqnrun].key?(:g) ? args[:mmsg][:fqnrun].delete(:f) : nofinal(args, 'f->g')
    elsif args[:mmsg][:fqn].key?(:o)
      args[:mmsg][:fqnrun].key?(:f) ? args[:mmsg][:fqnrun].delete(:o) : nofinal(args, 'o->f')          
    elsif args[:mmsg][:fqn].key?(:c)
      args[:mmsg][:fqnrun].key?(:o) ? args[:mmsg][:fqnrun].delete(:c) : nofinal(args, 'c->o')          
    else          
      Dialog.logger.error "### FINAL GOES WRONG"
    end
    
  return args[:mmsg]
end

.firstpoint(args) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/metamess/_run.rb', line 39

def firstpoint(args)
  Dialog.clear(args)
  #       args[:mmsg] = Concurrent::Hash.new
  init(args)
  fqnrun = {}
  
  fqnrun[:c] =  Dialog::Naming::Class.Event
  case args[:rmsg].class.to_s
  when 'Telegram::Bot::Types::InlineQuery'
    fqnrun[:o] = Dialog::Naming::Class::Event::Order.Service
    fqnrun[:f] = Dialog::Naming::Class::Event::Order::Service::Family.Inline
    fqnrun[:g] = Dialog::Naming::Class::Event::Order::Service::Family::Inline::Genus.Query
    
  when 'Telegram::Bot::Types::ChosenInlineResult'
    fqnrun[:o] = Dialog::Naming::Class::Event::Order.Service
    fqnrun[:f] = Dialog::Naming::Class::Event::Order::Service::Family.Inline
    fqnrun[:g] = Dialog::Naming::Class::Event::Order::Service::Family::Inline::Genus.Cresult
    
  when 'Telegram::Bot::Types::CallbackQuery'
    fqnrun[:o] = Dialog::Naming::Class::Event::Order.Service
    fqnrun[:f] = Dialog::Naming::Class::Event::Order::Service::Family.Callback
    fqnrun[:g] = Dialog::Naming::Class::Event::Order::Service::Family::Callback::Genus.Query
  when 'Telegram::Bot::Types::Message'
    message_identificate(args,fqnrun)
  end
  collect(args,fqnrun)
  Dialog.logger.info("## RESULT of Metamess: #{args[:mmsg]}\n")  
  
  ##needs refactor to lambda
  args[:rmsg].to_h.each do |k1, v1|
    unless ['NilClass', 'Array', 'Integer', 'String'].include?(v1.class.to_s)
      v1.to_h.each do |k2, v2|
        args[:rmsgcheck][k1.to_sym] ||= {}    
        rmsgcheckForm(args, k1, v1, k2, v2)
      end
    else
      rmsgcheckForm(args, k1, v1)
    end
  end
  ##
#         Dialog.logger.debug("################## rmsgcheck - #{args[:rmsgcheck]}")
#         Dialog.logger.debug("################## metacheck - #{args[:metacheck]}")
  diff = args[:rmsgcheck].diff(args[:metacheck])
  unless diff == {}
    Dialog.logger.error("@@@@ !!!! Metacheck diff: #{diff}")
    Dialog.logger.info "RAW MSG:\n#{args[:rmsg].to_hash}\n"                        
  end
  args[:metacheck] = {}
  args[:rmsg] = {}
  args[:perf][:metamess] = Time.now                                
  Dialog::Canvas.run(args)
  args[:perf][:canvas] = Time.now                                
end

.getChatContext(args) ⇒ Object



88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/metamess/content/content_o.rb', line 88

def getChatContext(args)
  case args[:mmsg][:fqndata][:o][:chat][:type]
  when 'private'
    context = Naming::ChatContext.Private
  when 'group'    
    leaveGroup(args)          
  when 'supergroup'
    context = Dialog::Storage::Redis.pullCached({ :type => 'chat', :key => 'context'}, args)
  end
  
  context.nil? ? nodata(args: args, from: 'context') : args[:mmsg][:fqndata][:o][:chat][:context] = context             
end

.getStep(method) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/metamess/func.rb', line 19

def getStep(method)
  step = {}
  case method.count(ALL_CAPS)
  when 1
    step[:prev] = false
    step[:curr] = :c
    step[:next] = :o
  when 2
    step[:prev] = :c
    step[:curr] = :o
    step[:next] = :f
  when 3
    step[:prev] = :o
    step[:curr] = :f
    step[:next] = :g
  when 4
    step[:prev] = :g
    step[:curr] = :g
    step[:next] = true         
  end
  return step
end

.init(args) ⇒ Object



18
19
20
21
22
23
# File 'lib/metamess/_run.rb', line 18

def init(args)
  args[:mmsg] = {actions: [], actionsd: {}, fqn: {}, fqndata: {}, fqnrun: {}}
  nestedHash = lambda {|h,k| h[k] = Hash.new(&nestedHash)}
  args[:rmsgcheck] = Hash.new  
  args[:metacheck] = Hash.new(&nestedHash)        
end

.leaveGroup(args) ⇒ Object



153
154
155
156
157
158
159
160
161
# File 'lib/metamess/func.rb', line 153

def leaveGroup(args)
  args[:api][:op] = 'Message'          
  args[:smsg] = {}           
  args[:smsg][:chat_id] = args[:rmsg].chat.id
  args[:smsg][:text] = I18n.t('_action_group2supergroup')
  Dialog::BotApi.apiActionSend(args) 
  args[:api][:op] = 'leaveChat'                
  Dialog::BotApi.apiAction(args) 
end

.message_identificate(args, fqnrun) ⇒ Object



94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/metamess/_run.rb', line 94

def message_identificate(args,fqnrun) 
  rmsg= args[:rmsg]
  if    rmsg.respond_to?(:new_chat_members)  && !rmsg.new_chat_members.empty? ||
        rmsg.respond_to?(:left_chat_member)  && !rmsg.left_chat_member.nil?
          fqnrun[:o] = Dialog::Naming::Class::Event::Order.Notify
          fqnrun[:f] = Dialog::Naming::Class::Event::Order::Notify::Family.ChatMember
  elsif rmsg.respond_to?(:new_chat_photo)    && !rmsg.new_chat_photo.empty? ||
        rmsg.respond_to?(:delete_chat_photo) && !rmsg.delete_chat_photo.nil?
          fqnrun[:o] = Dialog::Naming::Class::Event::Order.Notify
          fqnrun[:f] = Dialog::Naming::Class::Event::Order::Notify::Family.ChatPhoto
  elsif rmsg.respond_to?(:new_chat_title)    && !rmsg.new_chat_title.nil?
          fqnrun[:o] = Dialog::Naming::Class::Event::Order.Notify
          fqnrun[:f] = Dialog::Naming::Class::Event::Order::Notify::Family.ChatTitle              
  elsif rmsg.respond_to?(:group_chat_created)&& !rmsg.group_chat_created.nil? ||
        rmsg.respond_to?(:supergroup_chat_created)&& !rmsg.supergroup_chat_created.nil?
        rmsg.respond_to?(:channel_chat_created)   && !rmsg.channel_chat_created.nil?        
          fqnrun[:o] = Dialog::Naming::Class::Event::Order.Notify
          fqnrun[:f] = Dialog::Naming::Class::Event::Order::Notify::Family.Create
  elsif rmsg.respond_to?(:migrate_to_chat_id)&& !rmsg.migrate_to_chat_id.nil? ||
        rmsg.respond_to?(:migrate_from_chat_id)   && !rmsg.migrate_from_chat_id.nil?
          fqnrun[:o] = Dialog::Naming::Class::Event::Order.Notify
          fqnrun[:f] = Dialog::Naming::Class::Event::Order::Notify::Family.Migrate
  elsif rmsg.respond_to?(:pinned_message)    && !rmsg.pinned_message.nil?
          fqnrun[:o] = Dialog::Naming::Class::Event::Order.Notify
          fqnrun[:f] = Dialog::Naming::Class::Event::Order::Notify::Family.Pinned
  elsif rmsg.respond_to?(:connected_website)    && !rmsg.connected_website.nil?
          fqnrun[:o] = Dialog::Naming::Class::Event::Order.Notify
          fqnrun[:f] = Dialog::Naming::Class::Event::Order::Notify::Family.Login
  elsif rmsg.respond_to?(:passport_data)    && !rmsg.passport_data.nil?
          fqnrun[:o] = Dialog::Naming::Class::Event::Order.Notify
          fqnrun[:f] = Dialog::Naming::Class::Event::Order::Notify::Family.Passport    
  else
        fqnrun[:o] = Dialog::Naming::Class::Event::Order.Content
  end
end

.metamessGen(args, eval2mmsg) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'lib/metamess/func.rb', line 48

def metamessGen(args,eval2mmsg)
  toPrefix = 'args[:mmsg]'
  ## BUG !!!! EVAL!!! - migrate to instance_variable_set
  eval2mmsg[:to].each do |num, val|
    begin
  #           Dialog.logger.debug "### checking hash: #{val}" 
      val = "#{toPrefix}#{val}"
      eval("#{val}.length")        
    rescue NoMethodError => @e        
  #           Dialog.logger.debug "### create hash: #{val}"        
      eval("#{val} = {}")
    end
  end
  
  eval2mmsg[:map] = eval2mmsg_simplemap(eval2mmsg) unless eval2mmsg.has_key?(:map)
  
  eval2mmsg[:map].each do |mapType, mapTypeData|
    mapTypeData.each do |pk, pv|  pk[1..-1]
      if mapType.to_s == 'opt'
        tFields = 'tFieldsOpt'; fFields = 'fFieldsOpt'; opt = true
#               Dialog.logger.debug "### 1 type: #{mapType}, tFields: #{tFields}, res: #{eval("#{eval2mmsg["#{tFields}".to_sym]}")}"
      else
        tFields = 'tFields'; fFields = 'fFields'; opt = false   
#               Dialog.logger.debug "### 2 type: #{mapType}, tFields: #{tFields}, res: #{eval("#{eval2mmsg["#{tFields}".to_sym]}")}"                    
      end
      
      to = "#{toPrefix}#{eval2mmsg[:to][pv[:to].to_sym]}#{[eval2mmsg["#{tFields}".to_sym]["v#{pk[1..-1]}".to_sym]]}"
      if eval2mmsg.has_key?(:from)
        from = "#{eval2mmsg[:from][pv[:from].to_sym]}#{[eval2mmsg["#{fFields}".to_sym]["v#{pk[1..-1]}".to_sym]]}"
      else
        from = "#{[eval2mmsg["#{fFields}".to_sym]["v#{pk[1..-1]}".to_sym]]}"
      end
      
      ## refactor to lambda
      if opt == true 
        begin
          eval("args[:rmsg]#{from}.nil?") ? metacheck = false : metacheck = "args[:metacheck]#{from}" 
        rescue NoMethodError => @e    
           metacheck = false
        end
      else
        metacheck = "args[:metacheck]#{from}" 
      end
#             Dialog.logger.catch "### opt::#{opt}, from::#{from}, metacheck::#{metacheck}"            
      eval("#{metacheck} = 1") unless metacheck == false
      
      from = "args[:rmsg]#{from}"
#             Dialog.logger.debug "### Metamessage - FROM #{from};\tTO: #{to}, type: #{mapType}"
      if mapType.to_s == 'opt'
        nilFunction = true
      else
        nilFunction = "nodata(args: args,from: from)"
      end
      begin
        eval("#{from}.nil? ? #{nilFunction} : #{to} = #{from}")
      rescue NoMethodError => @e
        Dialog.logger.debug "No method #{from}"  if nilFunction == true
      rescue TypeError => @e  
        Dialog.logger.error "Problems with mapping type: #{mapType}, #{tFields}->#{fFields}, may be optional?"        
        raise     
      end
      ##
    end
  end      
end

.metaStep(args, method) ⇒ Object



185
186
187
188
189
190
191
192
# File 'lib/metamess/func.rb', line 185

def  metaStep(args, method)
  method = method.split('_')[1]
  step = getStep(method)
  
  args[:mmsg][:fqn][step[:curr]] = args[:mmsg][:fqnrun][step[:curr]]
  args[:mmsg][:fqndata][step[:curr]] = {}
  args[:x][:metamess][:m] = method
end

.nodata(args:, from:) ⇒ Object

Raises:

  • (TypeError)


42
43
44
45
46
# File 'lib/metamess/func.rb', line 42

def nodata(args: , from: )
  args[:x][:metamess][:nodata] = "### NO DATA FROM METAMESS RUNNER: Order '#{args[:x][:metamess][:o]}', method '#{args[:x][:metamess][:m]}' from '#{from}' ###"
  Dialog.logger.error "#{args[:x][:metamess][:nodata]}"
  raise TypeError
end

.nofinal(args, step) ⇒ Object



179
180
181
182
183
# File 'lib/metamess/func.rb', line 179

def nofinal(args, step)
  error = "### NO next FQN step (#{step}) for : '#{args[:mmsg]}' ###"
  Dialog.logger.error "#{error}"
  raise 'LostFQN'      
end

.rmsgcheckForm(args, k1, v1, k2 = true, v2 = true) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/metamess/_run.rb', line 25

def rmsgcheckForm(args, k1, v1, k2=true, v2=true)
  vNext = true
  v2 == true ? value = v1 : value = v2
  value.kind_of?(Array) ? vNext = value.empty? : vNext = value.nil?   
 
#         Dialog.logger.debug "### k2 - #{k2}, value - #{value}, vNext - #{vNext}"            
  if v2 == true
    args[:rmsgcheck][k1.to_sym] = 1 if vNext == false        
  else
    args[:rmsgcheck][k1.to_sym][k2.to_sym] = 1 if vNext == false     
  end
end