flash_gordon 0.0.5 → 0.0.6
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/flash_gordon.rb +0 -6
- data/lib/flash_gordon/flash.rb +49 -13
- data/lib/flash_gordon/flash_helper.rb +18 -11
- data/lib/flash_gordon/railtie.rb +2 -0
- data/lib/flash_gordon/reset_flashes.rb +11 -0
- data/lib/flash_gordon/version.rb +1 -1
- metadata +5 -3
data/lib/flash_gordon.rb
CHANGED
@@ -1,20 +1,14 @@
|
|
1
1
|
module FlashGordon
|
2
2
|
mattr_accessor :zones
|
3
|
-
mattr_reader :default_zones
|
4
3
|
@@zones = {}
|
5
4
|
|
6
5
|
def self.setup
|
7
6
|
yield self
|
8
7
|
end
|
9
8
|
|
10
|
-
def self.set_default_zones
|
11
|
-
@@default_zones = Hash[@@zones]
|
12
|
-
end
|
13
|
-
|
14
9
|
def self.init_zone
|
15
10
|
zone_list = "warning danger info success error"
|
16
11
|
zone_list.split(" ").each{|z| @@zones[z.to_sym] = []}
|
17
|
-
self.set_default_zones
|
18
12
|
true
|
19
13
|
end
|
20
14
|
|
data/lib/flash_gordon/flash.rb
CHANGED
@@ -3,36 +3,72 @@ module FlashGordon
|
|
3
3
|
# Messages fall under different message zones, for now zones are hardcoded
|
4
4
|
# eventually we can add custom ones via initializers
|
5
5
|
|
6
|
-
@
|
6
|
+
@main_messages = Hash[FlashGordon.zones]
|
7
7
|
|
8
8
|
def self.append(message,zone=:warning, options={})
|
9
9
|
# Added options for future use
|
10
|
-
if @
|
10
|
+
if @main_messages[zone]
|
11
11
|
if message.class == Array
|
12
12
|
message.each do |m|
|
13
|
-
@
|
13
|
+
@main_messages[zone] << m
|
14
14
|
end
|
15
15
|
else
|
16
|
-
@
|
16
|
+
@main_messages[zone] << message
|
17
17
|
end
|
18
18
|
else
|
19
|
-
raise "Zone does not exist, please use the following zones - #{@
|
19
|
+
raise "Zone does not exist, please use the following zones - #{@main_messages.map{|k| ":#{k[0]}"}.join(", ") } or add it to the initializer."
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
def self.render(zone
|
23
|
+
def self.render(zone, glue)
|
24
|
+
messages = get_messages(zone,glue)
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.reset
|
28
|
+
@main_messages = FlashGordon.reset_zones
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.get_messages(zone, glue)
|
32
|
+
messages = Hash[@main_messages]
|
24
33
|
if zone == :all
|
25
|
-
|
26
|
-
|
34
|
+
messages.each_pair do |k,v|
|
35
|
+
if v.empty?
|
36
|
+
# Remove empty zone keys
|
37
|
+
messages.delete(k)
|
38
|
+
else
|
39
|
+
messages[k] = v.join(glue)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
messages
|
43
|
+
elsif messages[zone]
|
44
|
+
messages.each_pair do |k,v|
|
45
|
+
if k == zone
|
46
|
+
case glue
|
47
|
+
when "br", ""
|
48
|
+
messages[k] = messages[k].join(glue)
|
49
|
+
else
|
50
|
+
messages[k] = messages[k].each_with_index.map{|m,i| ElementDecorator.decorate_message(m,glue,i)}.join("")
|
51
|
+
end
|
52
|
+
else
|
53
|
+
messages.delete(k)
|
54
|
+
end
|
27
55
|
end
|
28
|
-
|
29
|
-
elsif @messages[zone]
|
30
|
-
@messages[zone].join(glue)
|
56
|
+
messages
|
31
57
|
end
|
32
58
|
end
|
59
|
+
end
|
33
60
|
|
34
|
-
|
35
|
-
|
61
|
+
class ElementDecorator
|
62
|
+
def self.decorate_message(message, glue, index)
|
63
|
+
# Splits the elements into sticky elements and sticky classes
|
64
|
+
raw = glue.split(".")
|
65
|
+
# Unsticky the element if it has an id tag stuck to it
|
66
|
+
element = raw.map{|x| x["#"] ? x[0..x.index("#")-1] : x}[0]
|
67
|
+
# Next you isolate the sticky id and classes into its own array
|
68
|
+
ids = raw.map{|x| x[x.index("#")+1..-1].gsub("%",index.to_s) if x["#"]}.compact
|
69
|
+
classes = raw[1..-1].map{|x| x["#"] ? x[0..x.index("#")-1] : x}
|
70
|
+
# Lastly decorate the message with the intended tags with classes and ids
|
71
|
+
"<#{element}#{" class='"+classes.join(" ")+"'" unless classes.empty? }#{" id='"+ids.join(" ")+"'" unless ids.empty? }>#{message}</#{element}>"
|
36
72
|
end
|
37
73
|
end
|
38
74
|
end
|
@@ -1,17 +1,24 @@
|
|
1
1
|
module FlashGordon
|
2
2
|
module FlashHelper
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
3
|
+
@first_flash = true
|
4
|
+
def render_flash(zone=:all, glue="</br>", tag="div")
|
5
|
+
# Assigns flash messages to flash object before rendering
|
6
|
+
to_flash = assign_flash(FlashGordon::Flash.render(zone,glue),zone)
|
7
|
+
to_flash.map{|f| "<#{tag} class='alert alert-#{f[0]}'>#{f[1]}</#{tag}>"}.join.html_safe
|
8
|
+
end
|
9
|
+
|
10
|
+
def assign_flash(flashes, zone)
|
11
|
+
to_flash = {}
|
12
|
+
flashes.each_pair do |k,v|
|
13
|
+
# Checks if there is an existing value which is not from FlashGordon
|
14
|
+
# if exists, it will append the new values with <br/> tags
|
15
|
+
to_flash[k] = flash.now[k] if flash.now[k]
|
16
|
+
if to_flash[k]
|
17
|
+
to_flash[k] << ("<br/>" + v)
|
18
|
+
else
|
19
|
+
to_flash[k] = v
|
20
|
+
end
|
12
21
|
end
|
13
|
-
FlashGordon::Flash.reset
|
14
|
-
flash.map{|f| "<div class='alert alert-#{f[0]}'>#{f[1]}</div>"}.join.html_safe
|
15
22
|
end
|
16
23
|
end
|
17
24
|
end
|
data/lib/flash_gordon/railtie.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
require 'flash_gordon/flash'
|
2
2
|
require 'flash_gordon/flash_helper'
|
3
|
+
require 'flash_gordon/reset_flashes'
|
3
4
|
|
4
5
|
module FlashGordon
|
5
6
|
class Railtie < Rails::Railtie
|
6
7
|
initializer "flash_gordon.flash_helper" do |app|
|
7
8
|
ActionView::Base.send :include, FlashHelper
|
9
|
+
ActionController::Base.send :include, ResetFlashes
|
8
10
|
end
|
9
11
|
end
|
10
12
|
end
|
data/lib/flash_gordon/version.rb
CHANGED
metadata
CHANGED
@@ -2,14 +2,14 @@
|
|
2
2
|
name: flash_gordon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Ernest Sim
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-08-
|
12
|
+
date: 2013-08-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -56,6 +56,7 @@ files:
|
|
56
56
|
- lib/flash_gordon/flash.rb
|
57
57
|
- lib/flash_gordon/flash_helper.rb
|
58
58
|
- lib/flash_gordon/railtie.rb
|
59
|
+
- lib/flash_gordon/reset_flashes.rb
|
59
60
|
- lib/flash_gordon/version.rb
|
60
61
|
- lib/flash_gordon.rb
|
61
62
|
- lib/tasks/flash_gordon_tasks.rake
|
@@ -106,7 +107,8 @@ files:
|
|
106
107
|
- test/flash_gordon_test.rb
|
107
108
|
- test/test_helper.rb
|
108
109
|
homepage: https://github.com/methodnow/flash_gordon
|
109
|
-
licenses:
|
110
|
+
licenses:
|
111
|
+
- MIT
|
110
112
|
post_install_message:
|
111
113
|
rdoc_options: []
|
112
114
|
require_paths:
|