elliottcable-lobby 1
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/.manifest +5 -0
- data/README.markdown +79 -0
- data/Rakefile.rb +130 -0
- data/lib/lobby.rb +30 -0
- data/lobby.gemspec +43 -0
- data/spec/lobby_spec.rb +55 -0
- metadata +107 -0
data/.manifest
ADDED
data/README.markdown
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
Lobby
|
2
|
+
=====
|
3
|
+
Welcome to Ruby. Pull up a chair:
|
4
|
+
|
5
|
+
require 'lobby'
|
6
|
+
LobbyConstructor::construct!
|
7
|
+
|
8
|
+
Tell us about yourself!
|
9
|
+
|
10
|
+
def i_am
|
11
|
+
"me"
|
12
|
+
end
|
13
|
+
|
14
|
+
class Somewhere
|
15
|
+
class Deep
|
16
|
+
class In
|
17
|
+
class A
|
18
|
+
class GodForsaken
|
19
|
+
class Wasteland
|
20
|
+
|
21
|
+
puts Kernel::lobby.instance_eval { i_am }
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
From where do you hail?
|
31
|
+
|
32
|
+
class Somewhere
|
33
|
+
class Deep
|
34
|
+
class In
|
35
|
+
class A
|
36
|
+
class GodForsaken
|
37
|
+
class Wasteland
|
38
|
+
|
39
|
+
class ::Lobby
|
40
|
+
def who_knows
|
41
|
+
puts "somewere deep..."
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
who_knows()
|
53
|
+
|
54
|
+
Getting
|
55
|
+
-------
|
56
|
+
The authoritative source for this project is available at
|
57
|
+
<http://github.com/elliottcable/lobby>. You can clone your own copy with
|
58
|
+
the following command:
|
59
|
+
|
60
|
+
git clone git://github.com/elliottcable/lobby.git
|
61
|
+
|
62
|
+
If you want to make changes to the codebase, you need to fork your own GitHub
|
63
|
+
repository for said changes. Send a pullrequest to [elliottcable](http://github.com/elliottcable "elliottcable on GitHub")
|
64
|
+
when you've got something ready for the master branch that you think should be
|
65
|
+
merged.
|
66
|
+
|
67
|
+
Requirements
|
68
|
+
------------
|
69
|
+
To use Lobby, you need... nothing!
|
70
|
+
|
71
|
+
Contributing
|
72
|
+
------------
|
73
|
+
To develop and contribute to Lobby, you need...
|
74
|
+
|
75
|
+
- `gem install rake`
|
76
|
+
- `gem install elliottcable-echoe`
|
77
|
+
- `gem install rspec`
|
78
|
+
- `gem install relevance-rcov`
|
79
|
+
- `gem install lsegal-yard`
|
data/Rakefile.rb
ADDED
@@ -0,0 +1,130 @@
|
|
1
|
+
($:.unshift File.expand_path(File.join( File.dirname(__FILE__), 'lib' ))).uniq!
|
2
|
+
require "lobby"
|
3
|
+
|
4
|
+
default_tasks = Array.new
|
5
|
+
|
6
|
+
# =======================
|
7
|
+
# = Gem packaging tasks =
|
8
|
+
# =======================
|
9
|
+
begin
|
10
|
+
require 'echoe'
|
11
|
+
|
12
|
+
default_tasks << :'package:manifest' unless ENV['CI']
|
13
|
+
default_tasks << :'package:verify'
|
14
|
+
|
15
|
+
task :install => :'package:install'
|
16
|
+
task :package => :'package:package'
|
17
|
+
task :manifest => :'package:manifest'
|
18
|
+
namespace :package do
|
19
|
+
Echoe.new('lobby', LobbyConstructor::Version) do |g|
|
20
|
+
g.author = ['elliottcable']
|
21
|
+
g.email = ["Lobby@elliottcable.com"]
|
22
|
+
g.summary = "Welcome to Ruby. Enjoy your stay. Here's a chair."
|
23
|
+
g.url = 'http://github.com/elliottcable/lobby'
|
24
|
+
g.runtime_dependencies = []
|
25
|
+
g.development_dependencies = ['echoe >= 3.0.2', 'rspec', 'rcov', 'yard']
|
26
|
+
g.manifest_name = '.manifest'
|
27
|
+
g.retain_gemspec = true
|
28
|
+
g.rakefile_name = 'Rakefile.rb'
|
29
|
+
g.ignore_pattern = /^\.git\/|^meta\/|\.gemspec/
|
30
|
+
end
|
31
|
+
|
32
|
+
desc 'Tests packaged files to ensure they are all present'
|
33
|
+
task :verify => :package do
|
34
|
+
# An error message will be displayed if files are missing
|
35
|
+
if system %(ruby -e "require 'rubygems'; require 'pkg/lobby-#{LobbyConstructor::Version}/lib/lobby'")
|
36
|
+
puts "\nThe library files are present."
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
rescue LoadError => exception
|
42
|
+
raise exception unless exception.message =~ /(echoe)$/
|
43
|
+
desc '!! You need the `echoe` gem to package or install this project!'
|
44
|
+
task :package
|
45
|
+
end
|
46
|
+
|
47
|
+
# =======================
|
48
|
+
# = Spec/Coverage tasks =
|
49
|
+
# =======================
|
50
|
+
begin
|
51
|
+
require 'spec'
|
52
|
+
require 'rcov'
|
53
|
+
require 'spec/rake/spectask'
|
54
|
+
|
55
|
+
default_tasks << :'coverage:run'
|
56
|
+
default_tasks << :'coverage:open' unless ENV['CI']
|
57
|
+
|
58
|
+
task :coverage => :'coverage:run'
|
59
|
+
namespace :coverage do
|
60
|
+
Spec::Rake::SpecTask.new(:run) do |t|
|
61
|
+
t.spec_opts = ["--format", "specdoc"]
|
62
|
+
t.spec_opts << "--colour" unless ENV['CI']
|
63
|
+
t.spec_files = Dir[File.join('spec', '**', '*_spec.rb')].sort
|
64
|
+
t.libs = ['lib']
|
65
|
+
t.rcov = true
|
66
|
+
t.rcov_opts = ['--exclude-only', '".*"', '--include-file', '"^lib"',
|
67
|
+
'--sort', 'loc', '--sort-reverse',
|
68
|
+
'--comments', '--profile', '--text-report', '-w' ]
|
69
|
+
t.rcov_dir = File.join('meta', 'coverage')
|
70
|
+
end
|
71
|
+
|
72
|
+
task :open do
|
73
|
+
system 'open ' + File.join('meta', 'coverage', 'index.html')
|
74
|
+
end if RUBY_PLATFORM =~ /darwin/
|
75
|
+
end
|
76
|
+
|
77
|
+
rescue LoadError => exception
|
78
|
+
raise exception unless exception.message =~ /(rcov|spec)$/
|
79
|
+
desc '!! You need the `rcov` and `rspec` gems to run specs or coverage!'
|
80
|
+
task :coverage
|
81
|
+
end
|
82
|
+
|
83
|
+
# =======================
|
84
|
+
# = Documentation tasks =
|
85
|
+
# =======================
|
86
|
+
begin
|
87
|
+
require 'yard'
|
88
|
+
require 'yard/rake/yardoc_task'
|
89
|
+
|
90
|
+
default_tasks << :'documentation:generate'
|
91
|
+
default_tasks << :'documentation:open' unless ENV['CI']
|
92
|
+
|
93
|
+
task :documentation => :'documentation:generate'
|
94
|
+
namespace :documentation do
|
95
|
+
YARD::Rake::YardocTask.new :generate do |t|
|
96
|
+
t.files = [File.join('lib', '**', '*.rb')]
|
97
|
+
t.options = ['--output-dir', File.join('meta', 'documentation'),
|
98
|
+
'--readme', 'README.markdown']
|
99
|
+
end
|
100
|
+
|
101
|
+
YARD::Rake::YardocTask.new :yardoc do |t|
|
102
|
+
t.files = [File.join('lib', '**', '*.rb')]
|
103
|
+
t.options = ['--no-output',
|
104
|
+
'--readme', 'README.markdown']
|
105
|
+
end
|
106
|
+
|
107
|
+
task :open do
|
108
|
+
system 'open ' + File.join('meta', 'documentation', 'index.html')
|
109
|
+
end if RUBY_PLATFORM =~ /darwin/
|
110
|
+
end
|
111
|
+
|
112
|
+
rescue LoadError => exception
|
113
|
+
raise exception unless exception.message =~ /(yard)$/
|
114
|
+
desc '!! You need the `yard` gem to generate documentation!'
|
115
|
+
task :documentation
|
116
|
+
end
|
117
|
+
|
118
|
+
# =================
|
119
|
+
# = Miscellaneous =
|
120
|
+
# =================
|
121
|
+
desc 'Removes all meta producs'
|
122
|
+
task :clobber do
|
123
|
+
`rm -rf #{File.expand_path(File.join( File.dirname(__FILE__), 'meta' ))} #{File.expand_path(File.join( File.dirname(__FILE__), 'pkg' ))}`
|
124
|
+
end
|
125
|
+
|
126
|
+
desc 'Run all default tasks'
|
127
|
+
task :default => default_tasks do
|
128
|
+
puts "** Successfully ran the following tasks:"
|
129
|
+
puts "** #{Rake.application.tasks.select {|t| t.name == 'default' }.first.prerequisites.join(', ')}"
|
130
|
+
end
|
data/lib/lobby.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
##
|
2
|
+
# Simply the "root class" of this library, to expediate things.
|
3
|
+
class LobbyConstructor
|
4
|
+
Version = 1
|
5
|
+
|
6
|
+
##
|
7
|
+
# This method is responsible for constructing the "lobby environment."
|
8
|
+
def self.construct!
|
9
|
+
lobby = ::Kernel::lobby
|
10
|
+
def lobby.inspect
|
11
|
+
"lobby"
|
12
|
+
end
|
13
|
+
|
14
|
+
root_object_eigenclass = class<<lobby;self;end
|
15
|
+
::Kernel.send :const_set, "Lobby", root_object_eigenclass
|
16
|
+
def root_object_eigenclass.inspect
|
17
|
+
"Lobby"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
module ::Kernel
|
23
|
+
|
24
|
+
##
|
25
|
+
# This method returns the global "root object," also known as "main."
|
26
|
+
def lobby
|
27
|
+
::Kernel.eval('self', ::TOPLEVEL_BINDING)
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
data/lobby.gemspec
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{lobby}
|
5
|
+
s.version = "1"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["elliottcable"]
|
9
|
+
s.date = %q{2009-06-17}
|
10
|
+
s.description = %q{Welcome to Ruby. Enjoy your stay. Here's a chair.}
|
11
|
+
s.email = ["Lobby@elliottcable.com"]
|
12
|
+
s.extra_rdoc_files = ["README.markdown", "lib/lobby.rb"]
|
13
|
+
s.files = ["README.markdown", "Rakefile.rb", "lib/lobby.rb", "spec/lobby_spec.rb", ".manifest", "lobby.gemspec"]
|
14
|
+
s.has_rdoc = true
|
15
|
+
s.homepage = %q{http://github.com/elliottcable/lobby}
|
16
|
+
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Lobby", "--main", "README.markdown"]
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
s.rubyforge_project = %q{lobby}
|
19
|
+
s.rubygems_version = %q{1.3.1}
|
20
|
+
s.summary = %q{Welcome to Ruby. Enjoy your stay. Here's a chair.}
|
21
|
+
|
22
|
+
if s.respond_to? :specification_version then
|
23
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
24
|
+
s.specification_version = 2
|
25
|
+
|
26
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
27
|
+
s.add_development_dependency(%q<echoe>, [">= 0", "= 3.0.2"])
|
28
|
+
s.add_development_dependency(%q<rspec>, [">= 0"])
|
29
|
+
s.add_development_dependency(%q<rcov>, [">= 0"])
|
30
|
+
s.add_development_dependency(%q<yard>, [">= 0"])
|
31
|
+
else
|
32
|
+
s.add_dependency(%q<echoe>, [">= 0", "= 3.0.2"])
|
33
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
34
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
35
|
+
s.add_dependency(%q<yard>, [">= 0"])
|
36
|
+
end
|
37
|
+
else
|
38
|
+
s.add_dependency(%q<echoe>, [">= 0", "= 3.0.2"])
|
39
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
40
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
41
|
+
s.add_dependency(%q<yard>, [">= 0"])
|
42
|
+
end
|
43
|
+
end
|
data/spec/lobby_spec.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
($:.unshift File.expand_path(File.join( File.dirname(__FILE__), '..', 'lib' ))).uniq!
|
2
|
+
require 'lobby'
|
3
|
+
|
4
|
+
describe LobbyConstructor do
|
5
|
+
describe '::construct!' do
|
6
|
+
before :all do
|
7
|
+
LobbyConstructor::construct!
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should rename the root object to "lobby"' do
|
11
|
+
::Kernel.eval('self', ::TOPLEVEL_BINDING).inspect.should == "lobby"
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should provide a singleton class named "Lobby"' do
|
15
|
+
class<<::Kernel.eval('self', ::TOPLEVEL_BINDING);self;end.inspect.should == "Lobby"
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should provide the "Lobby" singleton class under the Lobby constant' do
|
19
|
+
class<<::Kernel.eval('self', ::TOPLEVEL_BINDING);self;end.should ==
|
20
|
+
::Kernel.eval('Lobby', ::TOPLEVEL_BINDING)
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should not allow instantiation of Lobby' do
|
24
|
+
lambda {
|
25
|
+
class<<::Kernel.eval('Lobby', ::TOPLEVEL_BINDING);self;end.new
|
26
|
+
}.should raise_error(TypeError)
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should allow the definition of methods on Lobby' do
|
30
|
+
::Kernel.eval(<<-END, ::TOPLEVEL_BINDING)
|
31
|
+
class Lobby
|
32
|
+
def foo
|
33
|
+
return "foo"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
END
|
37
|
+
|
38
|
+
::Kernel.eval("foo()", ::TOPLEVEL_BINDING).should == "foo"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe 'Kernel#lobby' do
|
44
|
+
it 'should be made available' do
|
45
|
+
lambda { ::Kernel.eval('self', ::TOPLEVEL_BINDING).instance_eval {
|
46
|
+
lobby
|
47
|
+
} }.should_not raise_error
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'should make the main object available from anywhere' do
|
51
|
+
::Kernel.eval('self', ::TOPLEVEL_BINDING).instance_eval {
|
52
|
+
lobby
|
53
|
+
}.should == ::Kernel.eval('self', ::TOPLEVEL_BINDING)
|
54
|
+
end
|
55
|
+
end
|
metadata
ADDED
@@ -0,0 +1,107 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: elliottcable-lobby
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: "1"
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- elliottcable
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-06-17 00:00:00 -07:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: echoe
|
17
|
+
type: :development
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
- - "="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 3.0.2
|
27
|
+
version:
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: rspec
|
30
|
+
type: :development
|
31
|
+
version_requirement:
|
32
|
+
version_requirements: !ruby/object:Gem::Requirement
|
33
|
+
requirements:
|
34
|
+
- - ">="
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: "0"
|
37
|
+
version:
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: rcov
|
40
|
+
type: :development
|
41
|
+
version_requirement:
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: "0"
|
47
|
+
version:
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: yard
|
50
|
+
type: :development
|
51
|
+
version_requirement:
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: "0"
|
57
|
+
version:
|
58
|
+
description: Welcome to Ruby. Enjoy your stay. Here's a chair.
|
59
|
+
email:
|
60
|
+
- Lobby@elliottcable.com
|
61
|
+
executables: []
|
62
|
+
|
63
|
+
extensions: []
|
64
|
+
|
65
|
+
extra_rdoc_files:
|
66
|
+
- README.markdown
|
67
|
+
- lib/lobby.rb
|
68
|
+
files:
|
69
|
+
- README.markdown
|
70
|
+
- Rakefile.rb
|
71
|
+
- lib/lobby.rb
|
72
|
+
- spec/lobby_spec.rb
|
73
|
+
- .manifest
|
74
|
+
- lobby.gemspec
|
75
|
+
has_rdoc: true
|
76
|
+
homepage: http://github.com/elliottcable/lobby
|
77
|
+
post_install_message:
|
78
|
+
rdoc_options:
|
79
|
+
- --line-numbers
|
80
|
+
- --inline-source
|
81
|
+
- --title
|
82
|
+
- Lobby
|
83
|
+
- --main
|
84
|
+
- README.markdown
|
85
|
+
require_paths:
|
86
|
+
- lib
|
87
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: "0"
|
92
|
+
version:
|
93
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: "1.2"
|
98
|
+
version:
|
99
|
+
requirements: []
|
100
|
+
|
101
|
+
rubyforge_project: lobby
|
102
|
+
rubygems_version: 1.2.0
|
103
|
+
signing_key:
|
104
|
+
specification_version: 2
|
105
|
+
summary: Welcome to Ruby. Enjoy your stay. Here's a chair.
|
106
|
+
test_files: []
|
107
|
+
|