# File lib/camping-abingo.rb, line 1083
        def self.abingo_view_helpers
                "\ndef ab_test(test_name, alternatives = nil, options = {}, &block)\n\nif (Abingo.options[:enable_specification] && !params[test_name].nil?)\nchoice = params[test_name]\nelsif (Abingo.options[:enable_override_in_session] && !session[test_name].nil?)\nchoice = session[test_name]\nelsif (alternatives.nil?)\nchoice = Abingo.flip(test_name)\nelse\nchoice = Abingo.test(test_name, alternatives, options)\nend\n\nif block\ncontent_tag = capture(choice, &block)\nblock_called_from_erb?(block) ? concat(content_tag) : content_tag\nelse\nchoice\nend\nend\n\ndef bingo!(test_name, options = {})\nAbingo.bingo!(test_name, options)\nend\n\n#This causes an AJAX post against the URL.  That URL should call Abingo.human!\n#This guarantees that anyone calling Abingo.human! is capable of at least minimal Javascript execution, and thus is (probably) not a robot.\ndef include_humanizing_javascript(url = \"/abingo/mark_human\", style = :jquery)  # Camping-specific\najax_call_script = nil\nif (style == :prototype)\najax_call_script = \"var a=Math.floor(Math.random()*11); var b=Math.floor(Math.random()*11);var x=new Ajax.Request('\" + url + \"', {parameters:{a: a, b: b, c: a+b}})\"\nelsif (style == :jquery)\najax_call_script = \"var a=Math.floor(Math.random()*11); var b=Math.floor(Math.random()*11);var x=jQuery.post('\" + url + \"', {a: a, b: b, c: a+b})\"\nend\n#ajax_call_script.nil? ? \"\" : \"<script type='text/javascript'>\" + ajax_call_script + \"</script>\"\n\nreturn unless !ajax_call_script.nil?\n\nscript :type=> 'text/javascript' do\n%Q|ajax_call_script|\nend\n\nend\n\n"
        end