C0 code coverage information

Generated on Tue Jun 09 17:50:05 +0900 2009 with rcov 0.8.1.2


Code reported as executed by Ruby looks like
    this... and this: this line is also marked as
    covered. Lines considered as run by rcov, but
    not reported by Ruby, look like this, and
    this: these lines were inferred by rcov (using simple heuristics).
    Finally, here's a line marked as not
    executed. 
Name Total lines Lines of code Total coverage Code coverage
lib/nested_ajax/pane/abstract_pane.rb 189 158
73.0%  
67.7%  
 1 #
    -*- coding: utf-8 -*-  2
    require 'nested_ajax/pane' 
    3 require 'forwardable' 
    4  5 module NestedAjax
     6 module Pane  7 class AbstractPane  8 extend Forwardable  9  10 attr_accessor :controller  11 attr_accessor :parent,
    :association_foreign_key 
    12 attr_accessor :form  13
    attr_reader :template, :options  14 attr_reader :object, :object_name  15 attr_reader :pane_id  16 alias_method :id, :pane_id
     17  18 def initialize(template,
    form_or_object, options = {})  19 @template = template  20 if form_or_object.respond_to?(:fields_for)
     21 @form = form_or_object
     22 @object = @form.object
     23 else  24 @form = nil  25 @object = form_or_object
     26 end  27 @object_name =
    options[:object_name] || @object.class.name.underscore  28 @form_name = options[:form_name]
     29 @controller =
    options[:controller]  30
    @foreign_key = options[:foreign_key]  31 @pane_id ||= (options[:pane_id] ||
    nested_ajax_options[:pane_id] ||
    "#{object_name}_#{object.object_id}")  32 @options = options || {}
     33 end  34  35 def_instance_delegators(:@template,  36 :logger, :request, :params,
     37 :concat, :capture,
    :tag,  38
    :remote_form_for,  39
    :form_for, :fields_for, :hidden_field_tag,  40 :remote_function, :link_to, :link_to_function,
    :link_to_remote, :url_for,  41 :javascript_tag)  42  43
    def process(&block) 
    44 with_instance_variable(object_name, object) do  45 yield(self) if block_given?
     46 end  47 end  48  49 def process_with_tag(options = {}, &block)
     50
    PaneTag.render(template, self.id, options) do  51 process(&block)  52 end  53 end  54  55 def with_instance_variable(name, new_value)
     56 instance_var_name =
    '@%s' % name  57 backup =
    @template.instance_variable_get(instance_var_name)  58 begin  59
    @template.instance_variable_set(instance_var_name, new_value)  60 yield(new_value)  61 ensure  62
    @template.instance_variable_set(instance_var_name, backup)  63 end  64 end  65  66 # このメソッドで用意したpaneを
    NestedAjax::BaseHelper.nested_ajax_pane では  67 #
    使用してオブジェクトを改めて作らないようにしていま
    。  68 def
    render(options = {}, local_assigns = nil, &block)  69 locals = nil  70 case options  71 when Hash  72 locals = (options[:locals] ||=
    {})  73 else
     74 locals =
    local_assigns || {}  75
    end  76
    locals.update({:cascading_nested_ajax_pane => self})  77 @template.render(options,
    local_assigns, &block)  78 end  79  80
    def base_form_name  81
    @base_form_name ||= object_name  82 end  83  84
    def form_name  85
    @form_name ||= base_form_name  86 end  87  88
    def nested_ajax_options 
    89 @template.nested_ajax_options  90 end  91  92
    def submittable?  93
    xhr? ? !in_form? : true  94 end  95  96
    def xhr?  97
    request.xhr?  98 end
     99 100 def in_form? 101 (nested_ajax_options[:in_form] ==
    "true") || ( 102 form ? true : parent ? parent.in_form? : false)
    103 end 104 105 106 def foreign_key?(attr) 107 attr.to_s == foreign_key
    108 end 109 110 def foreign_key 111 @foreign_key ||= nested_ajax_options[:foreign_key]
    112 end 113 114 def root? 115 request.xhr? ? false : (!params[:nested_ajax]
    && !parent) 116 end 117 118 def form_for(*args, &block) 119 pane_setter = lambda do |f|
    120 f.pane = self
    121 old_form = self.form
    122 self.form = f
    123 begin 124 concat(capture(f, &block))
    125 ensure 126 self.form = old_form 127 end 128 end 129 if params[:nested_ajax]
    130
    form_or_fields_for(*args, &pane_setter) 131 else 132 @template.form_for(*args,
    &pane_setter) 133
    end 134 end
    135 136 private 137 138 def form_or_fields_for(*args, &block)
    139 if form_name =
    nested_ajax_options[:form_name] 140 case args.first 141 when Symbol, String 142 args.shift 143 end 144 args = [form_name] + args
    145 end 146 if in_form? 147 fields_for_nested_ajax(*args,
    &block) 148 else
    149
    form_for_nested_ajax(*args, &block) 150 end 151 end 152 153 def fields_for_nested_ajax(*args, &block)
    154
    PaneTag.render(@template, pane_id, options[:html]) do 155 fields_for(*args, &block)
    156 end 157 end 158 159 def form_for_nested_ajax(*args, &block)
    160 options =
    args.extract_options! 161 tag_name, html_options =
    PaneTag.name_and_options(pane_id, options.delete(:html)) 162 form_options = { 163 :update => pane_id,
    164 :url =>
    options[:url] 165
    }.update(options) 166
    PaneTag.render(@template, pane_id, html_options) do 167 remote_form_for(*(args +
    [form_options])) do |f| 168 nested_ajax_options.each do |key, value| 169
    concat(hidden_field_tag(:"nested_ajax[#{key}]", value))
    170 end 171 concat(capture(f, &block))
    172 end 173 end 174 end 175 176 177 private 178 179 def place_holder(name) 180 "**#{name.to_s}**"
    181 end 182 183 def escaped_place_holder(name) 184 CGI.escape(place_holder(name))
    185 end 186 187 end 188 end 189 end 

Generated using the rcov code coverage analysis tool for Ruby version 0.8.1.2.

Valid XHTML 1.0! Valid CSS!