curse 0.0.1 → 1.0.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 (4) hide show
  1. data/README.md +8 -2
  2. data/lib/curse.rb +56 -4
  3. data/lib/curse/version.rb +1 -1
  4. metadata +2 -2
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Curse
2
2
 
3
- TODO: Write a gem description
3
+ make ruby objects curse each other, just curse, or become cursed.
4
4
 
5
5
  ## Installation
6
6
 
@@ -18,7 +18,13 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- TODO: Write usage instructions here
21
+ require 'curse'
22
+
23
+ 6.curse 7
24
+ curse
25
+
26
+ victim = MyClass.new
27
+ victim.curse! #and watch the fireworks
22
28
 
23
29
  ## Contributing
24
30
 
@@ -1,15 +1,67 @@
1
1
  require "curse/version"
2
2
 
3
3
  module Curse
4
+ @@curses = {}
4
5
 
5
- end
6
+ def self.register(handle, klass)
7
+ @@curses[handle] = klass.new
8
+ end
6
9
 
7
- module Kernel
10
+ def self.language=(handle)
11
+ @@active = @@curses[handle]
12
+ end
8
13
 
9
- def curse!
14
+ def curses
10
15
  rand(4).times.map do
11
- (3 + rand(4)).times.map { ['%','#','@', '*', '&'].sample }.join
16
+ @@active.curse
12
17
  end.join(' ') + '!'
18
+ end
19
+
20
+ def adverbs
21
+ rand(4).times.map { @@active.adverb }
22
+ end
23
+
24
+ class Comic
25
+
26
+ def curse
27
+ (3 + rand(4)).times.map { ['%','#','@', '*', '&'].sample }.join
28
+ end
29
+
30
+ def adverb
31
+ "#{curse}ing"
32
+ end
33
+
34
+ end
35
+
36
+
37
+
38
+ end
39
+
40
+ Curse.register(:comic, Curse::Comic)
41
+ Curse.language = :comic
42
+
43
+
44
+ class Object
45
+ include Curse
46
+
47
+ def curse(other = nil)
48
+ if other
49
+ "#{self}: #{ Kernel.adverbs.join(' ') } #{other}"
50
+ else
51
+ "#{self}: #{Kernel.curses}"
52
+ end
53
+ end
54
+
55
+ def curse!
56
+
57
+ (methods - Object.methods).sample(4).each do |method|
58
+
59
+ define_singleton_method method do |*args|
60
+ puts self.curse
61
+ rand(20)
62
+ end
63
+
64
+ end
13
65
 
14
66
  end
15
67
 
@@ -1,3 +1,3 @@
1
1
  module Curse
2
- VERSION = "0.0.1"
2
+ VERSION = "1.0.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: curse
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-08 00:00:00.000000000 Z
12
+ date: 2013-08-31 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: make ruby curse
15
15
  email: