syndi 0.1.1-x86-mingw32
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.
- checksums.yaml +7 -0
- data/.yardopts +12 -0
- data/CHANGELOG.md +0 -0
- data/Gemfile +8 -0
- data/LICENSE +28 -0
- data/README.md +104 -0
- data/Rakefile +30 -0
- data/WINDOWS.md +64 -0
- data/bin/syndi +102 -0
- data/bin/syndi-conf +47 -0
- data/conf/example.yml +101 -0
- data/docs/Events.md +103 -0
- data/docs/Upgrade.md +16 -0
- data/ext/csyndi/events.c +50 -0
- data/ext/csyndi/extconf.rb +20 -0
- data/ext/csyndi/integer.c +53 -0
- data/ext/csyndi/libauto.c +37 -0
- data/ext/csyndi/logger.c +229 -0
- data/include/syndi.h +22 -0
- data/include/syndi/csyndi.h +38 -0
- data/include/syndi/events.h +19 -0
- data/include/syndi/integer.h +17 -0
- data/include/syndi/logger.h +56 -0
- data/lib/csyndi.so +0 -0
- data/lib/syndi.rb +137 -0
- data/lib/syndi/actress.rb +12 -0
- data/lib/syndi/api.rb +7 -0
- data/lib/syndi/api/object.rb +29 -0
- data/lib/syndi/bot.rb +266 -0
- data/lib/syndi/config.rb +113 -0
- data/lib/syndi/dsl/base.rb +74 -0
- data/lib/syndi/dsl/irc.rb +13 -0
- data/lib/syndi/events.rb +130 -0
- data/lib/syndi/irc.rb +8 -0
- data/lib/syndi/irc/common.rb +63 -0
- data/lib/syndi/irc/library.rb +89 -0
- data/lib/syndi/irc/object/channel.rb +21 -0
- data/lib/syndi/irc/object/entity.rb +90 -0
- data/lib/syndi/irc/object/message.rb +99 -0
- data/lib/syndi/irc/object/user.rb +139 -0
- data/lib/syndi/irc/protocol.rb +161 -0
- data/lib/syndi/irc/protocol/numerics.rb +60 -0
- data/lib/syndi/irc/sasl/diffie_hellman.rb +36 -0
- data/lib/syndi/irc/sasl/mech.rb +7 -0
- data/lib/syndi/irc/sasl/mech/dh_blowfish.rb +83 -0
- data/lib/syndi/irc/sasl/mech/plain.rb +39 -0
- data/lib/syndi/irc/server.rb +301 -0
- data/lib/syndi/irc/state/channel_manager.rb +6 -0
- data/lib/syndi/irc/state/support.rb +142 -0
- data/lib/syndi/irc/state/user_manager.rb +6 -0
- data/lib/syndi/irc/std/commands.rb +99 -0
- data/lib/syndi/irc/std/numerics.rb +216 -0
- data/lib/syndi/jewel.rb +5 -0
- data/lib/syndi/jewel/specification.rb +121 -0
- data/lib/syndi/jewel/util.rb +27 -0
- data/lib/syndi/rubyext/string.rb +10 -0
- data/lib/syndi/verbosity.rb +10 -0
- data/lib/syndi/version.rb +38 -0
- data/spec/helper.rb +37 -0
- data/spec/syndi/events_spec.rb +89 -0
- data/tasks/compile.rake +15 -0
- data/tasks/install.rake +10 -0
- data/tasks/package.rake +13 -0
- data/tasks/spec.rake +12 -0
- metadata +243 -0
data/lib/syndi/jewel.rb
ADDED
@@ -0,0 +1,121 @@
|
|
1
|
+
# Copyright (c) 2013, Autumn Perrault, et al. All rights reserved.
|
2
|
+
# This free software is distributed under the FreeBSD license (see LICENSE).
|
3
|
+
|
4
|
+
require 'syndi'
|
5
|
+
require 'syndi/jewel/util'
|
6
|
+
|
7
|
+
class JewelError < StandardError; end
|
8
|
+
|
9
|
+
module Syndi
|
10
|
+
|
11
|
+
module Jewel
|
12
|
+
include Syndi::Jewel::Util
|
13
|
+
|
14
|
+
# A specification for an Syndi jewel (i.e. plugin, extension, etc.).
|
15
|
+
#
|
16
|
+
# @!attribute name
|
17
|
+
class Specification
|
18
|
+
|
19
|
+
attr_reader :name, :version, :authors, :syndi_version, :our_dir,
|
20
|
+
:bundle, :code_files, :doc_files, :post_message,
|
21
|
+
:install_do
|
22
|
+
|
23
|
+
def omg *args
|
24
|
+
args.each do |unicorn|
|
25
|
+
puts "==> #{unicorn}".magenta
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# Construct a new specification.
|
30
|
+
#
|
31
|
+
# @param [String] file The value of +__FILE__+ as accessed from the spec itself.
|
32
|
+
def initialize file
|
33
|
+
@name = nil
|
34
|
+
@version = nil
|
35
|
+
@authors = []
|
36
|
+
@syndi_version = nil
|
37
|
+
@our_dir = File.expand_path('..', file)
|
38
|
+
@bundle = 'Gemfile'
|
39
|
+
@code_files = []
|
40
|
+
@doc_files = []
|
41
|
+
@post_message = nil
|
42
|
+
|
43
|
+
@install_do = proc { nil }
|
44
|
+
|
45
|
+
# Yield to block for configuration.
|
46
|
+
yield self
|
47
|
+
|
48
|
+
# Initiate installation.
|
49
|
+
install
|
50
|
+
end
|
51
|
+
|
52
|
+
# Sets the jewel name.
|
53
|
+
#
|
54
|
+
# @param [String] monkey The name of the jewel.
|
55
|
+
def name= monkey
|
56
|
+
raise JewelError, 'Invalid jewel name!' unless monkey.instance_of? String
|
57
|
+
monkey.downcase!
|
58
|
+
|
59
|
+
@name = monkey
|
60
|
+
omg "Jewel name: #{monkey.green}"
|
61
|
+
end
|
62
|
+
|
63
|
+
# Sets the jewel version.
|
64
|
+
#
|
65
|
+
# @param [String] mascara The version of the jewel.
|
66
|
+
def version= mascara
|
67
|
+
mascara.downcase!
|
68
|
+
|
69
|
+
@version = mascara
|
70
|
+
omg "Jewel version: #{mascara.green}"
|
71
|
+
end
|
72
|
+
|
73
|
+
# Sets the jewel author (only one).
|
74
|
+
#
|
75
|
+
# @param [String] its_a_trap The (sole) author of the jewel.
|
76
|
+
def author= its_a_trap
|
77
|
+
raise JewelError, 'Invalid jewel author!' unless its_a_trap.instance_of? String
|
78
|
+
|
79
|
+
@authors.push its_a_trap
|
80
|
+
omg "Jewel written by #{its_a_trap.blue}"
|
81
|
+
end
|
82
|
+
|
83
|
+
# Sets multiple jewel authors.
|
84
|
+
#
|
85
|
+
# @param [Array] chi The authors of the jewel. (splat)
|
86
|
+
def authors= *chi
|
87
|
+
raise JewelError, 'Invalid jewel author list!' unless chi.instance_of? Array
|
88
|
+
raise JewelError, 'Invalid method of author specification!' unless chi.length > 1
|
89
|
+
|
90
|
+
@authors = chi
|
91
|
+
omg "Jewel written by #{chi.join ', '}"
|
92
|
+
end
|
93
|
+
|
94
|
+
# Sets the Syndi version required by the jewel.
|
95
|
+
#
|
96
|
+
# @param [String] essie The minimum Syndi version required.
|
97
|
+
def syndi_version= essie
|
98
|
+
if Gem::Version.new(essie.dup) < Gem::Version.new(Syndi::VERSION.dup)
|
99
|
+
raise JewelError, "This jewel requires Syndi version >= #{essie.red} but current version is #{Syndi::VERSION}!"
|
100
|
+
end
|
101
|
+
|
102
|
+
@syndi_version = essie
|
103
|
+
omg "Jewel is compatible with your version of Syndi (requires: >= #{essie.green})!"
|
104
|
+
end
|
105
|
+
|
106
|
+
# Sets the name of the GemBundler Gemfile. Default is +Gemfile+.
|
107
|
+
#
|
108
|
+
# @param [String] sephora The name of the Gemfile.
|
109
|
+
def bundle= sephora = 'Gemfile'
|
110
|
+
raise JewelError, "Jewel's Gemfile is missing!" unless File.exists? File.join(@our_dir, sephora)
|
111
|
+
|
112
|
+
@bundle = sephora
|
113
|
+
end
|
114
|
+
|
115
|
+
end # class Specification
|
116
|
+
|
117
|
+
end # module Jewel
|
118
|
+
|
119
|
+
end # module Syndi
|
120
|
+
|
121
|
+
# vim: set ts=4 sts=2 sw=2 et:
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# Copyright (c) 2013, Autumn Perrault, et al. All rights reserved.
|
2
|
+
# This free software is distributed under the FreeBSD license (see LICENSE).
|
3
|
+
|
4
|
+
require 'syndi'
|
5
|
+
|
6
|
+
class JewelCutError < StandardError; end
|
7
|
+
|
8
|
+
module Syndi
|
9
|
+
|
10
|
+
module Jewel
|
11
|
+
|
12
|
+
module Util
|
13
|
+
|
14
|
+
# Install the jewel.
|
15
|
+
def install
|
16
|
+
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
# vim: set ts=4 sts=2 sw=2 et:
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# This changes the String class in Ruby's standard library to make life easier
|
2
|
+
# by aliasing String#uc to String#upcase and String#dc to String#downcase
|
3
|
+
class String
|
4
|
+
alias_method :uc, :upcase
|
5
|
+
alias_method :dc, :downcase
|
6
|
+
alias_method :uc!, :upcase!
|
7
|
+
alias_method :dc!, :downcase!
|
8
|
+
end
|
9
|
+
|
10
|
+
# vim: set ts=4 sts=2 sw=2 et:
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Copyright (c) 2013, Autumn Perrault, et al. All rights reserved.
|
2
|
+
# This free software is distributed under the FreeBSD license (see LICENSE).
|
3
|
+
|
4
|
+
module Syndi
|
5
|
+
|
6
|
+
# Standard version string.
|
7
|
+
#
|
8
|
+
# We use semantic versioning: +MAJOR.MINOR.PATCH.PRE.PRENUM+
|
9
|
+
VERSION = '0.1.1'.freeze
|
10
|
+
|
11
|
+
# Standard version plus the codename (assigned to each minor release).
|
12
|
+
#
|
13
|
+
# i.e., +VERSION-CODENAME+
|
14
|
+
FULLVERSION = "#{VERSION}-phoenix".freeze
|
15
|
+
|
16
|
+
# @return [Boolean] Whether this is an alpha-stage copy.
|
17
|
+
def self.alpha?
|
18
|
+
(VERSION =~ /alpha/).nil? ? false : true
|
19
|
+
end
|
20
|
+
|
21
|
+
# @return [Boolean] Whether this is a beta-stage copy.
|
22
|
+
def self.beta?
|
23
|
+
(VERSION =~ /beta/).nil? ? false : true
|
24
|
+
end
|
25
|
+
|
26
|
+
# @return [Boolean] Whether this is a release candidate copy.
|
27
|
+
def self.rc?
|
28
|
+
(VERSION =~ /rc/).nil? ? false : true
|
29
|
+
end
|
30
|
+
|
31
|
+
# @return [Boolean] Whether this is an edge (i.e. testing, development, unstable) copy.
|
32
|
+
def self.edge?
|
33
|
+
alpha? || beta? || rc?
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
# vim: set ts=4 sts=2 sw=2 et:
|
data/spec/helper.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# Copyright (c) 2013, Autumn Perrault, et al. All rights reserved.
|
2
|
+
# This free software is distributed under the FreeBSD license (see LICENSE).
|
3
|
+
|
4
|
+
require 'English'
|
5
|
+
$LOAD_PATH.unshift File.join __dir__, '..', 'lib'
|
6
|
+
|
7
|
+
require 'rspec/core'
|
8
|
+
require 'rspec/expectations'
|
9
|
+
require 'rspec/mocks'
|
10
|
+
require 'fileutils'
|
11
|
+
require 'stringio'
|
12
|
+
require 'tmpdir'
|
13
|
+
|
14
|
+
require 'syndi'
|
15
|
+
|
16
|
+
$temp_dir = Dir.mktmpdir
|
17
|
+
Syndi.dir = $temp_dir
|
18
|
+
$VERBOSITY = -1
|
19
|
+
|
20
|
+
module Helper
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
RSpec.configure do |conf|
|
25
|
+
conf.include Helper
|
26
|
+
|
27
|
+
conf.after(:all) do
|
28
|
+
Dir.chdir __dir__
|
29
|
+
FileUtils.remove_entry $temp_dir
|
30
|
+
end
|
31
|
+
|
32
|
+
conf.expect_with :rspec do |c|
|
33
|
+
c.syntax = :expect
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# vim: set ts=4 sts=2 sw=2 et:
|
@@ -0,0 +1,89 @@
|
|
1
|
+
# Copyright (c) 2013, Autumn Perrault, et al. All rights reserved.
|
2
|
+
# This free software is distributed under the FreeBSD license (see LICENSE).
|
3
|
+
|
4
|
+
require 'syndi/events'
|
5
|
+
|
6
|
+
describe Syndi::Events do
|
7
|
+
|
8
|
+
before do
|
9
|
+
@events = Syndi::Events.new
|
10
|
+
end
|
11
|
+
|
12
|
+
describe '#on' do
|
13
|
+
|
14
|
+
it 'listens for an event' do
|
15
|
+
@events.on(:moo) do |magic|
|
16
|
+
magic.write 'OK'
|
17
|
+
end
|
18
|
+
|
19
|
+
rawr = StringIO.new
|
20
|
+
@events.emit :moo, rawr
|
21
|
+
sleep 0.1
|
22
|
+
|
23
|
+
rawr.seek 0
|
24
|
+
expect(rawr.string).to eq 'OK'
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'returns a listener' do
|
28
|
+
hook = @events.on(:cows) { nil }
|
29
|
+
expect(hook).to be_an_instance_of Syndi::Events::Listener
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'when given a priority outside 1..5' do
|
33
|
+
it 'raises an ArgumentError' do
|
34
|
+
expect { @events.on(:meowbar, 6) { nil } }.to raise_error ArgumentError
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
describe '#emit' do
|
41
|
+
|
42
|
+
it 'broadcasts an event' do
|
43
|
+
@events.on(:fairy) do |cat, meow|
|
44
|
+
cat.write meow
|
45
|
+
end
|
46
|
+
|
47
|
+
cat = StringIO.new
|
48
|
+
@events.emit :fairy, cat, 'meow'
|
49
|
+
sleep 0.1
|
50
|
+
|
51
|
+
expect(cat.string).to eq 'meow'
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'respects priority' do
|
55
|
+
@order = ''
|
56
|
+
@events.on(:a, 1) { |order| order << 'A' }
|
57
|
+
@events.on(:a, 3) { |order| order << 'B' }
|
58
|
+
@events.on(:a, 5) { |order| order << 'C' }
|
59
|
+
|
60
|
+
@events.emit :a, @order
|
61
|
+
sleep 0.1
|
62
|
+
|
63
|
+
expect(@order).to eq 'ABC'
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
describe Syndi::Events::Listener do
|
69
|
+
|
70
|
+
describe '#deaf' do
|
71
|
+
|
72
|
+
it 'terminates a listener' do
|
73
|
+
@ok = true
|
74
|
+
hook = @events.on(:beep) { @ok = false }
|
75
|
+
hook.deaf
|
76
|
+
|
77
|
+
@events.emit :beep
|
78
|
+
sleep 0.1
|
79
|
+
|
80
|
+
expect(@ok).to be_true
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
88
|
+
|
89
|
+
# vim: set ts=4 sts=2 sw=2 et:
|
data/tasks/compile.rake
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# Copyright (c) 2013, Autumn Perrault, et al. All rights reserved.
|
2
|
+
# This free software is distributed under the FreeBSD license (see LICENSE).
|
3
|
+
|
4
|
+
require 'rake/extensiontask'
|
5
|
+
|
6
|
+
desc 'Compile the native extension.'
|
7
|
+
Rake::ExtensionTask.new 'csyndi', $gemspec do |ext|
|
8
|
+
ext.cross_compile = true
|
9
|
+
|
10
|
+
ext.cross_compiling do |spec|
|
11
|
+
spec.post_install_message << "\r\nNOTICE: You have installed the binary distribution of this gem."
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
# vim: set ts=4 sts=2 sw=2 et:
|
data/tasks/install.rake
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
# Copyright (c) 2013, Autumn Perrault, et al. All rights reserved.
|
2
|
+
# This free software is distributed under the FreeBSD license (see LICENSE).
|
3
|
+
|
4
|
+
desc 'Install the gem.'
|
5
|
+
task :install => :gem do
|
6
|
+
gempkg = Dir["pkg/Syndi-#{$gemspec.version}.gem"].last
|
7
|
+
sh "gem install #{gempkg}"
|
8
|
+
end
|
9
|
+
|
10
|
+
# vim: set ts=4 sts=2 sw=2 et:
|
data/tasks/package.rake
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# Copyright (c) 2013, Autumn Perrault, et al. All rights reserved.
|
2
|
+
# This free software is distributed under the FreeBSD license (see LICENSE).
|
3
|
+
|
4
|
+
require 'rubygems'
|
5
|
+
require 'rubygems/package_task'
|
6
|
+
|
7
|
+
desc 'Package the gem.'
|
8
|
+
Gem::PackageTask.new($gemspec) do |pkg|
|
9
|
+
pkg.need_zip = true
|
10
|
+
pkg.need_tar = true
|
11
|
+
end
|
12
|
+
|
13
|
+
# vim: set ts=4 sts=2 sw=2 et:
|
data/tasks/spec.rake
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
# Copyright (c) 2013, Autumn Perrault, et al. All rights reserved.
|
2
|
+
# This free software is distributed under the FreeBSD license (see LICENSE).
|
3
|
+
|
4
|
+
require 'rspec/core/rake_task'
|
5
|
+
|
6
|
+
desc 'Test the application.'
|
7
|
+
RSpec::Core::RakeTask.new do |t|
|
8
|
+
t.pattern = "#{__dir__}/../spec/**/*_spec.rb"
|
9
|
+
t.rspec_opts = ["-I #{__dir__}/../lib", "-r #{__dir__}/../spec/helper.rb"]
|
10
|
+
end
|
11
|
+
|
12
|
+
# vim: set ts=4 sts=2 sw=2 et:
|
metadata
ADDED
@@ -0,0 +1,243 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: syndi
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
platform: x86-mingw32
|
6
|
+
authors:
|
7
|
+
- Autumn Perrault
|
8
|
+
- Matthew Carey
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-02-08 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '1.2'
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '1.2'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: celluloid
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0.12'
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0.12'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: celluloid-io
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0.12'
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0.12'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: colored
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '1.2'
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '1.2'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: redis
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - "~>"
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '3.0'
|
77
|
+
type: :runtime
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - "~>"
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '3.0'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: slop
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - "~>"
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '3.4'
|
91
|
+
type: :runtime
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - "~>"
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '3.4'
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: rake
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
type: :development
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: rake-compiler
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
type: :development
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: rspec
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
133
|
+
type: :development
|
134
|
+
prerelease: false
|
135
|
+
version_requirements: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - ">="
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0'
|
140
|
+
description: |2
|
141
|
+
An elegant, modern, multithreaded, event-driven, modular chat bot
|
142
|
+
designed upon a multi-protocol model.
|
143
|
+
email: syndibot@googlegroups.com
|
144
|
+
executables:
|
145
|
+
- syndi
|
146
|
+
- syndi-conf
|
147
|
+
extensions: []
|
148
|
+
extra_rdoc_files: []
|
149
|
+
files:
|
150
|
+
- bin/syndi-conf
|
151
|
+
- bin/syndi
|
152
|
+
- lib/csyndi.so
|
153
|
+
- lib/syndi/dsl/irc.rb
|
154
|
+
- lib/syndi/dsl/base.rb
|
155
|
+
- lib/syndi/verbosity.rb
|
156
|
+
- lib/syndi/api.rb
|
157
|
+
- lib/syndi/rubyext/string.rb
|
158
|
+
- lib/syndi/irc.rb
|
159
|
+
- lib/syndi/api/object.rb
|
160
|
+
- lib/syndi/config.rb
|
161
|
+
- lib/syndi/version.rb
|
162
|
+
- lib/syndi/actress.rb
|
163
|
+
- lib/syndi/jewel/specification.rb
|
164
|
+
- lib/syndi/jewel/util.rb
|
165
|
+
- lib/syndi/events.rb
|
166
|
+
- lib/syndi/jewel.rb
|
167
|
+
- lib/syndi/irc/protocol.rb
|
168
|
+
- lib/syndi/irc/library.rb
|
169
|
+
- lib/syndi/irc/object/message.rb
|
170
|
+
- lib/syndi/irc/object/entity.rb
|
171
|
+
- lib/syndi/irc/object/user.rb
|
172
|
+
- lib/syndi/irc/object/channel.rb
|
173
|
+
- lib/syndi/irc/sasl/mech.rb
|
174
|
+
- lib/syndi/irc/sasl/diffie_hellman.rb
|
175
|
+
- lib/syndi/irc/sasl/mech/dh_blowfish.rb
|
176
|
+
- lib/syndi/irc/sasl/mech/plain.rb
|
177
|
+
- lib/syndi/irc/protocol/numerics.rb
|
178
|
+
- lib/syndi/irc/state/support.rb
|
179
|
+
- lib/syndi/irc/state/channel_manager.rb
|
180
|
+
- lib/syndi/irc/state/user_manager.rb
|
181
|
+
- lib/syndi/irc/common.rb
|
182
|
+
- lib/syndi/irc/server.rb
|
183
|
+
- lib/syndi/irc/std/numerics.rb
|
184
|
+
- lib/syndi/irc/std/commands.rb
|
185
|
+
- lib/syndi/bot.rb
|
186
|
+
- lib/syndi.rb
|
187
|
+
- ext/csyndi/events.c
|
188
|
+
- ext/csyndi/logger.c
|
189
|
+
- ext/csyndi/extconf.rb
|
190
|
+
- ext/csyndi/integer.c
|
191
|
+
- ext/csyndi/libauto.c
|
192
|
+
- docs/Upgrade.md
|
193
|
+
- docs/Events.md
|
194
|
+
- include/syndi/integer.h
|
195
|
+
- include/syndi/logger.h
|
196
|
+
- include/syndi/csyndi.h
|
197
|
+
- include/syndi/events.h
|
198
|
+
- include/syndi.h
|
199
|
+
- tasks/spec.rake
|
200
|
+
- tasks/compile.rake
|
201
|
+
- tasks/package.rake
|
202
|
+
- tasks/install.rake
|
203
|
+
- README.md
|
204
|
+
- LICENSE
|
205
|
+
- WINDOWS.md
|
206
|
+
- CHANGELOG.md
|
207
|
+
- Gemfile
|
208
|
+
- Rakefile
|
209
|
+
- ".yardopts"
|
210
|
+
- conf/example.yml
|
211
|
+
- spec/helper.rb
|
212
|
+
- spec/syndi/events_spec.rb
|
213
|
+
homepage: http://syndibot.com
|
214
|
+
licenses:
|
215
|
+
- FreeBSD
|
216
|
+
metadata: {}
|
217
|
+
post_install_message: "Thanks for choosing Syndi to serve your chat bot needs! (:\n\nWe
|
218
|
+
suggest that, if you're not already consulting it, you read the Syndi Handbook:\nhttps://github.com/syndibot/syndi/wiki/Handbook\n\nMoreover,
|
219
|
+
you should typically now run `syndi-conf` to produce a configuration file.\n\r\nNOTICE:
|
220
|
+
You have installed the binary distribution of this gem."
|
221
|
+
rdoc_options: []
|
222
|
+
require_paths:
|
223
|
+
- lib
|
224
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
225
|
+
requirements:
|
226
|
+
- - ">="
|
227
|
+
- !ruby/object:Gem::Version
|
228
|
+
version: '0'
|
229
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
230
|
+
requirements:
|
231
|
+
- - ">="
|
232
|
+
- !ruby/object:Gem::Version
|
233
|
+
version: '0'
|
234
|
+
requirements: []
|
235
|
+
rubyforge_project:
|
236
|
+
rubygems_version: 2.0.0.rc.1
|
237
|
+
signing_key:
|
238
|
+
specification_version: 4
|
239
|
+
summary: A modern, elegant, extensible multi-protocol bot.
|
240
|
+
test_files:
|
241
|
+
- spec/helper.rb
|
242
|
+
- spec/syndi/events_spec.rb
|
243
|
+
- Rakefile
|