elliottcable-slack 0

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 (6) hide show
  1. data/.manifest +4 -0
  2. data/README.markdown +5 -0
  3. data/Rakefile.rb +89 -0
  4. data/lib/slack.rb +91 -0
  5. data/slack.gemspec +46 -0
  6. metadata +117 -0
data/.manifest ADDED
@@ -0,0 +1,4 @@
1
+ lib/slack.rb
2
+ Rakefile.rb
3
+ README.markdown
4
+ .manifest
data/README.markdown ADDED
@@ -0,0 +1,5 @@
1
+ Slack
2
+ =====
3
+ Convenience magic for [Speck][] (<http://Speck.im/>).
4
+
5
+ [Speck]: http://github.com/elliottcable/Speck "Speck on GitHub"
data/Rakefile.rb ADDED
@@ -0,0 +1,89 @@
1
+ ($:.unshift File.expand_path(File.join( File.dirname(__FILE__), 'lib' ))).uniq!
2
+ require 'slack'
3
+
4
+ # =======================
5
+ # = Gem packaging tasks =
6
+ # =======================
7
+ begin
8
+ require 'echoe'
9
+
10
+ task :install => :'package:install'
11
+ task :package => :'package:package'
12
+ task :manifest => :'package:manifest'
13
+ namespace :package do
14
+ Echoe.new('slack', Slack::Version) do |g|
15
+ g.project = 'speck'
16
+ g.author = ['elliottcable']
17
+ g.email = ['Slack@elliottcable.com']
18
+ g.summary = "Magic makes everybody's life a little easier, no?"
19
+ g.url = 'http://github.com/elliottcable/Slack'
20
+ g.runtime_dependencies = ['speck']
21
+ g.development_dependencies = ['echoe >= 3.0.2', 'speck', 'yard', 'maruku']
22
+ g.manifest_name = '.manifest'
23
+ g.retain_gemspec = true
24
+ g.rakefile_name = 'Rakefile.rb'
25
+ g.ignore_pattern = /^\.git\/|^meta\/|\.gemspec/
26
+ end
27
+ end
28
+
29
+ rescue LoadError
30
+ desc 'You need the `echoe` gem to package Slack'
31
+ task :package
32
+ end
33
+
34
+ # ===============
35
+ # = Speck tasks =
36
+ # ===============
37
+ begin
38
+ require 'speck'
39
+
40
+ task :default => :'speck:run'
41
+ task :speck => :'speck:run'
42
+ namespace :speck do
43
+ load 'speck.rake'
44
+ end
45
+
46
+ rescue LoadError
47
+ desc 'You need the `speck` gem to run specks'
48
+ task :speck
49
+ end
50
+
51
+ # =======================
52
+ # = Documentation tasks =
53
+ # =======================
54
+ begin
55
+ require 'yard'
56
+ require 'yard/rake/yardoc_task'
57
+
58
+ task :documentation => :'documentation:generate'
59
+ namespace :documentation do
60
+ YARD::Rake::YardocTask.new :generate do |t|
61
+ t.files = ['lib/**/*.rb']
62
+ t.options = ['--output-dir', File.join('meta', 'documentation'),
63
+ '--readme', 'README.markdown',
64
+ '--markup', 'markdown', '--markup-provider', 'maruku']
65
+ end
66
+
67
+ YARD::Rake::YardocTask.new :dotyardoc do |t|
68
+ t.files = ['lib/**/*.rb']
69
+ t.options = ['--no-output',
70
+ '--readme', 'README.markdown',
71
+ '--markup', 'markdown', '--markup-provider', 'maruku']
72
+ end
73
+
74
+ task :open do
75
+ system 'open ' + File.join('meta', 'documentation', 'index.html') if RUBY_PLATFORM['darwin']
76
+ end
77
+ end
78
+
79
+ rescue LoadError
80
+ desc 'You need the `yard` and `maruku` gems to generate documentation'
81
+ task :documentation
82
+ end
83
+
84
+ desc 'Check everything over before commiting'
85
+ task :aok => [:'documentation:generate', :'documentation:open',
86
+ :'package:manifest',
87
+ :'speck:run']
88
+
89
+ task :ci => [:'documentation:generate', :'speck:run']
data/lib/slack.rb ADDED
@@ -0,0 +1,91 @@
1
+ ##
2
+ # Methods in `Slack` are provided with the purpose of making it simpler (and
3
+ # sexier!) to create `Speck::Check`s.
4
+ module Slack
5
+ Version = 0
6
+
7
+ ##
8
+ # These modules (named after the Class they are intended to be mixed into)
9
+ # provide convenience methods on those classes.
10
+ module Mixins
11
+
12
+ module Object
13
+ ##
14
+ # This method creates a new `Speck::Check` utilizing a passed block.
15
+ #
16
+ # It expects a block (returning `true` or `false`) to be passed. The
17
+ # block will be passed the receiver, so you can run comparators on it,
18
+ # or whatever else you like.
19
+ #
20
+ # The intention is that this method be used to quickly check that
21
+ # particular methods return values as expected. For instance, the
22
+ # following would be used to check that MyClass#initialize properly
23
+ # assigns its argument to the `thingie` attribute:
24
+ #
25
+ # MyClass.new(an_object).check {|my| my.thingie == an_object }
26
+ #
27
+ # The new `Check` instance is automatically documented with the contents
28
+ # of the line of Ruby that produced the receiver of this method.
29
+ # --
30
+ # TODO: Speck Object#check
31
+ # TODO: Remove the `->{self}` functionality, and implement Mixins::Truthy
32
+ # for TrueClass/FalseClass/NilClass
33
+ def check &check
34
+ check = ->(_){self} unless block_given?
35
+
36
+ # TODO: Should we allow specks in the root environment? Could be useful
37
+ # for quick checks…
38
+ raise Exception::NoEnvironment unless Speck.current
39
+
40
+ # TODO: Implement documenting the `Check` using a preceding comment,
41
+ # if present.
42
+ # TODO: Move this into its own methods deeper in the library, and
43
+ # clean it up.
44
+ file, line, _ = Kernel::caller.first.split(':')
45
+ source = File.open(file).readlines[line.to_i - 1]
46
+ source.strip!
47
+ source = source.partition(".check").first
48
+ # TODO: Get rid of the "(…)" around the resulting string.
49
+ # TODO: Implement multi–line source documenting.
50
+
51
+ Speck::Check.new(->(){ check[self] }, source)
52
+ .tap {|check| Speck.current.checks << check }
53
+ end
54
+ end
55
+ ::Object.send :include, Slack::Mixins::Object
56
+
57
+ module Proc
58
+ ##
59
+ # This method creates a new `Speck::Check` initialized to pass if the
60
+ # receiver can be executed without `exception` being raised, or fail if
61
+ # the receiver raises `exception` when raised.
62
+ #
63
+ # The passed exception object will be `rescue`d from within the block,
64
+ # but any other exception raised by the block will not be caught.
65
+ def check_exception exception = Exception
66
+ # TODO: Should we allow specks in the root environment? Could be useful
67
+ # for quick checks…
68
+ raise Exception::NoEnvironment unless Speck.current
69
+
70
+ file, line, _ = Kernel::caller.first.split(':')
71
+ source = File.open(file).readlines[line.to_i - 1]
72
+ source.strip!
73
+ source = source.partition(".check_exception").first
74
+ # TODO: Get rid of the "->{…}" around the resulting string.
75
+
76
+ Speck::Check.new(->(){
77
+ begin
78
+ self.call
79
+ rescue exception
80
+ return true
81
+ end
82
+ return false
83
+ }, source)
84
+ .tap {|check| Speck.current.checks << check }
85
+ end
86
+ end
87
+ ::Proc.send :include, Slack::Mixins::Proc
88
+
89
+ end
90
+
91
+ end
data/slack.gemspec ADDED
@@ -0,0 +1,46 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{slack}
5
+ s.version = "0"
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-08-04}
10
+ s.description = %q{Magic makes everybody's life a little easier, no?}
11
+ s.email = ["Slack@elliottcable.com"]
12
+ s.extra_rdoc_files = ["lib/slack.rb", "README.markdown"]
13
+ s.files = ["lib/slack.rb", "Rakefile.rb", "README.markdown", ".manifest", "slack.gemspec"]
14
+ s.has_rdoc = true
15
+ s.homepage = %q{http://github.com/elliottcable/Slack}
16
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Slack", "--main", "README.markdown"]
17
+ s.require_paths = ["lib"]
18
+ s.rubyforge_project = %q{speck}
19
+ s.rubygems_version = %q{1.3.1}
20
+ s.summary = %q{Magic makes everybody's life a little easier, no?}
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_runtime_dependency(%q<speck>, [">= 0"])
28
+ s.add_development_dependency(%q<echoe>, [">= 0", "= 3.0.2"])
29
+ s.add_development_dependency(%q<speck>, [">= 0"])
30
+ s.add_development_dependency(%q<yard>, [">= 0"])
31
+ s.add_development_dependency(%q<maruku>, [">= 0"])
32
+ else
33
+ s.add_dependency(%q<speck>, [">= 0"])
34
+ s.add_dependency(%q<echoe>, [">= 0", "= 3.0.2"])
35
+ s.add_dependency(%q<speck>, [">= 0"])
36
+ s.add_dependency(%q<yard>, [">= 0"])
37
+ s.add_dependency(%q<maruku>, [">= 0"])
38
+ end
39
+ else
40
+ s.add_dependency(%q<speck>, [">= 0"])
41
+ s.add_dependency(%q<echoe>, [">= 0", "= 3.0.2"])
42
+ s.add_dependency(%q<speck>, [">= 0"])
43
+ s.add_dependency(%q<yard>, [">= 0"])
44
+ s.add_dependency(%q<maruku>, [">= 0"])
45
+ end
46
+ end
metadata ADDED
@@ -0,0 +1,117 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: elliottcable-slack
3
+ version: !ruby/object:Gem::Version
4
+ version: "0"
5
+ platform: ruby
6
+ authors:
7
+ - elliottcable
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-08-04 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: speck
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: echoe
27
+ type: :development
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ - - "="
35
+ - !ruby/object:Gem::Version
36
+ version: 3.0.2
37
+ version:
38
+ - !ruby/object:Gem::Dependency
39
+ name: speck
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
+ - !ruby/object:Gem::Dependency
59
+ name: maruku
60
+ type: :development
61
+ version_requirement:
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: "0"
67
+ version:
68
+ description: Magic makes everybody's life a little easier, no?
69
+ email:
70
+ - Slack@elliottcable.com
71
+ executables: []
72
+
73
+ extensions: []
74
+
75
+ extra_rdoc_files:
76
+ - lib/slack.rb
77
+ - README.markdown
78
+ files:
79
+ - lib/slack.rb
80
+ - Rakefile.rb
81
+ - README.markdown
82
+ - .manifest
83
+ - slack.gemspec
84
+ has_rdoc: true
85
+ homepage: http://github.com/elliottcable/Slack
86
+ licenses:
87
+ post_install_message:
88
+ rdoc_options:
89
+ - --line-numbers
90
+ - --inline-source
91
+ - --title
92
+ - Slack
93
+ - --main
94
+ - README.markdown
95
+ require_paths:
96
+ - lib
97
+ required_ruby_version: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: "0"
102
+ version:
103
+ required_rubygems_version: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: "1.2"
108
+ version:
109
+ requirements: []
110
+
111
+ rubyforge_project: speck
112
+ rubygems_version: 1.3.5
113
+ signing_key:
114
+ specification_version: 2
115
+ summary: Magic makes everybody's life a little easier, no?
116
+ test_files: []
117
+