shot_libs 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.
data/LICENSE.md ADDED
File without changes
data/README.md ADDED
@@ -0,0 +1,63 @@
1
+ Introduction
2
+ ------------
3
+
4
+ Shot Libs is a series of Loaders which allow you to utilize Helpers and Libraries to outsource controller and app logic.
5
+
6
+
7
+ Installation
8
+ ------------
9
+
10
+ ```
11
+ gem install shot_libs
12
+ ```
13
+
14
+
15
+ Usage Example
16
+ -------------
17
+
18
+ ```ruby
19
+ require 'shot'
20
+ require 'shot_libs'
21
+
22
+ app = Application.new
23
+
24
+ app.add_loader HelperLoader
25
+ app.add_loader LibraryLoader
26
+
27
+ app.run do
28
+ app.on 'load' do |instance|
29
+ instance.get 'library', 'SomeLibrary'
30
+ end
31
+ end
32
+
33
+ app.start
34
+ ```
35
+
36
+ Controller Example
37
+ ------------------
38
+
39
+ **application/helpers/email.rb**
40
+
41
+ ```ruby
42
+ class Email
43
+ self.send_email(recipient, subject, body)
44
+ # Actually send an email here using the devil's magic of SMTP
45
+ end
46
+ end
47
+ ```
48
+
49
+ **application/controllers/email.rb**
50
+
51
+ ```ruby
52
+ require 'shot_mvc'
53
+
54
+ class EmailController < Controller
55
+ def setup
56
+ get 'helper', 'Email'
57
+ end
58
+
59
+ def send(message)
60
+ Email.send_email message['recipient'], message['subject'], message['body']
61
+ end
62
+ end
63
+ ```
@@ -0,0 +1,14 @@
1
+ # HelperLoadException
2
+ #
3
+ # Thrown if an error occurs when loading a helper.
4
+ #
5
+ # Shot Framework - Copyright (c) Jesse Aaron Dunlap <me@jessedunlap.me>
6
+ # Licensed under the MIT License. For full licensing information, please
7
+ # see LICENSE.md. http://github.com/JesseDunlap/shot/
8
+
9
+
10
+ class HelperLoadException < Exception
11
+ def initialize(message)
12
+ super(message)
13
+ end
14
+ end
@@ -0,0 +1,44 @@
1
+ # HelperLoader
2
+ #
3
+ # Adds Helper loading capability to the Shot Framework. Helpers are simply outsourcing libraries
4
+ # for use in Controllers only.
5
+ #
6
+ # Shot Framework - Copyright (c) Jesse Aaron Dunlap <me@jessedunlap.me>
7
+ # Licensed under the MIT License. For full licensing information, please
8
+ # see LICENSE.md. http://github.com/JesseDunlap/shot/
9
+
10
+ require 'shot'
11
+
12
+ require_relative './library_load_exception'
13
+
14
+ class String
15
+ # Converts a CamelCased string to a underscore_string
16
+ def underscore
17
+ self.gsub(/::/, '/').
18
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
19
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
20
+ tr("-", "_").
21
+ downcase
22
+ end
23
+ end
24
+
25
+ class HelperLoader < Loader
26
+ def initialize(client)
27
+ super(client)
28
+ @type = 'helper'
29
+ end
30
+
31
+ def get(helper_name)
32
+ if helper_exists? helper_name
33
+ load "./application/helpers/#{helper_name.underscore}.rb"
34
+ else
35
+ raise HelperLoadException "Could not find helper #{helper_name}. Please verify it exists at application/helpers/#{helper_name.underscore}.rb"
36
+ end
37
+ end
38
+
39
+ private
40
+
41
+ def helper_exists?(helper)
42
+ Dir.exists? 'application/helpers' and File.exists? "application/helpers/#{helper.underscore}.rb"
43
+ end
44
+ end
@@ -0,0 +1,14 @@
1
+ # LibraryLoadException
2
+ #
3
+ # Thrown if a Library doesn't exist.
4
+ #
5
+ # Shot Framework - Copyright (c) Jesse Aaron Dunlap <me@jessedunlap.me>
6
+ # Licensed under the MIT License. For full licensing information, please
7
+ # see LICENSE.md. http://github.com/JesseDunlap/shot/
8
+
9
+
10
+ class LibraryLoadException < Exception
11
+ def initialize(message)
12
+ super(message)
13
+ end
14
+ end
@@ -0,0 +1,44 @@
1
+ # LibraryLoader
2
+ #
3
+ # Adds Helper loading capability to the Shot Framework. Helpers are simply outsourcing libraries
4
+ # for use in Controllers only.
5
+ #
6
+ # Shot Framework - Copyright (c) Jesse Aaron Dunlap <me@jessedunlap.me>
7
+ # Licensed under the MIT License. For full licensing information, please
8
+ # see LICENSE.md. http://github.com/JesseDunlap/shot/
9
+
10
+ require 'shot'
11
+
12
+ require_relative './library_load_exception'
13
+
14
+ class String
15
+ # Converts a CamelCased string to a underscore_string
16
+ def underscore
17
+ self.gsub(/::/, '/').
18
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
19
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
20
+ tr("-", "_").
21
+ downcase
22
+ end
23
+ end
24
+
25
+ class LibraryLoader < Loader
26
+ def initialize(client)
27
+ super(client)
28
+ @type = 'library'
29
+ end
30
+
31
+ def get(library_name)
32
+ if helper_exists helper
33
+ load "./application/libraries/#{library_name.underscore}.rb"
34
+ else
35
+ raise LibraryLoadException "Could not find library #{library_name}. Please verify it exists at application/libraries/#{library_name.underscore}.rb"
36
+ end
37
+ end
38
+
39
+ private
40
+
41
+ def helper_exits(helper)
42
+ Dir.exists? 'application/libraries' and File.exists? "application/libraries/#{helper.underscore}.rb"
43
+ end
44
+ end
data/lib/shot_libs.rb ADDED
@@ -0,0 +1,4 @@
1
+ require_relative './shot_libs/library_loader'
2
+ require_relative './shot_libs/library_load_exception'
3
+ require_relative './shot_libs/helper_loader'
4
+ require_relative './shot_libs/helper_load_exception'
metadata ADDED
@@ -0,0 +1,101 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: shot_libs
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Jesse A. Dunlap
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-06-30 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: shot
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: shot_mvc
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
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: flexmock
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: Shot Libs implements a series of Loaders, which can be used to obtain
63
+ instances of Helpers and Libraries, to extract business logic from your MVC application.
64
+ email: me@jessedunlap.me
65
+ executables: []
66
+ extensions: []
67
+ extra_rdoc_files: []
68
+ files:
69
+ - lib/shot_libs/helper_loader.rb
70
+ - lib/shot_libs/helper_load_exception.rb
71
+ - lib/shot_libs/library_loader.rb
72
+ - lib/shot_libs/library_load_exception.rb
73
+ - lib/shot_libs.rb
74
+ - LICENSE.md
75
+ - README.md
76
+ homepage: http://github.com/shot/
77
+ licenses:
78
+ - MIT
79
+ post_install_message:
80
+ rdoc_options: []
81
+ require_paths:
82
+ - lib
83
+ required_ruby_version: !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ required_rubygems_version: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ requirements: []
96
+ rubyforge_project:
97
+ rubygems_version: 1.8.24
98
+ signing_key:
99
+ specification_version: 3
100
+ summary: Adds library loading ability to Shot, for better code organization.
101
+ test_files: []