blur 1.8.6 → 2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +0 -11
- data/executables/blur +62 -0
- data/library/blur.rb +37 -12
- data/library/blur/callbacks.rb +59 -0
- data/library/blur/channel.rb +75 -0
- data/library/blur/client.rb +122 -91
- data/library/blur/enhancements.rb +1 -3
- data/library/blur/handling.rb +117 -125
- data/library/blur/logging.rb +41 -0
- data/library/blur/network.rb +54 -36
- data/library/blur/network/connection.rb +2 -2
- data/library/blur/script.rb +124 -117
- data/library/blur/script_cache.rb +43 -0
- data/library/blur/user.rb +105 -0
- data/library/blur/version.rb +1 -1
- metadata +17 -21
- data/library/blur/encryption.rb +0 -17
- data/library/blur/encryption/base64.rb +0 -71
- data/library/blur/encryption/fish.rb +0 -80
- data/library/blur/evaluable.rb +0 -13
- data/library/blur/extension.rb +0 -42
- data/library/blur/network/channel.rb +0 -91
- data/library/blur/network/command.rb +0 -83
- data/library/blur/network/user.rb +0 -106
- data/library/blur/script/cache.rb +0 -77
- data/library/blur/script/commands.rb +0 -77
- data/library/blur/script/dsl.rb +0 -52
@@ -1,77 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
module Blur
|
4
|
-
class Script
|
5
|
-
# The +Cache+ class enables data storing inside Blur and it scripts.
|
6
|
-
#
|
7
|
-
# What it does is simply store a hash, and act like it is that hash.
|
8
|
-
#
|
9
|
-
# When the client closes, it sends a message to all available scripts
|
10
|
-
# and then those scripts tells the cache to save, in order to remember
|
11
|
-
# that data and reload it at the next run.
|
12
|
-
#
|
13
|
-
# Cache can then save the contents of the hash to a yaml file that persists
|
14
|
-
# in the ./cache/ directory.
|
15
|
-
#
|
16
|
-
# That same file is then loaded once needed again.
|
17
|
-
class Cache
|
18
|
-
# Get the path to the cache directory (./cache/)
|
19
|
-
def self.path
|
20
|
-
%{#{File.dirname File.expand_path $0}/cache}
|
21
|
-
end
|
22
|
-
|
23
|
-
# Check if there exists a cache file for the script with name +name+.
|
24
|
-
def self.exists? name
|
25
|
-
File.exists? "#{path}/#{name}.yml"
|
26
|
-
end
|
27
|
-
|
28
|
-
# Get a cache value by key.
|
29
|
-
def [] key; @hash[key] end
|
30
|
-
|
31
|
-
# Set a cache value by key.
|
32
|
-
def []= key, value; @hash[key] = value end
|
33
|
-
|
34
|
-
# Instantiate a cache with a script reference.
|
35
|
-
def initialize script
|
36
|
-
@hash = {}
|
37
|
-
@script = script
|
38
|
-
end
|
39
|
-
|
40
|
-
# Save all internal data to a yaml file in the cache directory.
|
41
|
-
def save
|
42
|
-
directory = File.dirname path
|
43
|
-
|
44
|
-
unless File.directory? directory
|
45
|
-
Dir.mkdir directory
|
46
|
-
end
|
47
|
-
|
48
|
-
File.open path, ?w do |file|
|
49
|
-
YAML.dump @hash, file
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
# Load a yaml file as internal data from the cache directory.
|
54
|
-
#
|
55
|
-
# @return [Hash] the loaded data.
|
56
|
-
def load
|
57
|
-
if yaml = YAML.load_file(path)
|
58
|
-
@hash = yaml
|
59
|
-
end
|
60
|
-
rescue
|
61
|
-
File.unlink path
|
62
|
-
end
|
63
|
-
|
64
|
-
# Let Hash#to_s do the job.
|
65
|
-
def to_s; @hash end
|
66
|
-
|
67
|
-
private
|
68
|
-
|
69
|
-
# The current caches file path.
|
70
|
-
#
|
71
|
-
# @return [String] the file path.
|
72
|
-
def path
|
73
|
-
%{#{Cache.path}/#{@script.__name}.yml}
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
@@ -1,77 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
module Blur
|
4
|
-
class Script
|
5
|
-
# The +Commands+ module is a module that gives the ability to turn a
|
6
|
-
# script into a DSL-like framework.
|
7
|
-
module Commands
|
8
|
-
class Command
|
9
|
-
DefaultOptions = { prefix: '.', hostmask: nil }
|
10
|
-
|
11
|
-
def initialize triggers, options = {}, &block
|
12
|
-
@triggers = Array === triggers ? triggers : [triggers]
|
13
|
-
@options = DefaultOptions.merge options
|
14
|
-
@block = block
|
15
|
-
end
|
16
|
-
|
17
|
-
# Called by the Commands module.
|
18
|
-
#
|
19
|
-
# Calls the command block if the trigger matches the criteria.
|
20
|
-
def received_message user, channel, message
|
21
|
-
prefix = @options[:prefix]
|
22
|
-
|
23
|
-
# Return if the prefix don't match.
|
24
|
-
return unless message.start_with? prefix
|
25
|
-
|
26
|
-
# Return if the hostmask don't match.
|
27
|
-
# FIXME: Maybe use globbing instead of regular expressions?
|
28
|
-
unless @options[:hostmask].nil?
|
29
|
-
hostmask = "#{user.nick}!#{user.name}@#{user.host}"
|
30
|
-
|
31
|
-
return unless hostmask =~ @options[:hostmask]
|
32
|
-
end
|
33
|
-
|
34
|
-
command, args = split_message message
|
35
|
-
|
36
|
-
# Strip the prefix and compare the trigger name.
|
37
|
-
if self.matches_trigger? command
|
38
|
-
@block.call user, channel, args
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
protected
|
43
|
-
|
44
|
-
def split_message message
|
45
|
-
prefix = @options[:prefix]
|
46
|
-
command, args = message[prefix.length..-1].split $;, 2
|
47
|
-
|
48
|
-
return command, args
|
49
|
-
end
|
50
|
-
|
51
|
-
def matches_trigger? command
|
52
|
-
return @triggers.find{|trigger| trigger.to_s == command }
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
# Extend +base+ with self.
|
57
|
-
def self.extended base
|
58
|
-
base.instance_variable_set :@__commands, []
|
59
|
-
end
|
60
|
-
|
61
|
-
# Add a new command handler and trigger.
|
62
|
-
def command name, *args, &block
|
63
|
-
@__commands << Command.new(name, *args, &block)
|
64
|
-
end
|
65
|
-
|
66
|
-
# Handle all calls to the scripts +message+ method, check to see if
|
67
|
-
# the message containts a valid command, serialize it and pass it to
|
68
|
-
# the script as command_name with the parameters +user+, +channel+
|
69
|
-
# and +message+.
|
70
|
-
def message user, channel, line
|
71
|
-
@__commands.each do |command|
|
72
|
-
command.received_message user, channel, line
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
data/library/blur/script/dsl.rb
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
module Blur
|
4
|
-
class Script
|
5
|
-
module DSL
|
6
|
-
def self.included base
|
7
|
-
base.send :attr_accessor, :__name
|
8
|
-
base.send :attr_accessor, :__author
|
9
|
-
base.send :attr_accessor, :__version
|
10
|
-
base.send :attr_accessor, :__description
|
11
|
-
end
|
12
|
-
|
13
|
-
# Set the author.
|
14
|
-
#
|
15
|
-
# @example
|
16
|
-
# Author "John Doe <john.doe@gmail.com>"
|
17
|
-
def Author *authors
|
18
|
-
@__author = authors.join ', '
|
19
|
-
end
|
20
|
-
|
21
|
-
# Set the description.
|
22
|
-
#
|
23
|
-
# @example
|
24
|
-
# Description "This is an example script."
|
25
|
-
def Description description
|
26
|
-
@__description = description
|
27
|
-
end
|
28
|
-
|
29
|
-
# Set the version.
|
30
|
-
#
|
31
|
-
# @example
|
32
|
-
# Version "1.0"
|
33
|
-
def Version version
|
34
|
-
@__version = version
|
35
|
-
end
|
36
|
-
|
37
|
-
# @return the name of the script.
|
38
|
-
def name; @__name end
|
39
|
-
|
40
|
-
# @return the name of the author(s).
|
41
|
-
def author; @__author end
|
42
|
-
|
43
|
-
# @return the script version.
|
44
|
-
def version; @__version end
|
45
|
-
|
46
|
-
# @return the description.
|
47
|
-
def description; @__description end
|
48
|
-
|
49
|
-
alias_method :Authors, :Author
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|