fluoroscope 0.0.1 → 0.0.2

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,13 @@
1
+ $(function(){
2
+ $('.fluoro-data').hover(
3
+ function(e){
4
+ if (e.shiftKey)
5
+ {
6
+ $(e.delegateTarget).css("border", "none");
7
+ }
8
+ },
9
+ function(e){
10
+ $(e.delegateTarget).css("border", "none");
11
+ }
12
+ )}
13
+ );
@@ -0,0 +1 @@
1
+ //= require_tree .
@@ -0,0 +1,14 @@
1
+ module Fluoroscope::ActionControllerExtension
2
+ def self.included(base)
3
+ base.send(:include, Filters)
4
+ base.send(:before_filter, :enable_fluoroscope?)
5
+ end
6
+
7
+ module Filters
8
+ def enable_fluoroscope?
9
+ if params[:fluoroscope] == 'true'
10
+ request.env[:fluoroscope_enabled] = true
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,9 @@
1
+
2
+ <!-- Open partial path -> <%= template.inspect %>-->
3
+ <!-- Locals -> <%== local_assigns %>-->
4
+ <div class='fluoro-data' data-file="<%= template.inspect %>">
5
+ <%= yield %>
6
+ </div>
7
+ <!-- Close partial path -> <%= template.inspect %>-->
8
+
9
+
@@ -1,7 +1,6 @@
1
1
  require "fluoroscope/engine"
2
2
  require "fluoroscope/version"
3
3
  require "fluoroscope/rendering"
4
- require "fluoroscope/fluoroscope_renderer"
5
4
 
6
5
  module Fluoroscope
7
6
  end
@@ -1,4 +1,9 @@
1
1
  module Fluoroscope
2
2
  class Engine < ::Rails::Engine
3
+ initializer 'railcar.controller' do |app|
4
+ ActiveSupport.on_load(:action_controller) do
5
+ include Fluoroscope::ActionControllerExtension
6
+ end
7
+ end
3
8
  end
4
9
  end
@@ -2,26 +2,35 @@ module ActionView
2
2
  class PartialRenderer
3
3
  alias_method :render_original, :render
4
4
  def render(context, options, block)
5
- if context.request.params[:fluoroscope] == 'true'
5
+ if fluoroscope_enabled?(context.request)
6
6
  setup(context, options, block)
7
- fluoroscope_renderer = FluoroscopeRenderer.new(@lookup_context)
8
- result = ActionView::OutputBuffer.new
9
- template = find_template(path=@path, locals=@locals.keys).inspect
7
+ fluoroscope_renderer = PartialRenderer.new(@lookup_context)
8
+ template = find_template(path=@path, locals=@locals.keys)
9
+ locals = options[:locals].nil? ? {:template => template} : {:template => template}.merge(options[:locals])
10
+
11
+ fluoroscope_renderer.render_original(context,
12
+ {:partial => '/fluoroscope/fluoroscope_wrapper',
13
+ :locals => locals
14
+ }, lambda{render_original(context, options, block)})
10
15
 
11
- result << fluoroscope_renderer.render(context,
12
- {:partial => '/fluoroscope/open_fluoroscope',
13
- :locals => {:path => template}
14
- }, nil)
15
- result << render_original(context, options, block)
16
- result << fluoroscope_renderer.render(context,
17
- {:partial => '/fluoroscope/close_fluoroscope',
18
- :locals => {:path => template}
19
- }, nil)
20
- result
21
16
  else
22
17
  render_original(context, options, block)
23
18
  end
24
19
  end
25
20
 
21
+ protected
22
+
23
+ def fluoroscope_enabled?(request)
24
+ config_setting = Rails.application.config.enable_fluoroscope rescue nil
25
+ if config_setting.nil?
26
+ if defined?(request.env[:fluoroscope_enabled]) && request.env[:fluoroscope_enabled]
27
+ return true
28
+ end
29
+ else
30
+ return config_setting
31
+ end
32
+
33
+ return false
34
+ end
26
35
  end
27
36
  end
@@ -1,3 +1,3 @@
1
1
  module Fluoroscope
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluoroscope
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
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-03-05 00:00:00.000000000 Z
12
+ date: 2013-03-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -50,11 +50,12 @@ executables: []
50
50
  extensions: []
51
51
  extra_rdoc_files: []
52
52
  files:
53
- - app/views/fluoroscope/_close_fluoroscope.html.erb
54
- - app/views/fluoroscope/_open_fluoroscope.html.erb
53
+ - app/assets/javascripts/fluoroscope/hover.js
54
+ - app/assets/javascripts/fluoroscope/index.js
55
+ - app/controllers/fluoroscope/action_controller_extension.rb
56
+ - app/views/fluoroscope/_fluoroscope_wrapper.html.erb
55
57
  - config/routes.rb
56
58
  - lib/fluoroscope/engine.rb
57
- - lib/fluoroscope/fluoroscope_renderer.rb
58
59
  - lib/fluoroscope/rendering.rb
59
60
  - lib/fluoroscope/version.rb
60
61
  - lib/fluoroscope.rb
@@ -76,7 +77,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
76
77
  version: '0'
77
78
  segments:
