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

Commit

Permalink
[v0.3.27] Refactored & added QueryPattern
Browse files Browse the repository at this point in the history
- Added QueryPattern to extract commands easily (not tested)
- Minor code refactoring

Signed-off-by: Kenneth Ham <kenneth.ham@comp.nus.edu.sg>
  • Loading branch information
kennetham committed Jul 15, 2015
1 parent bbfcad1 commit 9c66490
Show file tree
Hide file tree
Showing 5 changed files with 111 additions and 28 deletions.
2 changes: 2 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
source "https://rubygems.org"

gem 'activesupport-inflector'
gem 'addressable'
gem 'anybase'
gem 'httparty'
gem 'i18n'
gem 'multi_json'
gem 'redis'
gem 'typhoeus'
Expand Down
78 changes: 78 additions & 0 deletions lib/common/query_pattern.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
module NUSBotgram
class QueryPattern
def ===(_)
false
end

def arguments(message)
[]
end
end

class TextQuery < QueryPattern
attr_accessor :pattern

def initialize(pattern = nil)
@pattern = pattern
end

def ===(message)
return false unless message.type == :text
return true if @pattern.nil?
@pattern === message.text
end

def arguments(message)
if Regexp === @pattern
query = @pattern.match(message.text)
query.to_a
else
[message.text]
end
end
end

class CommandQuery < QueryPattern
attr_accessor :command

def initialize(command = nil, no_split: false)
@command = command
@no_split = no_split
end

def ===(message)
start_with = '/'

if !@command.nil?
start_with += @command.to_s
end
return false if message.type != :text
return false if !message.text.start_with? start_with

true
end

def arguments(message)
case
when @no_split
cmd, _, args = message.text.parition(/\s/)
[cmd[1..-1], args]
when @comamnd.nil?
cmd, *args = message.text.split
[cmd[1..-1], *args]
else
cmd, *args = message.text.split
args
end
end
end

class StarQuery < QueryPattern
def ===(_)
true
end
end

class FallbackQuery < StarQuery
end
end
55 changes: 30 additions & 25 deletions lib/nus_botgram.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,36 @@
require 'virtus'
require 'multi_json'

require_relative "nusbotgram/version"

require_relative "nusbotgram/data_types/base"
require_relative "nusbotgram/data_types/audio"
require_relative "nusbotgram/data_types/channel"
require_relative "nusbotgram/data_types/contact"
require_relative "nusbotgram/data_types/photo_size"
require_relative "nusbotgram/data_types/user"
require_relative "nusbotgram/data_types/sticker"
require_relative "nusbotgram/data_types/video"

require_relative "nusbotgram/data_types/document"
require_relative "nusbotgram/data_types/force_reply"
require_relative "nusbotgram/data_types/group_chat"
require_relative "nusbotgram/data_types/location"
require_relative "nusbotgram/data_types/message"
require_relative "nusbotgram/data_types/reply_keyboard_hide"
require_relative "nusbotgram/data_types/reply_keyboard_markup"
require_relative "nusbotgram/data_types/update"
require_relative "nusbotgram/data_types/user_profile_photos"

require_relative "nusbotgram/bot"
require_relative "nusbotgram/api_response"

require_relative "engine/core"
require_relative 'nusbotgram/version'

require_relative 'nusbotgram/data_types/base'
require_relative 'nusbotgram/data_types/audio'
require_relative 'nusbotgram/data_types/channel'
require_relative 'nusbotgram/data_types/contact'
require_relative 'nusbotgram/data_types/photo_size'
require_relative 'nusbotgram/data_types/user'
require_relative 'nusbotgram/data_types/sticker'
require_relative 'nusbotgram/data_types/video'

require_relative 'nusbotgram/data_types/document'
require_relative 'nusbotgram/data_types/force_reply'
require_relative 'nusbotgram/data_types/group_chat'
require_relative 'nusbotgram/data_types/location'
require_relative 'nusbotgram/data_types/message'
require_relative 'nusbotgram/data_types/reply_keyboard_hide'
require_relative 'nusbotgram/data_types/reply_keyboard_markup'
require_relative 'nusbotgram/data_types/update'
require_relative 'nusbotgram/data_types/user_profile_photos'

require_relative 'nusbotgram/bot'
require_relative 'nusbotgram/api_response'

require_relative 'engine/core'
require_relative 'config/global'
require_relative 'model/models'

require_relative 'common/algorithms'
require_relative 'common/query_pattern'

module NUSBotgram
module Errors
Expand Down
2 changes: 1 addition & 1 deletion lib/nusbotgram/version.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
module NUSBotgram
VERSION = "0.3.26"
VERSION = "0.3.27"
end
2 changes: 0 additions & 2 deletions lib/venus.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
require 'yaml'

require_relative 'nus_botgram'
require_relative 'config/global'
require_relative 'model/models'

module NUSBotgram
class Venus
Expand Down

0 comments on commit 9c66490

Please sign in to comment.