flame-flash 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/flame/flash.rb +81 -0
- metadata +46 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: bb9c8e821cdb9423f6c18fb769243358df8dd3e2
|
4
|
+
data.tar.gz: b628c3f91146b335a463e9b542d8f4b9ebb6bade
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 8945311d436109970959544cec303a98792a981aead8a34927b1106b1230849a12a3bc3d4fb1236d2f5df142e75a8f951bc276f98ad8381436b21fbcd23c3258
|
7
|
+
data.tar.gz: a24878f14f9673cb99d6e0c8777218b26a6b0aab5543cecd7c754226b9d9c09b86bd6a73a6e06e4062178c98fbcc6d17b263c86e12e55ee6b7469f0c5405cc46
|
data/lib/flame/flash.rb
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
# Dir[File.join(__dir__, 'flash', '*.rb')].each { |file| require file }
|
2
|
+
|
3
|
+
module Flame
|
4
|
+
# Module for Flame::Flash extension with helper methods and base class
|
5
|
+
module Flash
|
6
|
+
def self.mount
|
7
|
+
proc do
|
8
|
+
# This callback rotates any flash structure we referenced,
|
9
|
+
# placing the 'next' hash into the session for the next request.
|
10
|
+
after :* do
|
11
|
+
session[:flash] = flash.next
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def flash(key = nil)
|
19
|
+
(
|
20
|
+
@flash ||= FlashArray.new(
|
21
|
+
(session ? session[:flash] : [])
|
22
|
+
)
|
23
|
+
).scope(key)
|
24
|
+
end
|
25
|
+
|
26
|
+
# A subclass of Array that "remembers forward" by exactly one action.
|
27
|
+
# Tastes just like the API of Rails's ActionController::Flash::FlashHash,
|
28
|
+
# but with fewer calories.
|
29
|
+
class FlashArray
|
30
|
+
attr_reader :now, :next
|
31
|
+
|
32
|
+
# Builds a new FlashHash. It takes the hash for this action's values
|
33
|
+
# as an initialization variable.
|
34
|
+
def initialize(session, parent = nil, scope = nil)
|
35
|
+
@now = session || []
|
36
|
+
@next = []
|
37
|
+
@parent = parent || self
|
38
|
+
@scope = scope
|
39
|
+
end
|
40
|
+
|
41
|
+
def scope(scope = nil)
|
42
|
+
# p 'scope', scope
|
43
|
+
return self unless scope
|
44
|
+
self.class.new(
|
45
|
+
@now.select { |hash| condition(hash, scope: scope) },
|
46
|
+
self,
|
47
|
+
scope
|
48
|
+
)
|
49
|
+
end
|
50
|
+
|
51
|
+
# We assign to the _next_ hash, but retrieve values
|
52
|
+
# from the _now_ hash. Freaky, huh?
|
53
|
+
def []=(type, text)
|
54
|
+
hash = { type: type, text: text }
|
55
|
+
# p @parent == self, @scope
|
56
|
+
hash.merge!(scope: @scope) if @parent != self
|
57
|
+
# p hash
|
58
|
+
@parent.next.push(hash)
|
59
|
+
# p @parent.next
|
60
|
+
end
|
61
|
+
|
62
|
+
def [](type = nil)
|
63
|
+
selected = @parent.now.select do |hash|
|
64
|
+
condition(hash, type: type, scope: @scope)
|
65
|
+
end
|
66
|
+
# p 'flash[]', type, @scope, selected
|
67
|
+
selected.map { |hash| hash[:text] }
|
68
|
+
end
|
69
|
+
|
70
|
+
def each(&block)
|
71
|
+
@now.each(&block)
|
72
|
+
end
|
73
|
+
|
74
|
+
private
|
75
|
+
|
76
|
+
def condition(hash, options = {}) # kind, section)
|
77
|
+
options.reject { |key, val| hash[key] == val || val.nil? }.empty?
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
metadata
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: flame-flash
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Alexander Popov
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-12-07 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Show messages (notifies, errors, warnings) in current or next routes
|
14
|
+
after redirect.
|
15
|
+
email:
|
16
|
+
- alex.wayfer@gmail.com
|
17
|
+
executables: []
|
18
|
+
extensions: []
|
19
|
+
extra_rdoc_files: []
|
20
|
+
files:
|
21
|
+
- lib/flame/flash.rb
|
22
|
+
homepage: https://gitlab.com/AlexWayfer/flame-flash
|
23
|
+
licenses:
|
24
|
+
- MIT
|
25
|
+
metadata: {}
|
26
|
+
post_install_message:
|
27
|
+
rdoc_options: []
|
28
|
+
require_paths:
|
29
|
+
- lib
|
30
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
requirements: []
|
41
|
+
rubyforge_project:
|
42
|
+
rubygems_version: 2.4.5.1
|
43
|
+
signing_key:
|
44
|
+
specification_version: 4
|
45
|
+
summary: Flash plugin for Flame-framework
|
46
|
+
test_files: []
|