78
79
  - 0
79
- hash: 3909471059743653126
80
+ hash: -1350007233444960618
80
81
  required_rubygems_version: !ruby/object:Gem::Requirement
81
82
  none: false
82
83
  requirements:
@@ -85,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
86
  version: '0'
86
87
  segments:
87
88
  - 0
88
- hash: 3909471059743653126
89
+ hash: -1350007233444960618
89
90
  requirements: []
90
91
  rubyforge_project:
91
92
  rubygems_version: 1.8.24
@@ -1,2 +0,0 @@
1
-
2
- <!-- Close partial path -> <%= path %>-->
@@ -1,2 +0,0 @@
1
-
2
- <!-- Open partial path -> <%= path %>-->
@@ -1,135 +0,0 @@
1
- require 'active_support/core_ext/object/blank'
2
-
3
- module ActionView
4
- class FluoroscopeRenderer < AbstractRenderer
5
- PARTIAL_NAMES = Hash.new { |h,k| h[k] = {} }
6
-
7
- def initialize(*)
8
- super
9
- @context_prefix = @lookup_context.prefixes.first
10
- @partial_names = PARTIAL_NAMES[@context_prefix]
11
- end
12
-
13
- def render(context, options, block)
14
- setup(context, options, block)
15
- identifier = (@template = find_partial) ? @template.identifier : @path
16
-
17
- @lookup_context.rendered_format ||= begin
18
- if @template && @template.formats.present?
19
- @template.formats.first
20
- else
21
- formats.first
22
- end
23
- end
24
-
25
- render_partial
26
- end
27
-
28
- def render_partial
29
- locals, view, block = @locals, @view, @block
30
- object, as = @object, @variable
31
-
32
- if !block && (layout = @options[:layout])
33
- layout = find_template(layout.to_s)
34
- end
35
-
36
- object ||= locals[as]
37
- locals[as] = object
38
-
39
- content = @template.render(view, locals) do |*name|
40
- view._layout_for(*name, &block)
41
- end
42
-
43
- content = layout.render(view, locals){ content } if layout
44
- content
45
- end
46
-
47
- private
48
-
49
- def setup(context, options, block)
50
- @view = context
51
- partial = options[:partial]
52
-
53
- @options = options
54
- @locals = options[:locals] || {}
55
- @block = block
56
- @details = extract_details(options)
57
-
58
- if String === partial
59
- @object = options[:object]
60
- @path = partial
61
- else
62
- @object = partial
63
- @path = partial_path
64
- end
65
-
66
- if @path
67
- @variable, @variable_counter = retrieve_variable(@path)
68
- else
69
- paths.map! { |path| retrieve_variable(path).unshift(path) }
70
- end
71
-
72
- if String === partial && @variable.to_s !~ /^[a-z_][a-zA-Z_0-9]*$/
73
- raise ArgumentError.new("The partial name (#{partial}) is not a valid Ruby identifier; " +
74
- "make sure your partial name starts with a letter or underscore, " +
75
- "and is followed by any combinations of letters, numbers, or underscores.")
76
- end
77
-
78
- extract_format(@path, @details)
79
- self
80
- end
81
-
82
- def find_partial
83
- if path = @path
84
- locals = @locals.keys
85
- locals << @variable
86
- find_template(path, locals)
87
- end
88
- end
89
-
90
- def find_template(path=@path, locals=@locals.keys)
91
- prefixes = path.include?(?/) ? [] : @lookup_context.prefixes
92
- @lookup_context.find_template(path, prefixes, true, locals, @details)
93
- end
94
-
95
- def partial_path(object = @object)
96
- object = object.to_model if object.respond_to?(:to_model)
97
-
98
- path = if object.respond_to?(:to_partial_path)
99
- object.to_partial_path
100
- else
101
- klass = object.class
102
- if klass.respond_to?(:model_name)
103
- ActiveSupport::Deprecation.warn "ActiveModel-compatible objects whose classes return a #model_name that responds to #partial_path are deprecated. Please respond to #to_partial_path directly instead."
104
- klass.model_name.partial_path
105
- else
106
- raise ArgumentError.new("'#{object.inspect}' is not an ActiveModel-compatible object that returns a valid partial path.")
107
- end
108
- end
109
-
110
- @partial_names[path] ||= merge_prefix_into_object_path(@context_prefix, path.dup)
111
- end
112
-
113
- def merge_prefix_into_object_path(prefix, object_path)
114
- if prefix.include?(?/) && object_path.include?(?/)
115
- prefixes = []
116
- prefix_array = File.dirname(prefix).split('/')
117
- object_path_array = object_path.split('/')[0..-3] # skip model dir & partial
118
-
119
- prefix_array.each_with_index do |dir, index|
120
- break if dir == object_path_array[index]
121
- prefixes << dir
122
- end
123
-
124
- (prefixes << object_path).join("/")
125
- else
126
- object_path
127
- end
128
- end
129
-
130
- def retrieve_variable(path)
131
- variable = @options.fetch(:as) { path[%r'_?(\w+)(\.\w+)*$', 1] }.try(:to_sym)
132
- [variable]
133
- end
134
- end
135
- end