Skip to content
This repository was archived by the owner on Jan 20, 2021. It is now read-only.

Commit 9c66490

Browse files
committed
[v0.3.27] Refactored & added QueryPattern
- Added QueryPattern to extract commands easily (not tested) - Minor code refactoring Signed-off-by: Kenneth Ham <[email protected]>
1 parent bbfcad1 commit 9c66490

File tree

5 files changed

+111
-28
lines changed

5 files changed

+111
-28
lines changed

Gemfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
source "https://rubygems.org"
22

3+
gem 'activesupport-inflector'
34
gem 'addressable'
45
gem 'anybase'
56
gem 'httparty'
7+
gem 'i18n'
68
gem 'multi_json'
79
gem 'redis'
810
gem 'typhoeus'

lib/common/query_pattern.rb

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
module NUSBotgram
2+
class QueryPattern
3+
def ===(_)
4+
false
5+
end
6+
7+
def arguments(message)
8+
[]
9+
end
10+
end
11+
12+
class TextQuery < QueryPattern
13+
attr_accessor :pattern
14+
15+
def initialize(pattern = nil)
16+
@pattern = pattern
17+
end
18+
19+
def ===(message)
20+
return false unless message.type == :text
21+
return true if @pattern.nil?
22+
@pattern === message.text
23+
end
24+
25+
def arguments(message)
26+
if Regexp === @pattern
27+
query = @pattern.match(message.text)
28+
query.to_a
29+
else
30+
[message.text]
31+
end
32+
end
33+
end
34+
35+
class CommandQuery < QueryPattern
36+
attr_accessor :command
37+
38+
def initialize(command = nil, no_split: false)
39+
@command = command
40+
@no_split = no_split
41+
end
42+
43+
def ===(message)
44+
start_with = '/'
45+
46+
if !@command.nil?
47+
start_with += @command.to_s
48+
end
49+
return false if message.type != :text
50+
return false if !message.text.start_with? start_with
51+
52+
true
53+
end
54+
55+
def arguments(message)
56+
case
57+
when @no_split
58+
cmd, _, args = message.text.parition(/\s/)
59+
[cmd[1..-1], args]
60+
when @comamnd.nil?
61+
cmd, *args = message.text.split
62+
[cmd[1..-1], *args]
63+
else
64+
cmd, *args = message.text.split
65+
args
66+
end
67+
end
68+
end
69+
70+
class StarQuery < QueryPattern
71+
def ===(_)
72+
true
73+
end
74+
end
75+
76+
class FallbackQuery < StarQuery
77+
end
78+
end

lib/nus_botgram.rb

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,36 @@
22
require 'virtus'
33
require 'multi_json'
44

5-
require_relative "nusbotgram/version"
6-
7-
require_relative "nusbotgram/data_types/base"
8-
require_relative "nusbotgram/data_types/audio"
9-
require_relative "nusbotgram/data_types/channel"
10-
require_relative "nusbotgram/data_types/contact"
11-
require_relative "nusbotgram/data_types/photo_size"
12-
require_relative "nusbotgram/data_types/user"
13-
require_relative "nusbotgram/data_types/sticker"
14-
require_relative "nusbotgram/data_types/video"
15-
16-
require_relative "nusbotgram/data_types/document"
17-
require_relative "nusbotgram/data_types/force_reply"
18-
require_relative "nusbotgram/data_types/group_chat"
19-
require_relative "nusbotgram/data_types/location"
20-
require_relative "nusbotgram/data_types/message"
21-
require_relative "nusbotgram/data_types/reply_keyboard_hide"
22-
require_relative "nusbotgram/data_types/reply_keyboard_markup"
23-
require_relative "nusbotgram/data_types/update"
24-
require_relative "nusbotgram/data_types/user_profile_photos"
25-
26-
require_relative "nusbotgram/bot"
27-
require_relative "nusbotgram/api_response"
28-
29-
require_relative "engine/core"
5+
require_relative 'nusbotgram/version'
6+
7+
require_relative 'nusbotgram/data_types/base'
8+
require_relative 'nusbotgram/data_types/audio'
9+
require_relative 'nusbotgram/data_types/channel'
10+
require_relative 'nusbotgram/data_types/contact'
11+
require_relative 'nusbotgram/data_types/photo_size'
12+
require_relative 'nusbotgram/data_types/user'
13+
require_relative 'nusbotgram/data_types/sticker'
14+
require_relative 'nusbotgram/data_types/video'
15+
16+
require_relative 'nusbotgram/data_types/document'
17+
require_relative 'nusbotgram/data_types/force_reply'
18+
require_relative 'nusbotgram/data_types/group_chat'
19+
require_relative 'nusbotgram/data_types/location'
20+
require_relative 'nusbotgram/data_types/message'
21+
require_relative 'nusbotgram/data_types/reply_keyboard_hide'
22+
require_relative 'nusbotgram/data_types/reply_keyboard_markup'
23+
require_relative 'nusbotgram/data_types/update'
24+
require_relative 'nusbotgram/data_types/user_profile_photos'
25+
26+
require_relative 'nusbotgram/bot'
27+
require_relative 'nusbotgram/api_response'
28+
29+
require_relative 'engine/core'
30+
require_relative 'config/global'
31+
require_relative 'model/models'
32+
33+
require_relative 'common/algorithms'
34+
require_relative 'common/query_pattern'
3035

3136
module NUSBotgram
3237
module Errors

lib/nusbotgram/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module NUSBotgram
2-
VERSION = "0.3.26"
2+
VERSION = "0.3.27"
33
end

lib/venus.rb

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
require 'yaml'
44

55
require_relative 'nus_botgram'
6-
require_relative 'config/global'
7-
require_relative 'model/models'
86

97
module NUSBotgram
108
class Venus

0 commit comments

Comments
 (0)