scintillation 0.1.1 → 1.0.0
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/VERSION +1 -1
- data/lib/scintillation.rb +76 -31
- data/scintillation.gemspec +2 -2
- data/spec/scintillation_spec.rb +22 -39
- data/spec/spec_helper.rb +1 -1
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
1.0.0
|
data/lib/scintillation.rb
CHANGED
@@ -1,42 +1,87 @@
|
|
1
|
-
module
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
module Scintillation
|
2
|
+
|
3
|
+
module ControllerHelpers
|
4
|
+
def self.included(base)
|
5
|
+
base.helper_method(:messages)
|
6
|
+
base.before_filter { |c| c.send(:flash).each { |t, m| c.messages.add(m, t) } }
|
7
|
+
end
|
8
|
+
|
9
|
+
def messages
|
10
|
+
@messages ||= Scintillation::SessionMessages.new(session)
|
11
|
+
end
|
12
|
+
|
13
|
+
def method_missing(method, *args, &block)
|
14
|
+
if /^((\w+)_)?msg(_for_(\w+))?$/.match(method.to_s)
|
15
|
+
messages.add(args[0], $2, $4)
|
16
|
+
elsif /^((\w+)_)?msgs$/.match(method.to_s)
|
17
|
+
messages.get($2)
|
18
|
+
else
|
19
|
+
super
|
6
20
|
end
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
##################################################
|
25
|
+
|
26
|
+
module ViewHelpers
|
27
|
+
def method_missing(method, *args, &block)
|
28
|
+
if /^((\w+)_)?msgs$/.match(method.to_s)
|
29
|
+
messages.get($2)
|
30
|
+
else
|
31
|
+
super
|
15
32
|
end
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
33
|
+
end
|
34
|
+
|
35
|
+
def display_messages(msgs)
|
36
|
+
unless msgs.empty?
|
37
|
+
"<ul>\n " + msgs.map { |m| "<li class=\"#{m.tone}\">#{m}</li>" }.join("\n ") + "\n</ul>"
|
21
38
|
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
##################################################
|
43
|
+
|
44
|
+
class SessionMessages
|
45
|
+
def initialize(session)
|
46
|
+
@session = session
|
47
|
+
@session[:messages] ||= {}
|
48
|
+
@temp_msgs = {}
|
49
|
+
end
|
50
|
+
|
51
|
+
def add(obj, tone = nil, scope = nil)
|
52
|
+
@session[:messages][scope.to_s] ||= []
|
22
53
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
msgs
|
54
|
+
case obj
|
55
|
+
when String, Symbol then @session[:messages][scope.to_s] << Scintillation::Message.new(obj, tone)
|
56
|
+
when ActiveRecord::Errors then add(obj.full_messages, tone, scope)
|
57
|
+
when Enumerable then obj.each { |o| add(o, tone, scope) }
|
58
|
+
else add(obj.to_s, tone, scope)
|
29
59
|
end
|
30
60
|
end
|
31
61
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
62
|
+
def get(scope = nil)
|
63
|
+
@temp_msgs[scope.to_s] ||= (@session[:messages].delete(scope.to_s) || [])
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
##################################################
|
68
|
+
|
69
|
+
Message = Struct.new(:to_s, :tone)
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
if defined? Rails
|
74
|
+
#a fix until they patch
|
75
|
+
module ActionController
|
76
|
+
class Base
|
77
|
+
def method_missing(method, *args, &block)
|
78
|
+
super(method.to_sym, args, &block)
|
79
|
+
rescue NoMethodError
|
80
|
+
default_render
|
39
81
|
end
|
40
82
|
end
|
41
83
|
end
|
84
|
+
|
85
|
+
ActionController::Base.send(:include, Scintillation::ControllerHelpers)
|
86
|
+
ActionView::Base.send(:include, Scintillation::ViewHelpers)
|
42
87
|
end
|
data/scintillation.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{scintillation}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "1.0.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Austin Schneider"]
|
12
|
-
s.date = %q{2009-10-
|
12
|
+
s.date = %q{2009-10-16}
|
13
13
|
s.description = %q{A flash messages replacement}
|
14
14
|
s.email = %q{soccer022483@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
data/spec/scintillation_spec.rb
CHANGED
@@ -1,49 +1,32 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
2
|
|
3
|
-
|
4
|
-
def body
|
5
|
-
setter_method
|
6
|
-
end
|
7
|
-
end
|
3
|
+
module ActiveRecord; Errors = Struct.new(nil); end
|
8
4
|
|
9
|
-
describe
|
10
|
-
it "messages" do
|
11
|
-
|
12
|
-
msgs_obj.instance_variable_get(:@messages).should be_empty
|
5
|
+
describe Scintillation::SessionMessages do
|
6
|
+
it "should add/get messages" do
|
7
|
+
sm = Scintillation::SessionMessages.new({})
|
13
8
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
samples << SampleData.new('negative_message_for_user', 'negative_messages_for_user', 'negative', 'user')
|
9
|
+
sm.add("a")
|
10
|
+
sm.add("b", 'x')
|
11
|
+
sm.add("c", nil, 'y')
|
12
|
+
sm.add("d", 'x', 'y')
|
19
13
|
|
20
|
-
|
14
|
+
messages = sm.get
|
15
|
+
messages.size.should == 2
|
16
|
+
messages.map { |m| [m.to_s, m.tone] }.should == [['a', nil], ['b', 'x']]
|
21
17
|
|
22
|
-
|
18
|
+
messages = sm.get('z')
|
19
|
+
messages.size.should == 0
|
23
20
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
msgs.size.should == 1
|
28
|
-
msgs.map { |m| [m.to_s, m.tone, m.scope] }.should == [[s.body, s.tone, s.scope]]
|
29
|
-
size -= 1
|
30
|
-
end
|
21
|
+
messages = sm.get('y')
|
22
|
+
messages.size.should == 2
|
23
|
+
messages.map { |m| [m.to_s, m.tone] }.should == [['c', nil], ['d', 'x']]
|
31
24
|
end
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
m
|
38
|
-
[m.to_s, m.tone, m.scope].should == ['message', nil, nil]
|
39
|
-
|
40
|
-
m = Soccer022483::Scintillation::Message.new("message", '', '')
|
41
|
-
[m.to_s, m.tone, m.scope].should == ['message', nil, nil]
|
42
|
-
|
43
|
-
m = Soccer022483::Scintillation::Message.new("message", ' ', ' ')
|
44
|
-
[m.to_s, m.tone, m.scope].should == ['message', nil, nil]
|
45
|
-
|
46
|
-
m = Soccer022483::Scintillation::Message.new("message", 'positive', 'login')
|
47
|
-
[m.to_s, m.tone, m.scope].should == ['message', 'positive', 'login']
|
25
|
+
end
|
26
|
+
|
27
|
+
describe Scintillation::Message do
|
28
|
+
it "should create" do
|
29
|
+
m = Scintillation::Message.new("message", 'positive')
|
30
|
+
[m.to_s, m.tone].should == ['message', 'positive']
|
48
31
|
end
|
49
32
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scintillation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Austin Schneider
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-10-
|
12
|
+
date: 2009-10-16 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|