smooch 0.1.3 → 0.1.5
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/lib/smooch.rb +8 -0
- data/lib/smooch/base.rb +36 -11
- data/lib/smooch/version.rb +1 -1
- data/spec/controller_spec.rb +39 -1
- metadata +4 -4
data/lib/smooch.rb
CHANGED
data/lib/smooch/base.rb
CHANGED
@@ -5,28 +5,43 @@ module Smooch
|
|
5
5
|
def initialize(controller=nil)
|
6
6
|
self.controller = controller
|
7
7
|
self.view = view
|
8
|
-
@choices = {}
|
9
|
-
@records = {}
|
10
|
-
@sets = {}
|
11
|
-
|
12
8
|
init_flash
|
13
9
|
end
|
14
10
|
|
11
|
+
FLASH_KEY = :smooch
|
15
12
|
def record(property, hash={})
|
16
|
-
flash[:kiss_metrics] = property.to_s
|
17
13
|
@records[property.to_s] = hash
|
14
|
+
write_flash
|
18
15
|
end
|
19
16
|
def init_flash
|
20
|
-
|
21
|
-
|
22
|
-
|
17
|
+
hash = flash[FLASH_KEY] || {}
|
18
|
+
@records = hash[:r] || {}
|
19
|
+
@sets = hash[:s] || {}
|
20
|
+
@choices = hash[:c] || {}
|
21
|
+
end
|
22
|
+
def write_flash
|
23
|
+
hash = nil
|
24
|
+
unless @records.empty?
|
25
|
+
hash ||= {}
|
26
|
+
hash[:r] = @records
|
27
|
+
end
|
28
|
+
unless @sets.empty?
|
29
|
+
hash ||= {}
|
30
|
+
hash[:s] = @sets
|
31
|
+
end
|
32
|
+
unless @choices.empty?
|
33
|
+
hash ||= {}
|
34
|
+
hash[:c] = @choices
|
35
|
+
end
|
36
|
+
flash[FLASH_KEY] = hash
|
23
37
|
end
|
24
38
|
def clear_flash
|
25
|
-
flash[
|
39
|
+
flash[FLASH_KEY] = nil
|
26
40
|
end
|
27
41
|
|
28
42
|
def set(property, value)
|
29
43
|
@sets[property.to_s] = value
|
44
|
+
write_flash
|
30
45
|
end
|
31
46
|
|
32
47
|
def ab(name, choices=nil)
|
@@ -48,6 +63,10 @@ module Smooch
|
|
48
63
|
val = get_ab_cookie(name) unless val
|
49
64
|
val = nil if val and choices and not choices.include?(val)
|
50
65
|
|
66
|
+
if choices and Smooch.ab_static?
|
67
|
+
val = choices.first unless val
|
68
|
+
end
|
69
|
+
|
51
70
|
# pick a random one
|
52
71
|
val = get_ab_random_choice(choices) unless val
|
53
72
|
|
@@ -69,6 +88,9 @@ module Smooch
|
|
69
88
|
def get_ab_cached(name)
|
70
89
|
@choices[name]
|
71
90
|
end
|
91
|
+
def get_ab_cache_key
|
92
|
+
[@records, @sets, @choices].to_param
|
93
|
+
end
|
72
94
|
def get_ab_cookie(name)
|
73
95
|
get_cookie(key(name))
|
74
96
|
end
|
@@ -76,6 +98,7 @@ module Smooch
|
|
76
98
|
set_ab_database(name, val)
|
77
99
|
set_cookie(key(name), val)
|
78
100
|
@choices[name] = val
|
101
|
+
write_flash
|
79
102
|
val
|
80
103
|
end
|
81
104
|
|
@@ -96,7 +119,9 @@ module Smooch
|
|
96
119
|
controller.kiss_identity
|
97
120
|
end
|
98
121
|
def set_cookie(key, value)
|
99
|
-
cookies[key]
|
122
|
+
unless cookies[key] == value
|
123
|
+
cookies[key] = { :value => value, :expires => 2.months.from_now }
|
124
|
+
end
|
100
125
|
end
|
101
126
|
def get_cookie(key)
|
102
127
|
cookies[key]
|
@@ -113,7 +138,7 @@ module Smooch
|
|
113
138
|
hash.each do |key, value|
|
114
139
|
out += "_kmq.push(['record', '#{js(key)}'"
|
115
140
|
unless value.empty?
|
116
|
-
out += ", #{value.to_json}"
|
141
|
+
out += ", #{value.to_json.gsub(/<\/?script>/i, "")}"
|
117
142
|
end
|
118
143
|
out += "]);\n"
|
119
144
|
end
|
data/lib/smooch/version.rb
CHANGED
data/spec/controller_spec.rb
CHANGED
@@ -7,6 +7,16 @@ class SmoochUser
|
|
7
7
|
end
|
8
8
|
end
|
9
9
|
class SmoochController < ActionController::Base
|
10
|
+
def record_one
|
11
|
+
km.record("one")
|
12
|
+
end
|
13
|
+
def record_lots
|
14
|
+
km.record("one")
|
15
|
+
km.record("two")
|
16
|
+
km.set("three", "val3")
|
17
|
+
km.set("four", "val4")
|
18
|
+
end
|
19
|
+
|
10
20
|
def get_km
|
11
21
|
@results = km
|
12
22
|
end
|
@@ -55,10 +65,38 @@ describe SmoochController, :type => :controller do
|
|
55
65
|
end
|
56
66
|
|
57
67
|
describe "records" do
|
68
|
+
it "should set the flash record property" do
|
69
|
+
flash[:smooch].should be_nil
|
70
|
+
get :record_one
|
71
|
+
flash[:smooch].should_not be_nil
|
72
|
+
flash[:smooch].should == {:r => { "one" => {}}}
|
73
|
+
|
74
|
+
get :get_km
|
75
|
+
assigns[:results].has_record?("one").should == true
|
76
|
+
end
|
77
|
+
it "should set everything via flash" do
|
78
|
+
flash[:smooch].should be_nil
|
79
|
+
get :record_lots
|
80
|
+
flash[:smooch].should_not be_nil
|
81
|
+
|
82
|
+
get :get_km
|
83
|
+
assigns[:results].has_record?("one").should == true
|
84
|
+
assigns[:results].has_record?("two").should == true
|
85
|
+
assigns[:results].has_set?("three").should == true
|
86
|
+
assigns[:results].has_set?("four").should == true
|
87
|
+
assigns[:results].has_set?("five").should == false
|
88
|
+
end
|
89
|
+
it "should render script from flash" do
|
90
|
+
get :record_lots
|
91
|
+
end
|
92
|
+
|
58
93
|
it "should transfer flash property" do
|
59
|
-
flash[:
|
94
|
+
flash[:smooch] = {:r => { "whatever" => {}, "else" => {:ok => true}}, :s => {"something" => {}}, :c => {"ab" => "one"}}
|
60
95
|
get :get_km
|
96
|
+
assigns[:results].has_record?("else").should == true
|
61
97
|
assigns[:results].has_record?("whatever").should == true
|
98
|
+
assigns[:results].has_set?("something").should == true
|
99
|
+
assigns[:results].ab("ab").should == "one"
|
62
100
|
end
|
63
101
|
end
|
64
102
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smooch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 5
|
10
|
+
version: 0.1.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Brian Leonard
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-12-09 00:00:00 -08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|