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/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



130
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
# File 'lib/metamess/_run.rb', line 130

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_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



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

def collect_EventServiceInlineCresult(args)
  metaStep(args, __method__.to_s)
  ### BODY
  content_user(args)
  metamessGen(args,eval2mmsg = { 
    :to           => {t1: '[: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
# 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: '[:g][:inline]'},
    :fFields      => {v1: :id, v2: :query, v3: :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



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

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

.content_chat(args) ⇒ Object



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

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



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

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



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

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



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

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

.content_edit(args) ⇒ Object



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

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



200
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
# File 'lib/metamess/content/content_o.rb', line 200

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



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

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



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

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



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

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



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

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



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

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



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

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



187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
# File 'lib/metamess/func.rb', line 187

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
# 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)
end

.getChatContext(args) ⇒ Object



152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
# File 'lib/metamess/func.rb', line 152

def getChatContext(args)
  Dialog.clearRedis(args)
  case args[:mmsg][:fqndata][:o][:chat][:type]
  when 'private'
    context = Naming::ChatContext.Private
    
  when 'group'    
    leaveGroup(args)
      
  when 'supergroup'
    args[:x][:redis][:region] = 'chat'
    args[:x][:redis][:territory] = 'context'
    context = Dialog::RedisCached.pullCached(args)
  
  when 'channel'
    context = 'unknown'
    
  end
  
  #Check
  args[:x][:metamess][:key] = 'context'
  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



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

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



93
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
# File 'lib/metamess/_run.rb', line 93

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



209
210
211
212
213
214
215
216
# File 'lib/metamess/func.rb', line 209

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



203
204
205
206
207
# File 'lib/metamess/func.rb', line 203

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