blur 1.6 → 1.6.2.pre
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/library/blur.rb +2 -1
- data/library/blur/client.rb +15 -11
- data/library/blur/handling.rb +8 -2
- data/library/blur/network.rb +4 -2
- data/library/blur/network/command.rb +1 -1
- data/library/blur/script.rb +16 -3
- data/library/blur/script/messageparsing.rb +4 -0
- metadata +52 -73
data/library/blur.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
+
require 'pp'
|
3
4
|
require 'yaml'
|
4
5
|
require 'majic'
|
5
6
|
require 'socket'
|
@@ -26,7 +27,7 @@ require 'blur/script/messageparsing'
|
|
26
27
|
# It can be by handlers, scripts, communications, and what have you.
|
27
28
|
module Blur
|
28
29
|
# The major and minor version-values of Blur.
|
29
|
-
Version = "1.6"
|
30
|
+
Version = "1.6.2.pre"
|
30
31
|
|
31
32
|
# Instantiates a client with given options and then makes the client instance
|
32
33
|
# evaluate the given block to form a DSL.
|
data/library/blur/client.rb
CHANGED
@@ -8,7 +8,7 @@ module Blur
|
|
8
8
|
# It stores networks, scripts and callbacks, and is also encharge of
|
9
9
|
# distributing the incoming commands to the right networks and scripts.
|
10
10
|
class Client
|
11
|
-
include Handling
|
11
|
+
include Handling, Logging
|
12
12
|
|
13
13
|
# @return [Array] the options that is passed upon initialization.
|
14
14
|
attr_accessor :options
|
@@ -57,7 +57,7 @@ module Blur
|
|
57
57
|
# @param [Network] network the network that received the command.
|
58
58
|
# @param [Network::Command] command the received command.
|
59
59
|
def got_command network, command
|
60
|
-
|
60
|
+
log "#{'←' ^ :green} #{command.name.to_s.ljust(8, ' ') ^ :light_gray} #{command.params.map(&:inspect).join ' '}"
|
61
61
|
name = :"got_#{command.name.downcase}"
|
62
62
|
|
63
63
|
if respond_to? name
|
@@ -110,15 +110,19 @@ module Blur
|
|
110
110
|
# @param [...] args Arguments that is passed to the event-handler.
|
111
111
|
# @private
|
112
112
|
def emit name, *args
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
113
|
+
EM.defer do
|
114
|
+
@callbacks[name].each do |callback|
|
115
|
+
callback.call *args
|
116
|
+
end if @callbacks[name]
|
117
|
+
|
118
|
+
scripts = @scripts.select{|script| script.__emissions.include? name }
|
119
|
+
|
120
|
+
scripts.each do |script|
|
121
|
+
begin
|
122
|
+
script.__send__ name, *args
|
123
|
+
rescue Exception => exception
|
124
|
+
log.error "#{File.basename(script.__path) << " - " << exception.message ^ :bold} on line #{exception.line.to_s ^ :bold}"
|
125
|
+
end
|
122
126
|
end
|
123
127
|
end
|
124
128
|
end
|
data/library/blur/handling.rb
CHANGED
@@ -79,8 +79,14 @@ module Blur
|
|
79
79
|
if channel = network.channel_by_name(name)
|
80
80
|
emit :topic_change, channel, topic
|
81
81
|
channel.topic = topic
|
82
|
-
else
|
82
|
+
else
|
83
83
|
channel = Network::Channel.new name, network, []
|
84
|
+
|
85
|
+
if network.fish? and network.options[:fish].key? name
|
86
|
+
keyphrase = network.options[:fish][name]
|
87
|
+
channel.encryption = Encryption::FiSH.new keyphrase
|
88
|
+
end
|
89
|
+
|
84
90
|
emit :topic_change, channel, topic
|
85
91
|
channel.topic = topic
|
86
92
|
|
@@ -134,7 +140,7 @@ module Blur
|
|
134
140
|
message = channel.encryption.decrypt message[4..-1]
|
135
141
|
end
|
136
142
|
rescue Encryption::BadInputError
|
137
|
-
#
|
143
|
+
puts "-!- FiSH: #{$!.message}"
|
138
144
|
rescue => exception
|
139
145
|
puts "-!- There was a problem with the FiSH encryption, disabling"
|
140
146
|
|
data/library/blur/network.rb
CHANGED
@@ -6,6 +6,8 @@ module Blur
|
|
6
6
|
# Although the connection is a part of the network module, it is mainly used
|
7
7
|
# for network-related structures, such as {User}, {Channel} and {Command}.
|
8
8
|
class Network
|
9
|
+
include Logging
|
10
|
+
|
9
11
|
# +ConnectionError+ should only be triggered from within {Connection}.
|
10
12
|
class ConnectionError < StandardError; end
|
11
13
|
|
@@ -73,7 +75,7 @@ module Blur
|
|
73
75
|
message = "+OK #{recipient.encryption.encrypt message}"
|
74
76
|
end
|
75
77
|
|
76
|
-
transmit :PRIVMSG, recipient, message
|
78
|
+
transmit :PRIVMSG, recipient.to_s, message
|
77
79
|
end
|
78
80
|
|
79
81
|
# Called when the network connection has enough data to form a command.
|
@@ -126,7 +128,7 @@ module Blur
|
|
126
128
|
# @param [...] arguments all the prepended parameters.
|
127
129
|
def transmit name, *arguments
|
128
130
|
command = Command.new name, arguments
|
129
|
-
|
131
|
+
log "#{'→' ^ :red} #{command.name.to_s.ljust(8, ' ') ^ :light_gray} #{command.params.map(&:inspect).join ' '}"
|
130
132
|
|
131
133
|
@connection.send_data "#{command}\r\n"
|
132
134
|
end
|
data/library/blur/script.rb
CHANGED
@@ -9,6 +9,12 @@ module Blur
|
|
9
9
|
# @todo add examples in the documentation
|
10
10
|
# @see Script#Script
|
11
11
|
class Script < Module
|
12
|
+
include Logging
|
13
|
+
|
14
|
+
Emissions = [:connection_ready, :topic_change, :user_rename, :message,
|
15
|
+
:private_message, :user_entered, :user_left, :user_quit,
|
16
|
+
:user_kicked, :topic, :user_mode, :channel_mode]
|
17
|
+
|
12
18
|
# @return the name of the script.
|
13
19
|
attr_accessor :__name
|
14
20
|
# @return the author of the script.
|
@@ -20,6 +26,8 @@ module Blur
|
|
20
26
|
# Can be used inside the script to act with the client itself.
|
21
27
|
# @return [Network::Client] the client delegate.
|
22
28
|
attr_accessor :__client
|
29
|
+
# @return [Array] a list of handled emissions.
|
30
|
+
attr_accessor :__emissions
|
23
31
|
|
24
32
|
# Check to see if the script has been evaluated.
|
25
33
|
def evaluated?; @__evaluated end
|
@@ -28,9 +36,14 @@ module Blur
|
|
28
36
|
def initialize path
|
29
37
|
@__path = path
|
30
38
|
@__evaluated = false
|
39
|
+
@__emissions = []
|
31
40
|
|
32
41
|
if evaluate and @__evaluated
|
33
42
|
cache.load if Cache.exists? @__name
|
43
|
+
|
44
|
+
Emissions.each do |emission|
|
45
|
+
@__emissions.push emission if respond_to? emission
|
46
|
+
end
|
34
47
|
|
35
48
|
__send__ :loaded if respond_to? :loaded
|
36
49
|
end
|
@@ -76,17 +89,17 @@ module Blur
|
|
76
89
|
|
77
90
|
# Convert it to a debug-friendly format.
|
78
91
|
def inspect
|
79
|
-
|
92
|
+
File.basename @__path
|
80
93
|
end
|
81
94
|
|
82
95
|
private
|
83
96
|
|
84
97
|
# Attempt to evaluate the contents of the script.
|
85
98
|
def evaluate
|
86
|
-
|
99
|
+
instance_eval File.read(@__path), File.basename(@__path), 0
|
87
100
|
@__evaluated = true
|
88
101
|
rescue Exception => exception
|
89
|
-
|
102
|
+
log.error "#{exception.message ^ :bold} on line #{exception.line.to_s ^ :bold}"
|
90
103
|
end
|
91
104
|
end
|
92
105
|
end
|
@@ -30,6 +30,10 @@ module Blur
|
|
30
30
|
module MessageParsing
|
31
31
|
# The prefix that turns it into a possible command.
|
32
32
|
MessageTrigger = "."
|
33
|
+
|
34
|
+
def self.extended klass
|
35
|
+
warn "#{File.realpath __FILE__}: MessageParsing will be deprecated in the future, use Fantasy."
|
36
|
+
end
|
33
37
|
|
34
38
|
# Handle all calls to the scripts +message+ method, check to see if
|
35
39
|
# the message containts a valid command, serialize it and pass it to
|
metadata
CHANGED
@@ -1,73 +1,63 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: blur
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 1
|
7
|
-
- 6
|
8
|
-
version: "1.6"
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.6.2.pre
|
5
|
+
prerelease: 6
|
9
6
|
platform: ruby
|
10
|
-
authors:
|
7
|
+
authors:
|
11
8
|
- Mikkel Kroman
|
12
9
|
autorequire:
|
13
10
|
bindir: bin
|
14
11
|
cert_chain: []
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
dependencies:
|
19
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2011-11-19 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
20
15
|
name: majic
|
21
|
-
|
22
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &19385580 !ruby/object:Gem::Requirement
|
23
17
|
none: false
|
24
|
-
requirements:
|
25
|
-
- -
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
|
28
|
-
- 0
|
29
|
-
- 1
|
30
|
-
version: "0.1"
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0.2'
|
31
22
|
type: :runtime
|
32
|
-
version_requirements: *id001
|
33
|
-
- !ruby/object:Gem::Dependency
|
34
|
-
name: crypt19
|
35
23
|
prerelease: false
|
36
|
-
|
24
|
+
version_requirements: *19385580
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: crypt19
|
27
|
+
requirement: &19401480 !ruby/object:Gem::Requirement
|
37
28
|
none: false
|
38
|
-
requirements:
|
39
|
-
- -
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
|
42
|
-
- 0
|
43
|
-
version: "0"
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 1.2.1
|
44
33
|
type: :runtime
|
45
|
-
version_requirements: *id002
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: eventmachine
|
48
34
|
prerelease: false
|
49
|
-
|
35
|
+
version_requirements: *19401480
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: eventmachine
|
38
|
+
requirement: &19401020 !ruby/object:Gem::Requirement
|
50
39
|
none: false
|
51
|
-
requirements:
|
52
|
-
- -
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
|
55
|
-
- 0
|
56
|
-
- 12
|
57
|
-
version: "0.12"
|
40
|
+
requirements:
|
41
|
+
- - ! '>'
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0.12'
|
58
44
|
type: :runtime
|
59
|
-
|
60
|
-
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *19401020
|
47
|
+
description: ! ' An event-driven IRC-framework in and for Ruby. Is extensible and
|
48
|
+
supports script with (re)loading functionality during runtime.
|
49
|
+
|
50
|
+
'
|
61
51
|
email: mk@maero.dk
|
62
52
|
executables: []
|
63
|
-
|
64
53
|
extensions: []
|
65
|
-
|
66
54
|
extra_rdoc_files: []
|
67
|
-
|
68
|
-
files:
|
55
|
+
files:
|
69
56
|
- library/blur.rb
|
70
57
|
- library/blur/client.rb
|
58
|
+
- library/blur/encryption.rb
|
59
|
+
- library/blur/encryption/base64.rb
|
60
|
+
- library/blur/encryption/fish.rb
|
71
61
|
- library/blur/enhancements.rb
|
72
62
|
- library/blur/handling.rb
|
73
63
|
- library/blur/network.rb
|
@@ -78,40 +68,29 @@ files:
|
|
78
68
|
- library/blur/script.rb
|
79
69
|
- library/blur/script/cache.rb
|
80
70
|
- library/blur/script/messageparsing.rb
|
81
|
-
- library/blur/encryption/fish.rb
|
82
|
-
- library/blur/encryption/base64.rb
|
83
|
-
- library/blur/encryption.rb
|
84
|
-
has_rdoc: true
|
85
71
|
homepage: https://github.com/mkroman/blur
|
86
|
-
licenses:
|
72
|
+
licenses:
|
87
73
|
- ISC
|
88
74
|
post_install_message:
|
89
75
|
rdoc_options: []
|
90
|
-
|
91
|
-
require_paths:
|
76
|
+
require_paths:
|
92
77
|
- library
|
93
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
78
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
94
79
|
none: false
|
95
|
-
requirements:
|
96
|
-
- -
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
|
99
|
-
|
100
|
-
version: "0"
|
101
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ! '>='
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
85
|
none: false
|
103
|
-
requirements:
|
104
|
-
- -
|
105
|
-
- !ruby/object:Gem::Version
|
106
|
-
|
107
|
-
- 0
|
108
|
-
version: "0"
|
86
|
+
requirements:
|
87
|
+
- - ! '>'
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 1.3.1
|
109
90
|
requirements: []
|
110
|
-
|
111
91
|
rubyforge_project:
|
112
|
-
rubygems_version: 1.
|
92
|
+
rubygems_version: 1.8.10
|
113
93
|
signing_key:
|
114
94
|
specification_version: 3
|
115
95
|
summary: An event-driven IRC-framework for Ruby.
|
116
96
|
test_files: []
|
117
|
-
|