camping-abingo 1.0.3
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 +3 -0
- data/doc/classes/ABingoCampingPlugin.html +188 -0
- data/doc/classes/ABingoCampingPlugin.src/M000016.html +18 -0
- data/doc/classes/ABingoCampingPlugin.src/M000017.html +18 -0
- data/doc/classes/ABingoCampingPlugin.src/M000018.html +19 -0
- data/doc/classes/ABingoCampingPlugin.src/M000034.html +18 -0
- data/doc/classes/ABingoCampingPlugin.src/M000035.html +18 -0
- data/doc/classes/ABingoCampingPlugin.src/M000036.html +19 -0
- data/doc/classes/ABingoCampingPlugin/ABingo.html +121 -0
- data/doc/classes/ABingoCampingPlugin/Controllers.html +191 -0
- data/doc/classes/ABingoCampingPlugin/Controllers.src/M000022.html +18 -0
- data/doc/classes/ABingoCampingPlugin/Controllers.src/M000023.html +26 -0
- data/doc/classes/ABingoCampingPlugin/Controllers.src/M000040.html +18 -0
- data/doc/classes/ABingoCampingPlugin/Controllers.src/M000041.html +26 -0
- data/doc/classes/ABingoCampingPlugin/Filters.html +158 -0
- data/doc/classes/ABingoCampingPlugin/Filters.src/M000037.html +26 -0
- data/doc/classes/ABingoCampingPlugin/Filters.src/M000055.html +26 -0
- data/doc/classes/ABingoCampingPlugin/Helpers.html +372 -0
- data/doc/classes/ABingoCampingPlugin/Helpers.src/M000024.html +18 -0
- data/doc/classes/ABingoCampingPlugin/Helpers.src/M000025.html +19 -0
- data/doc/classes/ABingoCampingPlugin/Helpers.src/M000026.html +18 -0
- data/doc/classes/ABingoCampingPlugin/Helpers.src/M000027.html +18 -0
- data/doc/classes/ABingoCampingPlugin/Helpers.src/M000028.html +36 -0
- data/doc/classes/ABingoCampingPlugin/Helpers.src/M000029.html +28 -0
- data/doc/classes/ABingoCampingPlugin/Helpers.src/M000030.html +18 -0
- data/doc/classes/ABingoCampingPlugin/Helpers.src/M000031.html +48 -0
- data/doc/classes/ABingoCampingPlugin/Helpers.src/M000032.html +32 -0
- data/doc/classes/ABingoCampingPlugin/Helpers.src/M000033.html +18 -0
- data/doc/classes/ABingoCampingPlugin/Helpers.src/M000034.html +26 -0
- data/doc/classes/ABingoCampingPlugin/Helpers.src/M000035.html +20 -0
- data/doc/classes/ABingoCampingPlugin/Helpers.src/M000036.html +18 -0
- data/doc/classes/ABingoCampingPlugin/Helpers.src/M000042.html +18 -0
- data/doc/classes/ABingoCampingPlugin/Helpers.src/M000043.html +19 -0
- data/doc/classes/ABingoCampingPlugin/Helpers.src/M000044.html +18 -0
- data/doc/classes/ABingoCampingPlugin/Helpers.src/M000045.html +18 -0
- data/doc/classes/ABingoCampingPlugin/Helpers.src/M000046.html +36 -0
- data/doc/classes/ABingoCampingPlugin/Helpers.src/M000047.html +28 -0
- data/doc/classes/ABingoCampingPlugin/Helpers.src/M000048.html +18 -0
- data/doc/classes/ABingoCampingPlugin/Helpers.src/M000049.html +48 -0
- data/doc/classes/ABingoCampingPlugin/Helpers.src/M000050.html +32 -0
- data/doc/classes/ABingoCampingPlugin/Helpers.src/M000051.html +18 -0
- data/doc/classes/ABingoCampingPlugin/Helpers.src/M000052.html +26 -0
- data/doc/classes/ABingoCampingPlugin/Helpers.src/M000053.html +20 -0
- data/doc/classes/ABingoCampingPlugin/Helpers.src/M000054.html +18 -0
- data/doc/classes/ABingoCampingPlugin/Models.html +208 -0
- data/doc/classes/ABingoCampingPlugin/Models.src/M000038.html +22 -0
- data/doc/classes/ABingoCampingPlugin/Models.src/M000039.html +39 -0
- data/doc/classes/ABingoCampingPlugin/Models.src/M000040.html +21 -0
- data/doc/classes/ABingoCampingPlugin/Models.src/M000056.html +22 -0
- data/doc/classes/ABingoCampingPlugin/Models.src/M000057.html +39 -0
- data/doc/classes/ABingoCampingPlugin/Models.src/M000058.html +21 -0
- data/doc/classes/ABingoCampingPlugin/Models/Alternative.html +181 -0
- data/doc/classes/ABingoCampingPlugin/Models/Alternative.src/M000041.html +20 -0
- data/doc/classes/ABingoCampingPlugin/Models/Alternative.src/M000042.html +21 -0
- data/doc/classes/ABingoCampingPlugin/Models/Alternative.src/M000043.html +21 -0
- data/doc/classes/ABingoCampingPlugin/Models/Alternative.src/M000059.html +20 -0
- data/doc/classes/ABingoCampingPlugin/Models/Alternative.src/M000060.html +21 -0
- data/doc/classes/ABingoCampingPlugin/Models/Alternative.src/M000061.html +21 -0
- data/doc/classes/ABingoCampingPlugin/Models/Experiment.html +273 -0
- data/doc/classes/ABingoCampingPlugin/Models/Experiment.src/M000044.html +21 -0
- data/doc/classes/ABingoCampingPlugin/Models/Experiment.src/M000045.html +21 -0
- data/doc/classes/ABingoCampingPlugin/Models/Experiment.src/M000046.html +18 -0
- data/doc/classes/ABingoCampingPlugin/Models/Experiment.src/M000047.html +18 -0
- data/doc/classes/ABingoCampingPlugin/Models/Experiment.src/M000048.html +20 -0
- data/doc/classes/ABingoCampingPlugin/Models/Experiment.src/M000049.html +23 -0
- data/doc/classes/ABingoCampingPlugin/Models/Experiment.src/M000050.html +29 -0
- data/doc/classes/ABingoCampingPlugin/Models/Experiment.src/M000051.html +50 -0
- data/doc/classes/ABingoCampingPlugin/Models/Experiment.src/M000052.html +28 -0
- data/doc/classes/ABingoCampingPlugin/Models/Experiment.src/M000062.html +21 -0
- data/doc/classes/ABingoCampingPlugin/Models/Experiment.src/M000063.html +21 -0
- data/doc/classes/ABingoCampingPlugin/Models/Experiment.src/M000064.html +18 -0
- data/doc/classes/ABingoCampingPlugin/Models/Experiment.src/M000065.html +18 -0
- data/doc/classes/ABingoCampingPlugin/Models/Experiment.src/M000066.html +20 -0
- data/doc/classes/ABingoCampingPlugin/Models/Experiment.src/M000067.html +23 -0
- data/doc/classes/ABingoCampingPlugin/Models/Experiment.src/M000068.html +29 -0
- data/doc/classes/ABingoCampingPlugin/Models/Experiment.src/M000069.html +50 -0
- data/doc/classes/ABingoCampingPlugin/Models/Experiment.src/M000070.html +28 -0
- data/doc/classes/ABingoCampingPlugin/Views.html +196 -0
- data/doc/classes/ABingoCampingPlugin/Views.src/M000019.html +18 -0
- data/doc/classes/ABingoCampingPlugin/Views.src/M000020.html +18 -0
- data/doc/classes/ABingoCampingPlugin/Views.src/M000021.html +30 -0
- data/doc/classes/ABingoCampingPlugin/Views.src/M000037.html +18 -0
- data/doc/classes/ABingoCampingPlugin/Views.src/M000038.html +18 -0
- data/doc/classes/ABingoCampingPlugin/Views.src/M000039.html +30 -0
- data/doc/classes/Abingo.html +429 -0
- data/doc/classes/Abingo.src/M000001.html +18 -0
- data/doc/classes/Abingo.src/M000002.html +18 -0
- data/doc/classes/Abingo.src/M000003.html +18 -0
- data/doc/classes/Abingo.src/M000004.html +22 -0
- data/doc/classes/Abingo.src/M000005.html +69 -0
- data/doc/classes/Abingo.src/M000006.html +47 -0
- data/doc/classes/Abingo.src/M000007.html +31 -0
- data/doc/classes/Abingo.src/M000008.html +36 -0
- data/doc/classes/Abingo.src/M000009.html +18 -0
- data/doc/classes/Abingo.src/M000010.html +36 -0
- data/doc/classes/Abingo.src/M000011.html +22 -0
- data/doc/classes/Abingo.src/M000012.html +21 -0
- data/doc/classes/Abingo.src/M000013.html +18 -0
- data/doc/classes/Abingo.src/M000014.html +39 -0
- data/doc/classes/Abingo.src/M000015.html +25 -0
- data/doc/classes/ActiveSupport.html +107 -0
- data/doc/classes/ActiveSupport/Cache.html +111 -0
- data/doc/classes/ActiveSupport/Cache/MemoryStore.html +137 -0
- data/doc/classes/ActiveSupport/Cache/MemoryStore.src/M000016.html +18 -0
- data/doc/classes/CampingABingoTest.html +149 -0
- data/doc/classes/CampingABingoTest.src/M000017.html +24 -0
- data/doc/classes/CampingABingoTest/Controllers.html +116 -0
- data/doc/classes/CampingABingoTest/Controllers/Index.html +137 -0
- data/doc/classes/CampingABingoTest/Controllers/Index.src/M000024.html +18 -0
- data/doc/classes/CampingABingoTest/Controllers/Landing.html +137 -0
- data/doc/classes/CampingABingoTest/Controllers/Landing.src/M000026.html +18 -0
- data/doc/classes/CampingABingoTest/Controllers/SignIn.html +152 -0
- data/doc/classes/CampingABingoTest/Controllers/SignIn.src/M000030.html +18 -0
- data/doc/classes/CampingABingoTest/Controllers/SignIn.src/M000031.html +34 -0
- data/doc/classes/CampingABingoTest/Controllers/SignOut.html +137 -0
- data/doc/classes/CampingABingoTest/Controllers/SignOut.src/M000029.html +21 -0
- data/doc/classes/CampingABingoTest/Controllers/SignUp.html +152 -0
- data/doc/classes/CampingABingoTest/Controllers/SignUp.src/M000027.html +23 -0
- data/doc/classes/CampingABingoTest/Controllers/SignUp.src/M000028.html +33 -0
- data/doc/classes/CampingABingoTest/Controllers/Welcome.html +137 -0
- data/doc/classes/CampingABingoTest/Controllers/Welcome.src/M000025.html +18 -0
- data/doc/classes/CampingABingoTest/Helpers.html +112 -0
- data/doc/classes/CampingABingoTest/Models.html +119 -0
- data/doc/classes/CampingABingoTest/Models/CreateUserSchema.html +152 -0
- data/doc/classes/CampingABingoTest/Models/CreateUserSchema.src/M000032.html +26 -0
- data/doc/classes/CampingABingoTest/Models/CreateUserSchema.src/M000033.html +19 -0
- data/doc/classes/CampingABingoTest/Models/User.html +111 -0
- data/doc/classes/CampingABingoTest/Views.html +206 -0
- data/doc/classes/CampingABingoTest/Views.src/M000018.html +70 -0
- data/doc/classes/CampingABingoTest/Views.src/M000019.html +22 -0
- data/doc/classes/CampingABingoTest/Views.src/M000020.html +51 -0
- data/doc/classes/CampingABingoTest/Views.src/M000021.html +31 -0
- data/doc/classes/CampingABingoTest/Views.src/M000022.html +31 -0
- data/doc/classes/CampingABingoTest/Views.src/M000023.html +20 -0
- data/doc/created.rid +1 -0
- data/doc/files/examples/camping-abingo-test/camping-abingo-test_rb.html +101 -0
- data/doc/files/lib/camping-abingo_rb.html +457 -0
- data/doc/fr_class_index.html +52 -0
- data/doc/fr_file_index.html +28 -0
- data/doc/fr_method_index.html +96 -0
- data/doc/index.html +24 -0
- data/lib/camping-abingo.rb +1233 -0
- metadata +279 -0
@@ -0,0 +1,18 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
|
6
|
+
<html>
|
7
|
+
<head>
|
8
|
+
<title>abingo_view_helpers (ABingoCampingPlugin::Views)</title>
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
+
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
|
+
</head>
|
12
|
+
<body class="standalone-code">
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/camping-abingo.rb, line 1083</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">abingo_view_helpers</span>
|
15
|
+
<span class="ruby-value str">"\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"</span>
|
16
|
+
<span class="ruby-keyword kw">end</span></pre>
|
17
|
+
</body>
|
18
|
+
</html>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
|
6
|
+
<html>
|
7
|
+
<head>
|
8
|
+
<title>common_abingo_views (ABingoCampingPlugin::Views)</title>
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
+
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
|
+
</head>
|
12
|
+
<body class="standalone-code">
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/camping-abingo.rb, line 1134</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">common_abingo_views</span>
|
15
|
+
<span class="ruby-value str">"\ndef abingo_dashboard\ndiv.abingo_dashboard! do\nh1 \"ABingo All Experiments\"\n\n@experiments.each do | experiment |\nabingo_experiment(experiment)\nend\nend\nend\n\ndef abingo_experiment(experiment)\nshort_circuit = \"\"\nAbingo.cache.read(\"ABingoCampingPlugin::Models::Experiment::short_circuit(\"+experiment.test_name+\")\".gsub(\" \", \"\"))\n\nh2 { span { experiment.id.to_s + ' - ' + experiment.test_name.titleize }\nspan(\"[Completed]\") if experiment.status != \"Live\"\n}\n\ntable.abingo_experiment_table :style=>\"\" do\ntr { th {\"Name\"};\nth {\"Participants\"};\nth {\"Conversions\"};\nth {\"Notes\" }\n}\n\ntr.abingo_experiment_row { td {\"Experiment Total: \"};\ntd { experiment.participants.to_s };\ntd { experiment.conversions.to_s + '(' + experiment.pretty_conversion_rate + ')' };\ntd { };\n}\n\nexperiment.alternatives.each do | alternative |\ntr.abingo_alternative_row { td { h(alternative.content) };\ntd { alternative.participants.to_s };\ntd { alternative.conversions.to_s + '(' + alternative.pretty_conversion_rate + ')' };\ntd {\nunless experiment.status != \"Live\"\n\nonclickfn = <<-JAVASCRIPT\nif (confirm('Are you sure you want to terminate this experiment? This is not reversible.')) {\nvar f = document.createElement('form');\nf.style.display = 'none';\nthis.parentNode.appendChild(f);\nf.method = 'POST';\nf.action = this.href;\nf.submit();\n};\nreturn false;\nJAVASCRIPT\n\na \"Terminate this Alternative\", :onclick=>onclickfn, :href=> \"/abingo/terminate?alternative_id=\" + alternative.id.to_s\nelse\nif alternative.content == short_circuit\nspan \"(All users seeing this.)\"\nend\nend\n};\n}\nend\n\ntr.abingo_experiment_row { td :colspan=>'24' do\nspan(\"Significance test results: \" + experiment.describe_result_in_words)\nend\n}\n\nend\nend\n\ndef abingo_termination_notice\nh1 \"ABingo Dashboard - Termination Notice\"\ndiv { @abingo_notice }\nend\n\ndef abingo_dashboard_restricted_access\nh1 \"ABingo Dashboard - Restricted Access\"\ndiv \"Only the administrator can access the ABingo Dashboard.\"\nend\n\n"</span>
|
16
|
+
<span class="ruby-keyword kw">end</span></pre>
|
17
|
+
</body>
|
18
|
+
</html>
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
|
6
|
+
<html>
|
7
|
+
<head>
|
8
|
+
<title>include_abingo_views (ABingoCampingPlugin::Views)</title>
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
+
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
|
+
</head>
|
12
|
+
<body class="standalone-code">
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/camping-abingo.rb, line 1221</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">include_abingo_views</span>
|
15
|
+
<span class="ruby-identifier">module_eval</span> <span class="ruby-constant">ABingoCampingPlugin</span><span class="ruby-operator">::</span><span class="ruby-constant">Views</span>.<span class="ruby-identifier">abingo_view_helpers</span>
|
16
|
+
<span class="ruby-identifier">module_eval</span> <span class="ruby-constant">ABingoCampingPlugin</span><span class="ruby-operator">::</span><span class="ruby-constant">Views</span>.<span class="ruby-identifier">common_abingo_views</span>
|
17
|
+
|
18
|
+
<span class="ruby-identifier">module_eval</span> <span class="ruby-keyword kw">do</span>
|
19
|
+
<span class="ruby-identifier">app_module_name</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">"::"</span>).<span class="ruby-identifier">first</span>
|
20
|
+
<span class="ruby-identifier">mab_class_name</span> = <span class="ruby-node">"#{app_module_name}::Mab"</span>
|
21
|
+
<span class="ruby-identifier">mab_class</span> = <span class="ruby-identifier">mab_class_name</span>.<span class="ruby-identifier">constantize</span>
|
22
|
+
|
23
|
+
<span class="ruby-comment cmt"># unless mab_class.public_instance_methods.include? 'register' </span>
|
24
|
+
<span class="ruby-comment cmt"># module_eval ABingoCampingPlugin::Views.register_view</span>
|
25
|
+
<span class="ruby-comment cmt"># end</span>
|
26
|
+
<span class="ruby-keyword kw">end</span>
|
27
|
+
|
28
|
+
<span class="ruby-keyword kw">end</span></pre>
|
29
|
+
</body>
|
30
|
+
</html>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
|
6
|
+
<html>
|
7
|
+
<head>
|
8
|
+
<title>abingo_view_helpers (ABingoCampingPlugin::Views)</title>
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
+
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
|
+
</head>
|
12
|
+
<body class="standalone-code">
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/camping-abingo.rb, line 1083</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">abingo_view_helpers</span>
|
15
|
+
<span class="ruby-value str">"\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"</span>
|
16
|
+
<span class="ruby-keyword kw">end</span></pre>
|
17
|
+
</body>
|
18
|
+
</html>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
|
6
|
+
<html>
|
7
|
+
<head>
|
8
|
+
<title>common_abingo_views (ABingoCampingPlugin::Views)</title>
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
+
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
|
+
</head>
|
12
|
+
<body class="standalone-code">
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/camping-abingo.rb, line 1134</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">common_abingo_views</span>
|
15
|
+
<span class="ruby-value str">"\ndef abingo_dashboard\ndiv.abingo_dashboard! do\nh1 \"ABingo All Experiments\"\n\n@experiments.each do | experiment |\nabingo_experiment(experiment)\nend\nend\nend\n\ndef abingo_experiment(experiment)\nshort_circuit = \"\"\nAbingo.cache.read(\"ABingoCampingPlugin::Models::Experiment::short_circuit(\"+experiment.test_name+\")\".gsub(\" \", \"\"))\n\nh2 { span { experiment.id.to_s + ' - ' + experiment.test_name.titleize }\nspan(\"[Completed]\") if experiment.status != \"Live\"\n}\n\ntable.abingo_experiment_table :style=>\"\" do\ntr { th {\"Name\"};\nth {\"Participants\"};\nth {\"Conversions\"};\nth {\"Notes\" }\n}\n\ntr.abingo_experiment_row { td {\"Experiment Total: \"};\ntd { experiment.participants.to_s };\ntd { experiment.conversions.to_s + '(' + experiment.pretty_conversion_rate + ')' };\ntd { };\n}\n\nexperiment.alternatives.each do | alternative |\ntr.abingo_alternative_row { td { h(alternative.content) };\ntd { alternative.participants.to_s };\ntd { alternative.conversions.to_s + '(' + alternative.pretty_conversion_rate + ')' };\ntd {\nunless experiment.status != \"Live\"\n\nonclickfn = <<-JAVASCRIPT\nif (confirm('Are you sure you want to terminate this experiment? This is not reversible.')) {\nvar f = document.createElement('form');\nf.style.display = 'none';\nthis.parentNode.appendChild(f);\nf.method = 'POST';\nf.action = this.href;\nf.submit();\n};\nreturn false;\nJAVASCRIPT\n\na \"Terminate this Alternative\", :onclick=>onclickfn, :href=> \"/abingo/terminate?alternative_id=\" + alternative.id.to_s\nelse\nif alternative.content == short_circuit\nspan \"(All users seeing this.)\"\nend\nend\n};\n}\nend\n\ntr.abingo_experiment_row { td :colspan=>'24' do\nspan(\"Significance test results: \" + experiment.describe_result_in_words)\nend\n}\n\nend\nend\n\ndef abingo_termination_notice\nh1 \"ABingo Dashboard - Termination Notice\"\ndiv { @abingo_notice }\nend\n\ndef abingo_dashboard_restricted_access\nh1 \"ABingo Dashboard - Restricted Access\"\ndiv \"Only the administrator can access the ABingo Dashboard.\"\nend\n\n"</span>
|
16
|
+
<span class="ruby-keyword kw">end</span></pre>
|
17
|
+
</body>
|
18
|
+
</html>
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
|
6
|
+
<html>
|
7
|
+
<head>
|
8
|
+
<title>include_abingo_views (ABingoCampingPlugin::Views)</title>
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
+
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
|
+
</head>
|
12
|
+
<body class="standalone-code">
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/camping-abingo.rb, line 1221</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">include_abingo_views</span>
|
15
|
+
<span class="ruby-identifier">module_eval</span> <span class="ruby-constant">ABingoCampingPlugin</span><span class="ruby-operator">::</span><span class="ruby-constant">Views</span>.<span class="ruby-identifier">abingo_view_helpers</span>
|
16
|
+
<span class="ruby-identifier">module_eval</span> <span class="ruby-constant">ABingoCampingPlugin</span><span class="ruby-operator">::</span><span class="ruby-constant">Views</span>.<span class="ruby-identifier">common_abingo_views</span>
|
17
|
+
|
18
|
+
<span class="ruby-identifier">module_eval</span> <span class="ruby-keyword kw">do</span>
|
19
|
+
<span class="ruby-identifier">app_module_name</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">"::"</span>).<span class="ruby-identifier">first</span>
|
20
|
+
<span class="ruby-identifier">mab_class_name</span> = <span class="ruby-node">"#{app_module_name}::Mab"</span>
|
21
|
+
<span class="ruby-identifier">mab_class</span> = <span class="ruby-identifier">mab_class_name</span>.<span class="ruby-identifier">constantize</span>
|
22
|
+
|
23
|
+
<span class="ruby-comment cmt"># unless mab_class.public_instance_methods.include? 'register' </span>
|
24
|
+
<span class="ruby-comment cmt"># module_eval ABingoCampingPlugin::Views.register_view</span>
|
25
|
+
<span class="ruby-comment cmt"># end</span>
|
26
|
+
<span class="ruby-keyword kw">end</span>
|
27
|
+
|
28
|
+
<span class="ruby-keyword kw">end</span></pre>
|
29
|
+
</body>
|
30
|
+
</html>
|
@@ -0,0 +1,429 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
|
6
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
7
|
+
<head>
|
8
|
+
<title>Class: Abingo</title>
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
+
<meta http-equiv="Content-Script-Type" content="text/javascript" />
|
11
|
+
<link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
|
12
|
+
<script type="text/javascript">
|
13
|
+
// <![CDATA[
|
14
|
+
|
15
|
+
function popupCode( url ) {
|
16
|
+
window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
|
17
|
+
}
|
18
|
+
|
19
|
+
function toggleCode( id ) {
|
20
|
+
if ( document.getElementById )
|
21
|
+
elem = document.getElementById( id );
|
22
|
+
else if ( document.all )
|
23
|
+
elem = eval( "document.all." + id );
|
24
|
+
else
|
25
|
+
return false;
|
26
|
+
|
27
|
+
elemStyle = elem.style;
|
28
|
+
|
29
|
+
if ( elemStyle.display != "block" ) {
|
30
|
+
elemStyle.display = "block"
|
31
|
+
} else {
|
32
|
+
elemStyle.display = "none"
|
33
|
+
}
|
34
|
+
|
35
|
+
return true;
|
36
|
+
}
|
37
|
+
|
38
|
+
// Make codeblocks hidden by default
|
39
|
+
document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
|
40
|
+
|
41
|
+
// ]]>
|
42
|
+
</script>
|
43
|
+
|
44
|
+
</head>
|
45
|
+
<body>
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
<div id="classHeader">
|
50
|
+
<table class="header-table">
|
51
|
+
<tr class="top-aligned-row">
|
52
|
+
<td><strong>Class</strong></td>
|
53
|
+
<td class="class-name-in-header">Abingo</td>
|
54
|
+
</tr>
|
55
|
+
<tr class="top-aligned-row">
|
56
|
+
<td><strong>In:</strong></td>
|
57
|
+
<td>
|
58
|
+
<a href="../files/lib/camping-abingo_rb.html">
|
59
|
+
lib/camping-abingo.rb
|
60
|
+
</a>
|
61
|
+
<br />
|
62
|
+
</td>
|
63
|
+
</tr>
|
64
|
+
|
65
|
+
<tr class="top-aligned-row">
|
66
|
+
<td><strong>Parent:</strong></td>
|
67
|
+
<td>
|
68
|
+
Object
|
69
|
+
</td>
|
70
|
+
</tr>
|
71
|
+
</table>
|
72
|
+
</div>
|
73
|
+
<!-- banner header -->
|
74
|
+
|
75
|
+
<div id="bodyContent">
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
<div id="contextContent">
|
80
|
+
|
81
|
+
<div id="description">
|
82
|
+
<p>
|
83
|
+
Main <a href="Abingo.html">Abingo</a> class
|
84
|
+
</p>
|
85
|
+
|
86
|
+
</div>
|
87
|
+
|
88
|
+
|
89
|
+
</div>
|
90
|
+
|
91
|
+
<div id="method-list">
|
92
|
+
<h3 class="section-bar">Methods</h3>
|
93
|
+
|
94
|
+
<div class="name-list">
|
95
|
+
<a href="#M000006">bingo!</a>
|
96
|
+
<a href="#M000001">cache</a>
|
97
|
+
<a href="#M000015">expires_in</a>
|
98
|
+
<a href="#M000012">find_alternative_for_user</a>
|
99
|
+
<a href="#M000004">flip</a>
|
100
|
+
<a href="#M000008">human!</a>
|
101
|
+
<a href="#M000003">identity</a>
|
102
|
+
<a href="#M000002">identity=</a>
|
103
|
+
<a href="#M000009">is_human?</a>
|
104
|
+
<a href="#M000013">modulo_choice</a>
|
105
|
+
<a href="#M000010">parse_alternatives</a>
|
106
|
+
<a href="#M000007">participating_tests</a>
|
107
|
+
<a href="#M000011">retrieve_alternatives</a>
|
108
|
+
<a href="#M000014">score_conversion!</a>
|
109
|
+
<a href="#M000005">test</a>
|
110
|
+
</div>
|
111
|
+
</div>
|
112
|
+
|
113
|
+
</div>
|
114
|
+
|
115
|
+
|
116
|
+
<!-- if includes -->
|
117
|
+
|
118
|
+
<div id="section">
|
119
|
+
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
<!-- if method_list -->
|
128
|
+
<div id="methods">
|
129
|
+
<h3 class="section-bar">Public Class methods</h3>
|
130
|
+
|
131
|
+
<div id="method-M000006" class="method-detail">
|
132
|
+
<a name="M000006"></a>
|
133
|
+
|
134
|
+
<div class="method-heading">
|
135
|
+
<a href="Abingo.src/M000006.html" target="Code" class="method-signature"
|
136
|
+
onclick="popupCode('Abingo.src/M000006.html');return false;">
|
137
|
+
<span class="method-name">bingo!</span><span class="method-args">(name = nil, options = {})</span>
|
138
|
+
</a>
|
139
|
+
</div>
|
140
|
+
|
141
|
+
<div class="method-description">
|
142
|
+
<p>
|
143
|
+
Scores conversions for tests. test_name_or_array supports three types of
|
144
|
+
input:
|
145
|
+
</p>
|
146
|
+
<p>
|
147
|
+
A conversion name: scores a conversion for any <a
|
148
|
+
href="Abingo.html#M000005">test</a> the user is participating in which
|
149
|
+
</p>
|
150
|
+
<pre>
|
151
|
+
is listening to the specified conversion.
|
152
|
+
</pre>
|
153
|
+
<p>
|
154
|
+
A <a href="Abingo.html#M000005">test</a> name: scores a conversion for the
|
155
|
+
named <a href="Abingo.html#M000005">test</a> if the user is participating
|
156
|
+
in it.
|
157
|
+
</p>
|
158
|
+
<p>
|
159
|
+
An array of either of the above: for each element of the array, process as
|
160
|
+
above.
|
161
|
+
</p>
|
162
|
+
<p>
|
163
|
+
nil: score a conversion for every <a href="Abingo.html#M000005">test</a>
|
164
|
+
the u
|
165
|
+
</p>
|
166
|
+
</div>
|
167
|
+
</div>
|
168
|
+
|
169
|
+
<div id="method-M000001" class="method-detail">
|
170
|
+
<a name="M000001"></a>
|
171
|
+
|
172
|
+
<div class="method-heading">
|
173
|
+
<a href="Abingo.src/M000001.html" target="Code" class="method-signature"
|
174
|
+
onclick="popupCode('Abingo.src/M000001.html');return false;">
|
175
|
+
<span class="method-name">cache</span><span class="method-args">()</span>
|
176
|
+
</a>
|
177
|
+
</div>
|
178
|
+
|
179
|
+
<div class="method-description">
|
180
|
+
</div>
|
181
|
+
</div>
|
182
|
+
|
183
|
+
<div id="method-M000004" class="method-detail">
|
184
|
+
<a name="M000004"></a>
|
185
|
+
|
186
|
+
<div class="method-heading">
|
187
|
+
<a href="Abingo.src/M000004.html" target="Code" class="method-signature"
|
188
|
+
onclick="popupCode('Abingo.src/M000004.html');return false;">
|
189
|
+
<span class="method-name">flip</span><span class="method-args">(test_name) {|self.test(test_name, [true, false])| ...}</span>
|
190
|
+
</a>
|
191
|
+
</div>
|
192
|
+
|
193
|
+
<div class="method-description">
|
194
|
+
<p>
|
195
|
+
A simple convenience method for doing an A/B <a
|
196
|
+
href="Abingo.html#M000005">test</a>. Returns true or false. If you pass it
|
197
|
+
a block, it will bind the choice to the variable given to the block.
|
198
|
+
</p>
|
199
|
+
</div>
|
200
|
+
</div>
|
201
|
+
|
202
|
+
<div id="method-M000008" class="method-detail">
|
203
|
+
<a name="M000008"></a>
|
204
|
+
|
205
|
+
<div class="method-heading">
|
206
|
+
<a href="Abingo.src/M000008.html" target="Code" class="method-signature"
|
207
|
+
onclick="popupCode('Abingo.src/M000008.html');return false;">
|
208
|
+
<span class="method-name">human!</span><span class="method-args">()</span>
|
209
|
+
</a>
|
210
|
+
</div>
|
211
|
+
|
212
|
+
<div class="method-description">
|
213
|
+
<p>
|
214
|
+
Marks that this user is human.
|
215
|
+
</p>
|
216
|
+
</div>
|
217
|
+
</div>
|
218
|
+
|
219
|
+
<div id="method-M000003" class="method-detail">
|
220
|
+
<a name="M000003"></a>
|
221
|
+
|
222
|
+
<div class="method-heading">
|
223
|
+
<a href="Abingo.src/M000003.html" target="Code" class="method-signature"
|
224
|
+
onclick="popupCode('Abingo.src/M000003.html');return false;">
|
225
|
+
<span class="method-name">identity</span><span class="method-args">()</span>
|
226
|
+
</a>
|
227
|
+
</div>
|
228
|
+
|
229
|
+
<div class="method-description">
|
230
|
+
</div>
|
231
|
+
</div>
|
232
|
+
|
233
|
+
<div id="method-M000002" class="method-detail">
|
234
|
+
<a name="M000002"></a>
|
235
|
+
|
236
|
+
<div class="method-heading">
|
237
|
+
<a href="Abingo.src/M000002.html" target="Code" class="method-signature"
|
238
|
+
onclick="popupCode('Abingo.src/M000002.html');return false;">
|
239
|
+
<span class="method-name">identity=</span><span class="method-args">(new_identity)</span>
|
240
|
+
</a>
|
241
|
+
</div>
|
242
|
+
|
243
|
+
<div class="method-description">
|
244
|
+
<p>
|
245
|
+
This method gives a unique <a href="Abingo.html#M000003">identity</a> to a
|
246
|
+
user. It can be absolutely anything you want, as long as it is consistent.
|
247
|
+
</p>
|
248
|
+
<p>
|
249
|
+
We use the <a href="Abingo.html#M000003">identity</a> to determine,
|
250
|
+
deterministically, which alternative a user sees. This means that if you
|
251
|
+
use Abingo.identify_user on someone at login, they will always see the same
|
252
|
+
alternative for a particular <a href="Abingo.html#M000005">test</a> which
|
253
|
+
is past the login screen. For details and usage notes, see the docs.
|
254
|
+
</p>
|
255
|
+
</div>
|
256
|
+
</div>
|
257
|
+
|
258
|
+
<div id="method-M000007" class="method-detail">
|
259
|
+
<a name="M000007"></a>
|
260
|
+
|
261
|
+
<div class="method-heading">
|
262
|
+
<a href="Abingo.src/M000007.html" target="Code" class="method-signature"
|
263
|
+
onclick="popupCode('Abingo.src/M000007.html');return false;">
|
264
|
+
<span class="method-name">participating_tests</span><span class="method-args">(only_current = true)</span>
|
265
|
+
</a>
|
266
|
+
</div>
|
267
|
+
|
268
|
+
<div class="method-description">
|
269
|
+
</div>
|
270
|
+
</div>
|
271
|
+
|
272
|
+
<div id="method-M000005" class="method-detail">
|
273
|
+
<a name="M000005"></a>
|
274
|
+
|
275
|
+
<div class="method-heading">
|
276
|
+
<a href="Abingo.src/M000005.html" target="Code" class="method-signature"
|
277
|
+
onclick="popupCode('Abingo.src/M000005.html');return false;">
|
278
|
+
<span class="method-name">test</span><span class="method-args">(test_name, alternatives, options = {}) {|choice| ...}</span>
|
279
|
+
</a>
|
280
|
+
</div>
|
281
|
+
|
282
|
+
<div class="method-description">
|
283
|
+
<p>
|
284
|
+
This is the meat of A/Bingo. options accepts
|
285
|
+
</p>
|
286
|
+
<pre>
|
287
|
+
:multiple_participation (true or false)
|
288
|
+
:conversion name of conversion to listen for (alias: conversion_name)
|
289
|
+
</pre>
|
290
|
+
</div>
|
291
|
+
</div>
|
292
|
+
|
293
|
+
<h3 class="section-bar">Protected Class methods</h3>
|
294
|
+
|
295
|
+
<div id="method-M000015" class="method-detail">
|
296
|
+
<a name="M000015"></a>
|
297
|
+
|
298
|
+
<div class="method-heading">
|
299
|
+
<a href="Abingo.src/M000015.html" target="Code" class="method-signature"
|
300
|
+
onclick="popupCode('Abingo.src/M000015.html');return false;">
|
301
|
+
<span class="method-name">expires_in</span><span class="method-args">(known_human = false)</span>
|
302
|
+
</a>
|
303
|
+
</div>
|
304
|
+
|
305
|
+
<div class="method-description">
|
306
|
+
</div>
|
307
|
+
</div>
|
308
|
+
|
309
|
+
<div id="method-M000012" class="method-detail">
|
310
|
+
<a name="M000012"></a>
|
311
|
+
|
312
|
+
<div class="method-heading">
|
313
|
+
<a href="Abingo.src/M000012.html" target="Code" class="method-signature"
|
314
|
+
onclick="popupCode('Abingo.src/M000012.html');return false;">
|
315
|
+
<span class="method-name">find_alternative_for_user</span><span class="method-args">(test_name, alternatives)</span>
|
316
|
+
</a>
|
317
|
+
</div>
|
318
|
+
|
319
|
+
<div class="method-description">
|
320
|
+
</div>
|
321
|
+
</div>
|
322
|
+
|
323
|
+
<div id="method-M000009" class="method-detail">
|
324
|
+
<a name="M000009"></a>
|
325
|
+
|
326
|
+
<div class="method-heading">
|
327
|
+
<a href="Abingo.src/M000009.html" target="Code" class="method-signature"
|
328
|
+
onclick="popupCode('Abingo.src/M000009.html');return false;">
|
329
|
+
<span class="method-name">is_human?</span><span class="method-args">()</span>
|
330
|
+
</a>
|
331
|
+
</div>
|
332
|
+
|
333
|
+
<div class="method-description">
|
334
|
+
</div>
|
335
|
+
</div>
|
336
|
+
|
337
|
+
<div id="method-M000013" class="method-detail">
|
338
|
+
<a name="M000013"></a>
|
339
|
+
|
340
|
+
<div class="method-heading">
|
341
|
+
<a href="Abingo.src/M000013.html" target="Code" class="method-signature"
|
342
|
+
onclick="popupCode('Abingo.src/M000013.html');return false;">
|
343
|
+
<span class="method-name">modulo_choice</span><span class="method-args">(test_name, choices_count)</span>
|
344
|
+
</a>
|
345
|
+
</div>
|
346
|
+
|
347
|
+
<div class="method-description">
|
348
|
+
<p>
|
349
|
+
Quickly determines what alternative to show a given user. Given a <a
|
350
|
+
href="Abingo.html#M000005">test</a> name and their <a
|
351
|
+
href="Abingo.html#M000003">identity</a>, we hash them together (which, for
|
352
|
+
MD5, provably introduces enough entropy that we don‘t care) otherwise
|
353
|
+
</p>
|
354
|
+
</div>
|
355
|
+
</div>
|
356
|
+
|
357
|
+
<div id="method-M000010" class="method-detail">
|
358
|
+
<a name="M000010"></a>
|
359
|
+
|
360
|
+
<div class="method-heading">
|
361
|
+
<a href="Abingo.src/M000010.html" target="Code" class="method-signature"
|
362
|
+
onclick="popupCode('Abingo.src/M000010.html');return false;">
|
363
|
+
<span class="method-name">parse_alternatives</span><span class="method-args">(alternatives)</span>
|
364
|
+
</a>
|
365
|
+
</div>
|
366
|
+
|
367
|
+
<div class="method-description">
|
368
|
+
<p>
|
369
|
+
For programmer convenience, we allow you to specify what the alternatives
|
370
|
+
for an experiment are in a few ways. Thus, we need to actually be able to
|
371
|
+
handle all of them. We fire this parser very infrequently (once per <a
|
372
|
+
href="Abingo.html#M000005">test</a>, typically) so it can be as complicated
|
373
|
+
as we want.
|
374
|
+
</p>
|
375
|
+
<pre>
|
376
|
+
Integer => a number 1 through N
|
377
|
+
Range => a number within the range
|
378
|
+
Array => an element of the array.
|
379
|
+
Hash => assumes a hash of something to int. We pick one of the
|
380
|
+
somethings, weighted accorded to the ints provided. e.g.
|
381
|
+
{:a => 2, :b => 3} produces :a 40% of the time, :b 60%.
|
382
|
+
</pre>
|
383
|
+
<p>
|
384
|
+
Alternatives are always represented internally as an array.
|
385
|
+
</p>
|
386
|
+
</div>
|
387
|
+
</div>
|
388
|
+
|
389
|
+
<div id="method-M000011" class="method-detail">
|
390
|
+
<a name="M000011"></a>
|
391
|
+
|
392
|
+
<div class="method-heading">
|
393
|
+
<a href="Abingo.src/M000011.html" target="Code" class="method-signature"
|
394
|
+
onclick="popupCode('Abingo.src/M000011.html');return false;">
|
395
|
+
<span class="method-name">retrieve_alternatives</span><span class="method-args">(test_name, alternatives)</span>
|
396
|
+
</a>
|
397
|
+
</div>
|
398
|
+
|
399
|
+
<div class="method-description">
|
400
|
+
</div>
|
401
|
+
</div>
|
402
|
+
|
403
|
+
<div id="method-M000014" class="method-detail">
|
404
|
+
<a name="M000014"></a>
|
405
|
+
|
406
|
+
<div class="method-heading">
|
407
|
+
<a href="Abingo.src/M000014.html" target="Code" class="method-signature"
|
408
|
+
onclick="popupCode('Abingo.src/M000014.html');return false;">
|
409
|
+
<span class="method-name">score_conversion!</span><span class="method-args">(test_name)</span>
|
410
|
+
</a>
|
411
|
+
</div>
|
412
|
+
|
413
|
+
<div class="method-description">
|
414
|
+
</div>
|
415
|
+
</div>
|
416
|
+
|
417
|
+
|
418
|
+
</div>
|
419
|
+
|
420
|
+
|
421
|
+
</div>
|
422
|
+
|
423
|
+
|
424
|
+
<div id="validator-badges">
|
425
|
+
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
|
426
|
+
</div>
|
427
|
+
|
428
|
+
</body>
|
429
|
+
</html>
|