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.
Files changed (65) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +12 -0
  3. data/CHANGELOG.md +0 -0
  4. data/Gemfile +8 -0
  5. data/LICENSE +28 -0
  6. data/README.md +104 -0
  7. data/Rakefile +30 -0
  8. data/WINDOWS.md +64 -0
  9. data/bin/syndi +102 -0
  10. data/bin/syndi-conf +47 -0
  11. data/conf/example.yml +101 -0
  12. data/docs/Events.md +103 -0
  13. data/docs/Upgrade.md +16 -0
  14. data/ext/csyndi/events.c +50 -0
  15. data/ext/csyndi/extconf.rb +20 -0
  16. data/ext/csyndi/integer.c +53 -0
  17. data/ext/csyndi/libauto.c +37 -0
  18. data/ext/csyndi/logger.c +229 -0
  19. data/include/syndi.h +22 -0
  20. data/include/syndi/csyndi.h +38 -0
  21. data/include/syndi/events.h +19 -0
  22. data/include/syndi/integer.h +17 -0
  23. data/include/syndi/logger.h +56 -0
  24. data/lib/csyndi.so +0 -0
  25. data/lib/syndi.rb +137 -0
  26. data/lib/syndi/actress.rb +12 -0
  27. data/lib/syndi/api.rb +7 -0
  28. data/lib/syndi/api/object.rb +29 -0
  29. data/lib/syndi/bot.rb +266 -0
  30. data/lib/syndi/config.rb +113 -0
  31. data/lib/syndi/dsl/base.rb +74 -0
  32. data/lib/syndi/dsl/irc.rb +13 -0
  33. data/lib/syndi/events.rb +130 -0
  34. data/lib/syndi/irc.rb +8 -0
  35. data/lib/syndi/irc/common.rb +63 -0
  36. data/lib/syndi/irc/library.rb +89 -0
  37. data/lib/syndi/irc/object/channel.rb +21 -0
  38. data/lib/syndi/irc/object/entity.rb +90 -0
  39. data/lib/syndi/irc/object/message.rb +99 -0
  40. data/lib/syndi/irc/object/user.rb +139 -0
  41. data/lib/syndi/irc/protocol.rb +161 -0
  42. data/lib/syndi/irc/protocol/numerics.rb +60 -0
  43. data/lib/syndi/irc/sasl/diffie_hellman.rb +36 -0
  44. data/lib/syndi/irc/sasl/mech.rb +7 -0
  45. data/lib/syndi/irc/sasl/mech/dh_blowfish.rb +83 -0
  46. data/lib/syndi/irc/sasl/mech/plain.rb +39 -0
  47. data/lib/syndi/irc/server.rb +301 -0
  48. data/lib/syndi/irc/state/channel_manager.rb +6 -0
  49. data/lib/syndi/irc/state/support.rb +142 -0
  50. data/lib/syndi/irc/state/user_manager.rb +6 -0
  51. data/lib/syndi/irc/std/commands.rb +99 -0
  52. data/lib/syndi/irc/std/numerics.rb +216 -0
  53. data/lib/syndi/jewel.rb +5 -0
  54. data/lib/syndi/jewel/specification.rb +121 -0
  55. data/lib/syndi/jewel/util.rb +27 -0
  56. data/lib/syndi/rubyext/string.rb +10 -0
  57. data/lib/syndi/verbosity.rb +10 -0
  58. data/lib/syndi/version.rb +38 -0
  59. data/spec/helper.rb +37 -0
  60. data/spec/syndi/events_spec.rb +89 -0
  61. data/tasks/compile.rake +15 -0
  62. data/tasks/install.rake +10 -0
  63. data/tasks/package.rake +13 -0
  64. data/tasks/spec.rake +12 -0
  65. metadata +243 -0
@@ -0,0 +1,5 @@
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
+
5
+ # vim: set ts=4 sts=2 sw=2 et:
@@ -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,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
+ $VERBOSITY = 0
5
+
6
+ VSIMPLE = 1
7
+ VUSEFUL = 2
8
+ VNOISY = 3
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:
@@ -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:
@@ -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:
@@ -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