Merge branch 'master' of github.com:johnbintz/semantic_rails_view_helpers

This commit is contained in:
John Bintz 2013-03-06 07:22:12 -05:00
commit 820c7cf5d2
5 changed files with 54 additions and 19 deletions

View File

@ -76,6 +76,11 @@ You can even make simple tables, a la Active Admin:
= f.field :description = f.field :description
``` ```
### Active Admin
You can add semantic data to Active Admin's `attributes_table`s in `show` views. Just `require 'semantic_rails_view_helpers/active_admin'`
in an initializer and you can then target attributes in `show` views.
## Not Finding Things ## Not Finding Things
Sometimes the absence of a thing is just as important as the presence of a thing. Make it easy on yourself: Sometimes the absence of a thing is just as important as the presence of a thing. Make it easy on yourself:
@ -84,5 +89,9 @@ Sometimes the absence of a thing is just as important as the presence of a thing
# selector's not there # selector's not there
dont_find('#user') dont_find('#user')
# ...after you've already found something...
find('.node').dont_find('.something_inside')
``` ```

View File

@ -0,0 +1,14 @@
require 'active_admin/views/components/attributes_table'
class ActiveAdmin::Views::AttributesTable
def row(attr, &block)
@table << tr do
th do
header_content_for(attr)
end
td 'data-field' => attr do
content_for(block || attr)
end
end
end
end

View File

@ -10,7 +10,7 @@ module SemanticRailsViewHelpers
def to_s def to_s
@options[:class] ||= '' @options[:class] ||= ''
@options[:class] << 'attributes table' @options[:class] << ' attributes table'
@context.content_tag(:table, @options) do @context.content_tag(:table, @options) do
@context.capture(self, &@block) @context.capture(self, &@block)

View File

@ -62,6 +62,26 @@ def find_object_action(object, action)
find("[data-type='#{object}'][data-action='#{action}']") find("[data-type='#{object}'][data-action='#{action}']")
end end
module DontFindable
def dont_find_wrap(search)
yield
sleep Capybara.default_wait_time
yield
raise Capybara::ElementFound.new(search)
rescue Capybara::ElementNotFound
true
end
def dont_find(search)
dont_find_wrap(search) do
find(search)
end
end
end
module Capybara module Capybara
class ElementFound < StandardError class ElementFound < StandardError
def initialize(search) def initialize(search)
@ -72,26 +92,14 @@ module Capybara
@search @search
end end
end end
end
def dont_find_wrap(search) class Node::Element
yield include DontFindable
sleep Capybara.default_wait_time
yield
raise Capybara::ElementFound.new(search)
rescue Capybara::ElementNotFound
true
end
def dont_find(search)
dont_find_wrap(search) do
find(search)
end end
end end
include DontFindable
def dont_find_object(object) def dont_find_object(object)
case object case object
when Class when Class

View File

@ -7,10 +7,14 @@ module SemanticRailsViewHelpers
AttributesBuilder.new(object, self, block) AttributesBuilder.new(object, self, block)
end end
alias :semantic_attributes_for :attributes_for
def attributes_table_for(object, options = {}, &block) def attributes_table_for(object, options = {}, &block)
AttributesTableBuilder.new(object, options, self, block) AttributesTableBuilder.new(object, options, self, block)
end end
alias :semantic_attributes_table_for :attributes_table_for
def link_to_route(route, *args) def link_to_route(route, *args)
options = {} options = {}
if args.last.kind_of?(::Hash) if args.last.kind_of?(::Hash)
@ -65,8 +69,8 @@ module SemanticRailsViewHelpers
def semantic_model_data(object) def semantic_model_data(object)
SemanticRailsViewHelpers.with_semantic_data do SemanticRailsViewHelpers.with_semantic_data do
type = begin type = begin
if object.respond_to?(:model) if object.respond_to?(:source) and object.respond_to?(:to_source)
object.model.class object.source.class
else else
object.class object.class
end end