bullseye 0.0.4 → 0.0.7
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/README.md +26 -1
- data/app/assets/javascripts/bullseye.js.erb +8 -2
- data/lib/bullseye.rb +2 -10
- data/lib/bullseye/engine.rb +20 -0
- data/lib/bullseye/find_parts.rb +26 -0
- data/lib/bullseye/helpers/bullseye_controller_helper.rb +14 -0
- data/lib/bullseye/helpers/bullseye_helper.rb +14 -1
- data/lib/bullseye/sass/bullseye_functions.rb +7 -4
- data/lib/bullseye/tilt/bullseye_template.rb +5 -4
- data/lib/bullseye/version.rb +1 -1
- data/skel/config/initializers/bullseye.rb +9 -0
- metadata +11 -4
- data/lib/bullseye/tilt/find_parts.rb +0 -18
data/README.md
CHANGED
@@ -52,6 +52,14 @@ alert("I am showing a site");
|
|
52
52
|
alert "I am also showing a site"
|
53
53
|
```
|
54
54
|
|
55
|
+
Want to use the same JavaScript for two actions, say `new` and `edit`? Put both actions in the filename separated by a dash:
|
56
|
+
|
57
|
+
``` coffeescript
|
58
|
+
# app/assets/javascripts/bullseye/sites/new-edit.bullseye.coffee
|
59
|
+
|
60
|
+
alert "I appear on both the new and edit actions"
|
61
|
+
```
|
62
|
+
|
55
63
|
Want to target that page in your Sass? Use a little string interpolation and a function that generates a selector:
|
56
64
|
|
57
65
|
``` sass
|
@@ -75,13 +83,30 @@ Create an initializer, like `config/initializers/bullseye.rb` and add the follow
|
|
75
83
|
Bullseye.configure do |config|
|
76
84
|
config.fuzzy_search = %{$('body').get(0).classNames.split(/\\s+/)}
|
77
85
|
config.css_selector = 'body.:action.:controller'
|
86
|
+
config.html_tag = { 'class' => ':action :controller' }
|
78
87
|
end
|
79
88
|
```
|
80
89
|
|
81
90
|
Then you can make your `controller/action.bullseye` files and everything should just work.
|
82
91
|
|
92
|
+
## Force the name of the controller/action
|
93
|
+
|
94
|
+
For things like error handling in `rescue_from`, you can force the `action` and `controller` that
|
95
|
+
Bullseye will use:
|
96
|
+
|
97
|
+
``` ruby
|
98
|
+
rescue_from StandardError do |e|
|
99
|
+
bullseye_target 'application/errors/http_500'
|
100
|
+
|
101
|
+
render 'http_500'
|
102
|
+
end
|
103
|
+
```
|
104
|
+
|
105
|
+
This will resolve to the controller `application/errors` and the action `http_500` in the Bullseye
|
106
|
+
HTML `body` tag for that page.
|
107
|
+
|
83
108
|
## Hacking
|
84
109
|
|
85
110
|
_You'll need to install [Penchant](http://github.com/johnbintz/penchant) to mess with the Gemfile
|
86
|
-
during development.
|
111
|
+
during development.
|
87
112
|
|
@@ -1,7 +1,11 @@
|
|
1
1
|
this.Bullseye = {
|
2
|
-
target: function(controller,
|
2
|
+
target: function(controller, actions, callback) {
|
3
3
|
this.targets[controller] = (this.targets[controller] || {});
|
4
|
-
|
4
|
+
|
5
|
+
var actions_i;
|
6
|
+
for (actions_i = 0; actions_i < actions.length; ++actions_i) {
|
7
|
+
this.targets[controller][actions[actions_i]] = callback;
|
8
|
+
}
|
5
9
|
},
|
6
10
|
|
7
11
|
targets: {},
|
@@ -34,6 +38,8 @@ this.Bullseye = {
|
|
34
38
|
break;
|
35
39
|
}
|
36
40
|
|
41
|
+
controller = controller.replace('/', '-');
|
42
|
+
|
37
43
|
if (this.targets[controller] && this.targets[controller][action]) {
|
38
44
|
this.targets[controller][action].apply(this.context);
|
39
45
|
}
|
data/lib/bullseye.rb
CHANGED
@@ -5,16 +5,7 @@ require 'bullseye/sass/bullseye_functions'
|
|
5
5
|
|
6
6
|
module Bullseye
|
7
7
|
class Configuration
|
8
|
-
attr_accessor :js_controller_search, :js_action_search, :css_selector, :fuzzy_search
|
9
|
-
|
10
|
-
def initialize
|
11
|
-
@js_controller_search = %{$('body').data('controller')}
|
12
|
-
@js_action_search = %{$('body').data('action')}
|
13
|
-
|
14
|
-
@css_selector = %{body[data-action=':action'][data-controller=':controller']}
|
15
|
-
|
16
|
-
@fuzzy_search = false
|
17
|
-
end
|
8
|
+
attr_accessor :js_controller_search, :js_action_search, :css_selector, :html_tag, :fuzzy_search
|
18
9
|
end
|
19
10
|
|
20
11
|
class << self
|
@@ -27,3 +18,4 @@ module Bullseye
|
|
27
18
|
end
|
28
19
|
end
|
29
20
|
end
|
21
|
+
|
data/lib/bullseye/engine.rb
CHANGED
@@ -1,14 +1,34 @@
|
|
1
1
|
require 'bullseye/helpers/bullseye_helper'
|
2
|
+
require 'bullseye/helpers/bullseye_controller_helper'
|
2
3
|
|
3
4
|
module Bullseye
|
4
5
|
class Engine < ::Rails::Engine
|
5
6
|
initializer 'bullseye.view_helpers' do
|
6
7
|
ActionView::Base.send(:include, Bullseye::Helpers::BullseyeHelper)
|
8
|
+
ActionController::Base.send(:include, Bullseye::Helpers::BullseyeControllerHelper)
|
7
9
|
end
|
8
10
|
|
9
11
|
initializer 'bullseye.sprockets', :after => 'sprockets.environment' do |app|
|
10
12
|
app.assets.register_engine '.bullseye', Bullseye::Tilt::BullseyeTemplate
|
11
13
|
end
|
12
14
|
end
|
15
|
+
|
16
|
+
class InstallGenerator < ::Rails::Generators::Base
|
17
|
+
source_root File.expand_path('../../../skel', __FILE__)
|
18
|
+
|
19
|
+
def create_initializer_file
|
20
|
+
copy_file "config/initializers/bullseye.rb", "config/initializers/bullseye.rb"
|
21
|
+
|
22
|
+
puts
|
23
|
+
puts "Add to your main application.js file:"
|
24
|
+
puts
|
25
|
+
puts "//= require bullseye"
|
26
|
+
puts
|
27
|
+
puts "and replace your body tag layouts/application.html with a call to bullseye_body:"
|
28
|
+
puts
|
29
|
+
puts "= bullseye_body do"
|
30
|
+
puts
|
31
|
+
end
|
32
|
+
end
|
13
33
|
end
|
14
34
|
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Bullseye
|
2
|
+
module FindParts
|
3
|
+
SEPARATOR = '-'
|
4
|
+
|
5
|
+
def actions
|
6
|
+
parts.last.split(SEPARATOR)
|
7
|
+
end
|
8
|
+
|
9
|
+
def controller
|
10
|
+
parts[0..-2].join(SEPARATOR)
|
11
|
+
end
|
12
|
+
|
13
|
+
def parts
|
14
|
+
@parts ||= @source.split('/')
|
15
|
+
end
|
16
|
+
|
17
|
+
class PartFinder
|
18
|
+
include Bullseye::FindParts
|
19
|
+
|
20
|
+
def initialize(source)
|
21
|
+
@source = source
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'bullseye/find_parts'
|
2
|
+
|
3
|
+
module Bullseye
|
4
|
+
module Helpers
|
5
|
+
module BullseyeControllerHelper
|
6
|
+
def bullseye_target(target)
|
7
|
+
part_finder = Bullseye::FindParts::PartFinder.new(target)
|
8
|
+
|
9
|
+
@__bullseye_action = part_finder.actions.first
|
10
|
+
@__bullseye_controller = part_finder.controller
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -2,7 +2,20 @@ module Bullseye
|
|
2
2
|
module Helpers
|
3
3
|
module BullseyeHelper
|
4
4
|
def bullseye_body(options = {}, &block)
|
5
|
-
|
5
|
+
attributes = Bullseye.config.html_tag.collect do |key, value|
|
6
|
+
[ key, value.gsub(':action', __bullseye_action).gsub(':controller', __bullseye_controller) ]
|
7
|
+
end
|
8
|
+
|
9
|
+
content_tag(:body, capture(&block), Hash[attributes].merge(options)).html_safe
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
def __bullseye_action
|
14
|
+
@__bullseye_action || action_name
|
15
|
+
end
|
16
|
+
|
17
|
+
def __bullseye_controller
|
18
|
+
@__bullseye_controller || controller_path.gsub('/', Bullseye::FindParts::SEPARATOR)
|
6
19
|
end
|
7
20
|
end
|
8
21
|
end
|
@@ -1,14 +1,17 @@
|
|
1
1
|
require 'sass'
|
2
|
+
require 'bullseye/find_parts'
|
2
3
|
|
3
4
|
module Sass::Script::Functions
|
4
5
|
def bullseye(target)
|
5
6
|
assert_type target, :String
|
6
7
|
|
7
|
-
|
8
|
-
action = parts.pop
|
9
|
-
controller = parts.join('/')
|
8
|
+
part_finder = Bullseye::FindParts::PartFinder.new(target.value)
|
10
9
|
|
11
|
-
|
10
|
+
selectors = part_finder.actions.collect do |action|
|
11
|
+
Bullseye.config.css_selector.gsub(':action', action).gsub(':controller', part_finder.controller)
|
12
|
+
end
|
13
|
+
|
14
|
+
Sass::Script::String.new(selectors.join(','))
|
12
15
|
end
|
13
16
|
end
|
14
17
|
|
@@ -1,10 +1,11 @@
|
|
1
1
|
require 'tilt'
|
2
|
-
require 'bullseye/
|
2
|
+
require 'bullseye/find_parts'
|
3
|
+
require 'json'
|
3
4
|
|
4
5
|
module Bullseye
|
5
6
|
module Tilt
|
6
7
|
class BullseyeTemplate < ::Tilt::Template
|
7
|
-
include Bullseye::
|
8
|
+
include Bullseye::FindParts
|
8
9
|
|
9
10
|
def self.default_mime_type
|
10
11
|
'application/javascript'
|
@@ -14,10 +15,10 @@ module Bullseye
|
|
14
15
|
end
|
15
16
|
|
16
17
|
def evaluate(scope, locals, &block)
|
17
|
-
@
|
18
|
+
@source = scope.logical_path.gsub(%r{^[^/]*/}, '')
|
18
19
|
|
19
20
|
<<-JS
|
20
|
-
Bullseye.target('#{controller}',
|
21
|
+
Bullseye.target('#{controller}', #{actions.to_json}, function() {
|
21
22
|
#{data}
|
22
23
|
});
|
23
24
|
JS
|
data/lib/bullseye/version.rb
CHANGED
@@ -0,0 +1,9 @@
|
|
1
|
+
Bullseye.configure do |c|
|
2
|
+
c.js_controller_search = %{$('body').data('controller')}
|
3
|
+
c.js_action_search = %{$('body').data('action')}
|
4
|
+
|
5
|
+
c.css_selector = %{body[data-action=':action'][data-controller=':controller']}
|
6
|
+
c.html_tag = { 'data-action' => ':action', 'data-controller' => ':controller' }
|
7
|
+
|
8
|
+
c.fuzzy_search = false
|
9
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bullseye
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
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: 2012-
|
12
|
+
date: 2012-10-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: tilt
|
@@ -76,10 +76,11 @@ files:
|
|
76
76
|
- bullseye.gemspec
|
77
77
|
- lib/bullseye.rb
|
78
78
|
- lib/bullseye/engine.rb
|
79
|
+
- lib/bullseye/find_parts.rb
|
80
|
+
- lib/bullseye/helpers/bullseye_controller_helper.rb
|
79
81
|
- lib/bullseye/helpers/bullseye_helper.rb
|
80
82
|
- lib/bullseye/sass/bullseye_functions.rb
|
81
83
|
- lib/bullseye/tilt/bullseye_template.rb
|
82
|
-
- lib/bullseye/tilt/find_parts.rb
|
83
84
|
- lib/bullseye/version.rb
|
84
85
|
- script/gemfile
|
85
86
|
- script/hooks/commit-msg
|
@@ -87,6 +88,7 @@ files:
|
|
87
88
|
- script/hooks/pre-commit
|
88
89
|
- script/initialize-environment
|
89
90
|
- script/install-git-hooks
|
91
|
+
- skel/config/initializers/bullseye.rb
|
90
92
|
homepage: ''
|
91
93
|
licenses: []
|
92
94
|
post_install_message:
|
@@ -99,12 +101,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
99
101
|
- - ! '>='
|
100
102
|
- !ruby/object:Gem::Version
|
101
103
|
version: '0'
|
104
|
+
segments:
|
105
|
+
- 0
|
106
|
+
hash: -2184598113518927459
|
102
107
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
103
108
|
none: false
|
104
109
|
requirements:
|
105
110
|
- - ! '>='
|
106
111
|
- !ruby/object:Gem::Version
|
107
112
|
version: '0'
|
113
|
+
segments:
|
114
|
+
- 0
|
115
|
+
hash: -2184598113518927459
|
108
116
|
requirements: []
|
109
117
|
rubyforge_project:
|
110
118
|
rubygems_version: 1.8.23
|
@@ -112,4 +120,3 @@ signing_key:
|
|
112
120
|
specification_version: 3
|
113
121
|
summary: Implement DOM-ready execution in Rails using the Asset Pipeline.
|
114
122
|
test_files: []
|
115
|
-
has_rdoc:
|