mm-sanitize 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +22 -3
- data/Rakefile +1 -1
- data/lib/mm-sanitize.rb +29 -10
- metadata +4 -4
data/README.rdoc
CHANGED
@@ -22,13 +22,32 @@ Once it's loaded into a model, configure with 'sanitize'
|
|
22
22
|
sanitize :list, :of, :keys
|
23
23
|
|
24
24
|
This will use the default Sanitize config, if you want to override then set the :config option:
|
25
|
-
|
25
|
+
|
26
26
|
# Use the built-in Sanitize::Config::RESTRICTED configuration
|
27
27
|
sanitize :title, :config => Sanitize::Config::RESTRICTED
|
28
|
-
|
28
|
+
|
29
29
|
# Use a custom configuration
|
30
30
|
sanitize :description, :config => {:elements => ['a', 'span']}
|
31
|
-
|
31
|
+
|
32
|
+
The original text is stored as original_#{key}, for example:
|
33
|
+
|
34
|
+
class Item
|
35
|
+
key :description, String
|
36
|
+
|
37
|
+
sanitize :description
|
38
|
+
end
|
39
|
+
|
40
|
+
item = Item.create(:description => "some <b>text</b>")
|
41
|
+
item.description => "some text"
|
42
|
+
item.original_description => "some <b>text</b>"
|
43
|
+
|
44
|
+
IMPORTANT - calling sanitize sets up original_#{key} as a copy of the existing key if it exists
|
45
|
+
If the key doesn't yet exist, it will assume it's a String field, so if you use something different then make sure to define it first.
|
46
|
+
|
47
|
+
You can disable this behaviour by setting :keep_original to false
|
48
|
+
|
49
|
+
sanitize :description, :keep_original => false
|
50
|
+
|
32
51
|
See the Sanitize Docs (https://github.com/rgrove/sanitize) for more details on the different configuration options.
|
33
52
|
|
34
53
|
== Note on Patches/Pull Requests
|
data/Rakefile
CHANGED
@@ -21,7 +21,7 @@ spec = Gem::Specification.new do |s|
|
|
21
21
|
|
22
22
|
# Change these as appropriate
|
23
23
|
s.name = "mm-sanitize"
|
24
|
-
s.version = "0.1.
|
24
|
+
s.version = "0.1.4"
|
25
25
|
s.summary = "Tiny plugin for MongoMapper to sanitize strings before validation."
|
26
26
|
s.author = "Richard Livsey"
|
27
27
|
s.email = "youremail@example.com"
|
data/lib/mm-sanitize.rb
CHANGED
@@ -9,17 +9,33 @@ module MongoMapper
|
|
9
9
|
end
|
10
10
|
|
11
11
|
module ClassMethods
|
12
|
-
def sanitize(*
|
12
|
+
def sanitize(*args)
|
13
13
|
unless defined?(sanitize_keys)
|
14
14
|
class_attribute :sanitize_keys
|
15
15
|
end
|
16
16
|
|
17
|
-
options =
|
18
|
-
|
17
|
+
options = {
|
18
|
+
:config => {},
|
19
|
+
:keep_original => true
|
20
|
+
}
|
21
|
+
|
22
|
+
if args.last.is_a?(Hash)
|
23
|
+
options = options.merge(args.pop)
|
24
|
+
end
|
19
25
|
|
20
26
|
self.sanitize_keys ||= {}
|
21
|
-
|
22
|
-
self.sanitize_keys[
|
27
|
+
args.each do |key_name|
|
28
|
+
self.sanitize_keys[key_name] = options
|
29
|
+
|
30
|
+
if options[:keep_original]
|
31
|
+
if key_definition = self.keys[key_name]
|
32
|
+
key_type = key_definition.type
|
33
|
+
else
|
34
|
+
key_type = String
|
35
|
+
end
|
36
|
+
|
37
|
+
self.key :"original_#{key_name}", key_type
|
38
|
+
end
|
23
39
|
end
|
24
40
|
|
25
41
|
self.send(:before_validation, :sanitize_attributes)
|
@@ -28,16 +44,19 @@ module MongoMapper
|
|
28
44
|
|
29
45
|
module InstanceMethods
|
30
46
|
def sanitize_attributes
|
31
|
-
self.class.sanitize_keys.each do |key,
|
32
|
-
|
47
|
+
self.class.sanitize_keys.each do |key, options|
|
48
|
+
|
49
|
+
if options[:keep_original]
|
50
|
+
self["original_#{key}"] = self[key]
|
51
|
+
end
|
33
52
|
|
34
53
|
if val = self[key]
|
35
54
|
if val.is_a?(Array) || val.is_a?(Set)
|
36
|
-
self[key] = val.collect{|v| ::Sanitize.clean(v, config) }
|
55
|
+
self[key] = val.collect{|v| ::Sanitize.clean(v, options[:config]) }
|
37
56
|
elsif val.is_a?(Hash)
|
38
|
-
self[key] = val.each{|k, v| val[k] = ::Sanitize.clean(v, config) if v.is_a?(String) }
|
57
|
+
self[key] = val.each{|k, v| val[k] = ::Sanitize.clean(v, options[:config]) if v.is_a?(String) }
|
39
58
|
elsif val.is_a?(String)
|
40
|
-
self[key] = ::Sanitize.clean(val, config)
|
59
|
+
self[key] = ::Sanitize.clean(val, options[:config])
|
41
60
|
end
|
42
61
|
end
|
43
62
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mm-sanitize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 4
|
10
|
+
version: 0.1.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Richard Livsey
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-03-
|
18
|
+
date: 2011-03-02 00:00:00 +00:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|