luka 0.0.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/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in loki.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,31 @@
1
+ # Luka
2
+ ## The duplicitous, silver-tongued proxy.
3
+
4
+ Luka is a simple proxy that gives you a fluent interface layer on top of any object.
5
+
6
+ class Pie
7
+ def slice
8
+ @sliced = true
9
+ end
10
+
11
+ def take
12
+ @taken = true
13
+ end
14
+
15
+ def sliced?
16
+ @sliced
17
+ end
18
+
19
+ def taken?
20
+ @taken
21
+ end
22
+ end
23
+
24
+ pie = Pie.new
25
+ eloquent_pie = luka(Pie.new)
26
+ eloquent_pie.slice.take
27
+
28
+ eloquent_pie.sliced? # => true
29
+ eloquent_pie.taken? # => true
30
+
31
+ There you have it.
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/lib/luka.rb ADDED
@@ -0,0 +1,20 @@
1
+ require "luka/version"
2
+
3
+ module Luka
4
+ def luka(object)
5
+ return Luka::Fluent.new object
6
+ end
7
+
8
+ class Fluent
9
+ def initialize object
10
+ @object = object
11
+ end
12
+
13
+ private
14
+
15
+ def method_missing name, *arguments, &block
16
+ @object.send(name, *arguments, &block)
17
+ self
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,3 @@
1
+ module Luka
2
+ VERSION = "0.0.1"
3
+ end
data/luka.gemspec ADDED
@@ -0,0 +1,25 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "luka/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "luka"
7
+ s.version = Luka::VERSION
8
+ s.authors = ["Sathya Sekaran"]
9
+ s.email = ["sfsekaran@gmail.com"]
10
+ s.homepage = ""
11
+ s.summary = %q{Luka: The duplicitous, silver-tongued proxy.}
12
+ s.description = %q{Luka is a simple proxy that gives you a fluent interface layer on top of any object.}
13
+
14
+ s.rubyforge_project = "luka"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ # specify any dependencies here; for example:
22
+ s.add_development_dependency "rspec"
23
+ s.add_development_dependency "rake"
24
+ # s.add_runtime_dependency "rest-client"
25
+ end
data/spec/luka_spec.rb ADDED
@@ -0,0 +1,40 @@
1
+ require 'luka'
2
+
3
+ describe Luka do
4
+ include Luka
5
+
6
+ class Banana
7
+ def peel
8
+ @peeled = true
9
+ end
10
+ def squish
11
+ @squished = true
12
+ end
13
+ def peeled?
14
+ @peeled
15
+ end
16
+ def squished?
17
+ @squished
18
+ end
19
+ end
20
+
21
+ let(:banana) { Banana.new }
22
+ subject { luka(banana) }
23
+
24
+ it { should be_an_instance_of(Luka::Fluent) }
25
+
26
+ it 'calls the method on the original object' do
27
+ subject.peel
28
+ banana.should be_peeled
29
+ end
30
+
31
+ it 'returns itself when a method is called' do
32
+ subject.peel.should == subject
33
+ end
34
+
35
+ it 'chains methods' do
36
+ subject.peel.squish
37
+ banana.should be_peeled
38
+ banana.should be_squished
39
+ end
40
+ end
metadata ADDED
@@ -0,0 +1,100 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: luka
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Sathya Sekaran
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2012-05-04 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: rspec
22
+ version_requirements: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ hash: 3
28
+ segments:
29
+ - 0
30
+ version: "0"
31
+ prerelease: false
32
+ type: :development
33
+ requirement: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: rake
36
+ version_requirements: &id002 !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ hash: 3
42
+ segments:
43
+ - 0
44
+ version: "0"
45
+ prerelease: false
46
+ type: :development
47
+ requirement: *id002
48
+ description: Luka is a simple proxy that gives you a fluent interface layer on top of any object.
49
+ email:
50
+ - sfsekaran@gmail.com
51
+ executables: []
52
+
53
+ extensions: []
54
+
55
+ extra_rdoc_files: []
56
+
57
+ files:
58
+ - .gitignore
59
+ - Gemfile
60
+ - README.md
61
+ - Rakefile
62
+ - lib/luka.rb
63
+ - lib/luka/version.rb
64
+ - luka.gemspec
65
+ - spec/luka_spec.rb
66
+ homepage: ""
67
+ licenses: []
68
+
69
+ post_install_message:
70
+ rdoc_options: []
71
+
72
+ require_paths:
73
+ - lib
74
+ required_ruby_version: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ hash: 3
80
+ segments:
81
+ - 0
82
+ version: "0"
83
+ required_rubygems_version: !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ hash: 3
89
+ segments:
90
+ - 0
91
+ version: "0"
92
+ requirements: []
93
+
94
+ rubyforge_project: luka
95
+ rubygems_version: 1.8.24
96
+ signing_key:
97
+ specification_version: 3
98
+ summary: "Luka: The duplicitous, silver-tongued proxy."
99
+ test_files:
100
+ - spec/luka_spec.rb