fendhal 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.
@@ -0,0 +1,6 @@
1
+ /.bundle
2
+ /log/*.log
3
+ /tmp
4
+ /tags
5
+ /coverage
6
+ *.gem
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
3
+ gem 'json', '~> 1.7.7'
@@ -0,0 +1,65 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ fendhal (0.0.1)
5
+ actionpack
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ actionpack (3.2.13)
11
+ activemodel (= 3.2.13)
12
+ activesupport (= 3.2.13)
13
+ builder (~> 3.0.0)
14
+ erubis (~> 2.7.0)
15
+ journey (~> 1.0.4)
16
+ rack (~> 1.4.5)
17
+ rack-cache (~> 1.2)
18
+ rack-test (~> 0.6.1)
19
+ sprockets (~> 2.2.1)
20
+ activemodel (3.2.13)
21
+ activesupport (= 3.2.13)
22
+ builder (~> 3.0.0)
23
+ activesupport (3.2.13)
24
+ i18n (= 0.6.1)
25
+ multi_json (~> 1.0)
26
+ builder (3.0.4)
27
+ diff-lcs (1.2.4)
28
+ erubis (2.7.0)
29
+ hike (1.2.2)
30
+ i18n (0.6.1)
31
+ journey (1.0.4)
32
+ json (1.7.7)
33
+ multi_json (1.7.3)
34
+ rack (1.4.5)
35
+ rack-cache (1.2)
36
+ rack (>= 0.4)
37
+ rack-test (0.6.2)
38
+ rack (>= 1.0)
39
+ rspec (2.13.0)
40
+ rspec-core (~> 2.13.0)
41
+ rspec-expectations (~> 2.13.0)
42
+ rspec-mocks (~> 2.13.0)
43
+ rspec-core (2.13.1)
44
+ rspec-expectations (2.13.0)
45
+ diff-lcs (>= 1.1.3, < 2.0)
46
+ rspec-mocks (2.13.1)
47
+ simplecov (0.7.1)
48
+ multi_json (~> 1.0)
49
+ simplecov-html (~> 0.7.1)
50
+ simplecov-html (0.7.1)
51
+ sprockets (2.2.2)
52
+ hike (~> 1.2)
53
+ multi_json (~> 1.0)
54
+ rack (~> 1.0)
55
+ tilt (~> 1.1, != 1.3.0)
56
+ tilt (1.4.1)
57
+
58
+ PLATFORMS
59
+ ruby
60
+
61
+ DEPENDENCIES
62
+ fendhal!
63
+ json (~> 1.7.7)
64
+ rspec
65
+ simplecov
File without changes
@@ -0,0 +1,18 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'fendhal'
3
+ s.version = '0.0.1'
4
+ s.date = '2013-05-22'
5
+ s.summary = "Modular, class based controller actions for Rails"
6
+ s.description = "Modular, class based controller actions for Rails"
7
+ s.authors = ["Russell Dunphy"]
8
+ s.email = ['russell@russelldunphy.com']
9
+ s.files = `git ls-files`.split($\)
10
+ s.test_files = s.files.grep(%r{^(test|spec|features)/})
11
+ s.require_paths = ["lib"]
12
+ s.homepage = 'http://github.com/rsslldnphy/fendhal'
13
+
14
+ s.add_dependency "actionpack"
15
+ s.add_development_dependency "rspec"
16
+ s.add_development_dependency "simplecov"
17
+
18
+ end
@@ -0,0 +1,8 @@
1
+ require 'action_controller'
2
+ require 'delegate'
3
+
4
+ require 'fendhal/controller'
5
+ require 'fendhal/action'
6
+
7
+ module Fendhal
8
+ end
@@ -0,0 +1,45 @@
1
+ module Fendhal
2
+ class Action < SimpleDelegator
3
+
4
+ def action
5
+ end
6
+
7
+ def respond_to *formats
8
+ super() { |format| formats.each { |f| format.send(f) { send f } } }
9
+ end
10
+
11
+ def all
12
+ end
13
+
14
+ def text
15
+ end
16
+
17
+ def html
18
+ end
19
+
20
+ def js
21
+ end
22
+
23
+ def ics
24
+ end
25
+
26
+ def csv
27
+ end
28
+
29
+ def xml
30
+ end
31
+
32
+ def yaml
33
+ end
34
+
35
+ def rss
36
+ end
37
+
38
+ def atom
39
+ end
40
+
41
+ def json
42
+ end
43
+ end
44
+ end
45
+
@@ -0,0 +1,17 @@
1
+ module Fendhal
2
+ class Controller < ActionController::Base
3
+
4
+ def self.defines *actions
5
+ actions.each do |action|
6
+ define_method(action) { class_for(action).new(self).action }
7
+ end
8
+ end
9
+
10
+ private
11
+
12
+ def class_for(action)
13
+ self.class.const_get(action.to_s.camelcase)
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,44 @@
1
+ require 'spec_helper'
2
+
3
+ module Fendhal
4
+
5
+ class TestAction < Action
6
+
7
+ def action
8
+ respond_to :html, :csv
9
+ end
10
+
11
+ end
12
+
13
+ class MockController
14
+
15
+ def respond_to &block
16
+ block.call format
17
+ end
18
+
19
+ class Format
20
+ def method_missing name, *args, &block
21
+ self
22
+ end
23
+ end
24
+
25
+ def format
26
+ @format ||= Format.new
27
+ end
28
+
29
+ end
30
+
31
+ describe Action do
32
+
33
+ let (:action) { Action.new(controller) }
34
+ let (:controller) { MockController.new }
35
+ let (:format) { controller.format }
36
+
37
+ it 'responds to formats by calling the respective methods' do
38
+ format.should_receive(:html)
39
+ format.should_receive(:csv)
40
+ action.respond_to(:html, :csv)
41
+ end
42
+
43
+ end
44
+ end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ module Fendhal
4
+ describe Controller do
5
+
6
+ class TestController < Controller
7
+
8
+ class Index < Action
9
+
10
+ def action
11
+ "Here's the action!"
12
+ end
13
+
14
+ end
15
+
16
+ defines :index
17
+
18
+ end
19
+
20
+ let (:controller) { TestController.new }
21
+
22
+ it 'defines the specified actions' do
23
+ controller.should respond_to :index
24
+ end
25
+
26
+ it 'delegates to the respective classes for each action' do
27
+ controller.index.should eq "Here's the action!"
28
+ end
29
+
30
+ end
31
+ end
@@ -0,0 +1,5 @@
1
+ require 'spec_helper'
2
+
3
+ describe Fendhal do
4
+ it 'exists' do end
5
+ end
@@ -0,0 +1,12 @@
1
+ require 'simplecov'
2
+ SimpleCov.start do
3
+ add_filter '/spec'
4
+ end
5
+
6
+ require 'rspec'
7
+ require 'fendhal'
8
+
9
+ RSpec.configure do |config|
10
+ config.order = :rand
11
+ config.color_enabled = true
12
+ end
metadata ADDED
@@ -0,0 +1,110 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fendhal
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Russell Dunphy
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-05-22 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: actionpack
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rspec
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: simplecov
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ description: Modular, class based controller actions for Rails
63
+ email:
64
+ - russell@russelldunphy.com
65
+ executables: []
66
+ extensions: []
67
+ extra_rdoc_files: []
68
+ files:
69
+ - .gitignore
70
+ - Gemfile
71
+ - Gemfile.lock
72
+ - README.md
73
+ - fendhal.gemspec
74
+ - lib/fendhal.rb
75
+ - lib/fendhal/action.rb
76
+ - lib/fendhal/controller.rb
77
+ - spec/lib/fendhal/action_spec.rb
78
+ - spec/lib/fendhal/controller_spec.rb
79
+ - spec/lib/fendhal_spec.rb
80
+ - spec/spec_helper.rb
81
+ homepage: http://github.com/rsslldnphy/fendhal
82
+ licenses: []
83
+ post_install_message:
84
+ rdoc_options: []
85
+ require_paths:
86
+ - lib
87
+ required_ruby_version: !ruby/object:Gem::Requirement
88
+ none: false
89
+ requirements:
90
+ - - ! '>='
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ required_rubygems_version: !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ requirements: []
100
+ rubyforge_project:
101
+ rubygems_version: 1.8.25
102
+ signing_key:
103
+ specification_version: 3
104
+ summary: Modular, class based controller actions for Rails
105
+ test_files:
106
+ - spec/lib/fendhal/action_spec.rb
107
+ - spec/lib/fendhal/controller_spec.rb
108
+ - spec/lib/fendhal_spec.rb
109
+ - spec/spec_helper.rb
110
+ has_rdoc: