normatron 0.3.1 → 0.3.2
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/.yardopts +2 -0
- data/lib/normatron/filters.rb +42 -24
- data/lib/normatron/filters/ascii_filter.rb +18 -12
- data/lib/normatron/filters/blank_filter.rb +19 -15
- data/lib/normatron/filters/camelize_filter.rb +39 -34
- data/lib/normatron/filters/capitalize_filter.rb +19 -13
- data/lib/normatron/filters/chomp_filter.rb +27 -21
- data/lib/normatron/filters/dasherize_filter.rb +16 -10
- data/lib/normatron/filters/downcase_filter.rb +19 -13
- data/lib/normatron/filters/dump_filter.rb +20 -14
- data/lib/normatron/filters/keep_filter.rb +101 -84
- data/lib/normatron/filters/remove_filter.rb +26 -21
- data/lib/normatron/filters/squeeze_filter.rb +24 -16
- data/lib/normatron/filters/squish_filter.rb +20 -13
- data/lib/normatron/filters/strip_filter.rb +25 -17
- data/lib/normatron/filters/swapcase_filter.rb +19 -13
- data/lib/normatron/filters/titleize_filter.rb +19 -13
- data/lib/normatron/filters/underscore_filter.rb +28 -22
- data/lib/normatron/filters/upcase_filter.rb +19 -13
- data/lib/normatron/version.rb +1 -1
- data/spec/normatron/configuration_spec.rb +0 -1
- data/spec/normatron/extensions/active_record_spec.rb +1 -0
- data/spec/normatron/filters/ascii_filter_spec.rb +15 -9
- data/spec/normatron/filters/blank_filter_spec.rb +10 -11
- data/spec/normatron/filters/camelize_filter_spec.rb +94 -33
- data/spec/normatron/filters/capitalize_filter_spec.rb +8 -7
- data/spec/normatron/filters/squeeze_filter_spec.rb +2 -2
- data/spec/spec_helper.rb +6 -1
- data/spec/support/matchers/evaluate_matcher.rb +75 -0
- metadata +5 -2
data/.yardopts
ADDED
data/lib/normatron/filters.rb
CHANGED
@@ -4,34 +4,52 @@ end
|
|
4
4
|
|
5
5
|
module Normatron
|
6
6
|
|
7
|
+
##
|
7
8
|
# Top-Level namespace of all built-in Normatron filters.
|
8
9
|
#
|
9
10
|
# All filters share some characteristics:
|
10
|
-
#
|
11
|
-
# *
|
12
|
-
# *
|
13
|
-
# *
|
14
|
-
# *
|
15
|
-
#
|
16
|
-
#
|
17
|
-
# |_
|
18
|
-
# |"AsciiFilter":./Filters/AsciiFilter
|
19
|
-
# |"BlankFilter":./Filters/BlankFilter
|
20
|
-
# |"CamelizeFilter":./Filters/CamelizeFilter
|
21
|
-
# |"CapitalizeFilter":./Filters/CapitalizeFilter
|
22
|
-
# |"ChompFilter":./Filters/ChompFilter
|
23
|
-
# |"DasherizeFilter":./Filters/DasherizeFilter
|
24
|
-
# |"DowncaseFilter":./Filters/DowncaseFilter
|
25
|
-
# |"DumpFilter":./Filters/DumpFilter
|
26
|
-
# |"KeepFilter":./Filters/KeepFilter
|
27
|
-
# |"RemoveFilter":./Filters/RemoveFilter
|
28
|
-
# |"SqueezeFilter":./Filters/SqueezeFilter
|
29
|
-
# |"SquishFilter":./Filters/SquishFilter
|
30
|
-
# |"SwapcaseFilter":./Filters/SwapcaseFilter
|
31
|
-
# |"TitleizeFilter":./Filters/TitleizeFilter
|
32
|
-
# |"UnderscoreFilter":./Filters/UnderscoreFilter
|
33
|
-
# |"UpcaseFilter":./Filters/UpcaseFilter
|
11
|
+
#
|
12
|
+
# * They have the _Filter_ suffix in the name.
|
13
|
+
# * Has a class method called @evaluate@, which runs what the filter claims to do.
|
14
|
+
# * The first argument of the @evaluate@ method always will be the variable to be filtered.
|
15
|
+
# * When filtraton is done succesfully, the @object_id@ of filtered value and input value are different.
|
16
|
+
# * They treat unicode characters(@/[\p{Ll}\p{Lu}]/u@) instead of only ASCII characters(@/[a-zA-Z]/@).
|
17
|
+
#
|
18
|
+
# |_<. Class |_<. Symbol |_<. Short Description |
|
19
|
+
# | "@AsciiFilter@":./Filters/AsciiFilter | @:ascii@ | Converts Unicode(and accented ASCII) characters to their plain-text ASCII equivalents. |
|
20
|
+
# | "@BlankFilter@":./Filters/BlankFilter | @:blank@ | Returns nil for a blank string or the string itself otherwise. |
|
21
|
+
# | "@CamelizeFilter@":./Filters/CamelizeFilter | @:camelize@ | Convert string to UpperCamelCase or lowerCamelCase. |
|
22
|
+
# | "@CapitalizeFilter@":./Filters/CapitalizeFilter | @:capitalize@ | Makes only the first character as capital letter. |
|
23
|
+
# | "@ChompFilter@":./Filters/ChompFilter | @:chomp@ | Remove the given record separator from the end of the string. |
|
24
|
+
# | "@DasherizeFilter@":./Filters/DasherizeFilter | @:dasherize@ | Replaces all underscores with dashes. |
|
25
|
+
# | "@DowncaseFilter@":./Filters/DowncaseFilter | @:downcase@ | Lowercase all characters. |
|
26
|
+
# | "@DumpFilter@":./Filters/DumpFilter | @:dump@ | Creates a literal string representation. |
|
27
|
+
# | "@KeepFilter@":./Filters/KeepFilter | @:keep@ | Remove the characters that doesn't match the given properties. |
|
28
|
+
# | "@RemoveFilter@":./Filters/RemoveFilter | @:remove@ | Remove the characters that match the given properties. |
|
29
|
+
# | "@SqueezeFilter@":./Filters/SqueezeFilter | @:squeeze@ | Remove multiple occurences of the same character. |
|
30
|
+
# | "@SquishFilter@":./Filters/SquishFilter | @:squish@ | Strips the input, remove line-breaks and multiple spaces. |
|
31
|
+
# | "@SwapcaseFilter@":./Filters/SwapcaseFilter | @:swapcase@ | Replaces uppercased characters by lowercased and vice versa. |
|
32
|
+
# | "@TitleizeFilter@":./Filters/TitleizeFilter | @:titleize@ | Capitalizes the first character of each word. |
|
33
|
+
# | "@UnderscoreFilter@":./Filters/UnderscoreFilter | @:underscore@ | Makes an underscored lowercase form from the expression in the string. |
|
34
|
+
# | "@UpcaseFilter@":./Filters/UpcaseFilter | @:upcase@ | Uppercase all characters. |
|
34
35
|
module Filters
|
35
36
|
end
|
36
37
|
end
|
37
38
|
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
|
@@ -2,23 +2,29 @@ require 'stringex/unidecoder'
|
|
2
2
|
|
3
3
|
module Normatron
|
4
4
|
module Filters
|
5
|
+
|
6
|
+
##
|
7
|
+
# Converts Unicode(and accented ASCII) characters to their plain-text ASCII equivalents.
|
8
|
+
#
|
9
|
+
# @example Out of box
|
10
|
+
# AsciiFilter.evaluate("EVOLUÇÃO") #=> "EVOLUCAO"
|
11
|
+
# AsciiFilter.evaluate("⠋⠗⠁⠝⠉⠑") #=> "france"
|
12
|
+
#
|
13
|
+
# @example Using as model normalizer
|
14
|
+
# normalize :attribute_a, :with => :ascii
|
15
|
+
# normalize :attribute_b, :with => [:custom_filter, :ascii]
|
16
|
+
#
|
17
|
+
# @see http://rubydoc.info/gems/stringex/Stringex/Unidecoder Stringex::Unidecoder
|
5
18
|
module AsciiFilter
|
6
19
|
|
7
20
|
##
|
8
|
-
#
|
9
|
-
#
|
10
|
-
# @example
|
11
|
-
# AsciiFilter.evaluate("EVOLUÇÃO") #=> "EVOLUCAO"
|
12
|
-
# AsciiFilter.evaluate("⠋⠗⠁⠝⠉⠑") #=> "france"
|
21
|
+
# Performs input conversion according to filter requirements.
|
13
22
|
#
|
14
|
-
#
|
15
|
-
# normalize :attribute_a, :with => :ascii
|
16
|
-
# normalize :attribute_b, :with => [:custom_filter, :ascii]
|
23
|
+
# This method returns the object itself when the first argument is not a String.
|
17
24
|
#
|
18
|
-
# @param [String]
|
19
|
-
# @return [String]
|
20
|
-
|
21
|
-
def self.evaluate(input, *args)
|
25
|
+
# @param input [String] The String to be filtered
|
26
|
+
# @return [String] A new transliterated String
|
27
|
+
def self.evaluate(input)
|
22
28
|
input.kind_of?(String) ? Stringex::Unidecoder.decode(input) : input
|
23
29
|
end
|
24
30
|
end
|
@@ -1,26 +1,30 @@
|
|
1
|
-
require 'normatron/filters/helpers'
|
2
|
-
|
3
1
|
module Normatron
|
4
2
|
module Filters
|
3
|
+
|
4
|
+
##
|
5
|
+
# Returns nil for a blank string or the string itself otherwise.
|
6
|
+
#
|
7
|
+
# @example Out of box
|
8
|
+
# BlankFilter.evaluate("") #=> nil
|
9
|
+
# BlankFilter.evaluate(" ") #=> nil
|
10
|
+
# BlankFilter.evaluate(" \n ") #=> nil
|
11
|
+
# BlankFilter.evaluate("1") #=> "1"
|
12
|
+
# BlankFilter.evaluate("It's blank?") #=> "It's blank?"
|
13
|
+
#
|
14
|
+
# @example Using as model normalizer
|
15
|
+
# normalize :attribute_a, :with => :blank
|
16
|
+
# normalize :attribute_b, :with => [:custom_filter, :blank]
|
17
|
+
#
|
18
|
+
# @see http://api.rubyonrails.org/classes/String.html#method-i-blank-3F String#blank?
|
5
19
|
module BlankFilter
|
6
20
|
|
7
21
|
##
|
8
|
-
#
|
9
|
-
#
|
10
|
-
# @example
|
11
|
-
# BlankFilter.evaluate("") #=> nil
|
12
|
-
# BlankFilter.evaluate(" ") #=> nil
|
13
|
-
# BlankFilter.evaluate(" \n ") #=> nil
|
14
|
-
# BlankFilter.evaluate("1") #=> "1"
|
15
|
-
# BlankFilter.evaluate("It's blank?") #=> "It's blank?"
|
22
|
+
# Performs input conversion according to filter requirements.
|
16
23
|
#
|
17
|
-
#
|
18
|
-
# normalize :attribute_a, :with => :blank
|
19
|
-
# normalize :attribute_b, :with => [:custom_filter, :blank]
|
24
|
+
# This method returns the object itself when the first argument is not a String.
|
20
25
|
#
|
21
|
-
# @param
|
26
|
+
# @param input [String] The String to be filtered
|
22
27
|
# @return [String, nil] The object itself or nil
|
23
|
-
# @see http://api.rubyonrails.org/classes/String.html#method-i-blank-3F String#blank?
|
24
28
|
def self.evaluate(input)
|
25
29
|
input.kind_of?(String) && input.blank? ? nil : input
|
26
30
|
end
|
@@ -2,48 +2,53 @@ require 'normatron/filters/helpers'
|
|
2
2
|
|
3
3
|
module Normatron
|
4
4
|
module Filters
|
5
|
+
|
6
|
+
##
|
7
|
+
# Converts strings to UpperCamelCase by default and to lowerCamelCase if the @:lower@ argument is given.
|
8
|
+
#
|
9
|
+
# It will also convert '/' to '::' which is useful for converting paths to namespaces.
|
10
|
+
#
|
11
|
+
# As a rule of thumb you can think of camelize as the inverse of underscore, though there are cases where that does
|
12
|
+
# not hold:
|
13
|
+
#
|
14
|
+
# pre. "SSLError".underscore.camelize # => "SslError"
|
15
|
+
#
|
16
|
+
# This filter has a similar behavior to
|
17
|
+
# "ActiveSupport::Inflector#camelize (ActiveSupport camelize)":http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method-i-camelize,
|
18
|
+
# but it affects UTF-8 characters too.
|
19
|
+
#
|
20
|
+
# @example Out of box
|
21
|
+
# CamelizeFilter.evaluate("active_record/errors") #=> "ActiveRecord::Errors"
|
22
|
+
# CamelizeFilter.evaluate("active_record/errors", :upper) #=> "ActiveRecord::Errors"
|
23
|
+
# CamelizeFilter.evaluate("active_record/errors", :lower) #=> "activeRecord::Errors"
|
24
|
+
#
|
25
|
+
# @example Using as model normalizer
|
26
|
+
# normalize :attribute_a, :with => :camelize
|
27
|
+
# normalize :attribute_b, :with => [:custom_filter, :camelize]
|
28
|
+
# normalize :attribute_c, :with => [[:camelize, :lower]]
|
29
|
+
# normalize :attribute_d, :with => [{:camelize => :lower}]
|
30
|
+
# normalize :attribute_e, :with => [:custom_filter, [:camelize, :lower]]
|
31
|
+
# normalize :attribute_f, :with => [:custom_filter, {:camelize => :lower}]
|
32
|
+
#
|
33
|
+
# @see http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method-i-camelize ActiveSupport::Inflector#camelize
|
34
|
+
# @see UnderscoreFilter Normatron::Filters::UnderscoreFilter
|
5
35
|
module CamelizeFilter
|
6
36
|
extend Helpers
|
7
37
|
|
8
38
|
##
|
9
|
-
#
|
10
|
-
# <tt>camelize</tt> will also convert '/' to '::' which is useful for converting paths to namespaces.
|
11
|
-
# As a rule of thumb you can think of camelize as the inverse of underscore, though there are cases where that does not hold:
|
12
|
-
# "SSLError".underscore.camelize # => "SslError"
|
13
|
-
# This filter has a similar behavior to
|
14
|
-
# ActiveSupport::Inflector#camelize[http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method-i-camelize], but with following differences:
|
15
|
-
# * Uses UTF-8 charset
|
16
|
-
# * Affects accented characters
|
17
|
-
#
|
18
|
-
# @example
|
19
|
-
# CamelizeFilter.evaluate("active_record/errors") #=> "ActiveRecord::Errors"
|
20
|
-
# CamelizeFilter.evaluate("active_record/errors", :upper) #=> "ActiveRecord::Errors"
|
21
|
-
# CamelizeFilter.evaluate("active_record/errors", :lower) #=> "activeRecord::Errors"
|
39
|
+
# Performs input conversion according to filter requirements.
|
22
40
|
#
|
23
|
-
#
|
24
|
-
# normalize :attribute_a, :with => :camelize
|
25
|
-
# normalize :attribute_b, :with => [:custom_filter, :camelize]
|
26
|
-
# normalize :attribute_c, :with => [[:camelize, :lower]]
|
27
|
-
# normalize :attribute_d, :with => [{:camelize => :lower}]
|
28
|
-
# normalize :attribute_e, :with => [:custom_filter, [:camelize, :lower]]
|
29
|
-
# normalize :attribute_f, :with => [:custom_filter, {:camelize => :lower}]
|
41
|
+
# This method returns the object itself when the first argument is not a String.
|
30
42
|
#
|
31
|
-
# @param [String]
|
32
|
-
# @param [Symbol]
|
33
|
-
# @return [String]
|
34
|
-
|
35
|
-
# @see UnderscoreFilter Normatron::Filters::UnderscoreFilter
|
36
|
-
# @todo Performance tests
|
37
|
-
# @todo Exception class
|
38
|
-
def self.evaluate(input, first_letter_case = :upper)
|
43
|
+
# @param input [String] The String to be filtered
|
44
|
+
# @param camel [Symbol] @:lower@ for lowerCamelCase or @:upper@ for UpperCamelCase
|
45
|
+
# @return [String] A new camelized String
|
46
|
+
def self.evaluate(input, camel = :upper)
|
39
47
|
return input unless input.kind_of?(String)
|
40
48
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
string = input.sub(/^(?:#{acronym_regex}(?=\b|[\p{L}_])|\p{Word}*_)/u) { mb_send(:downcase, $&) }
|
45
|
-
end
|
46
|
-
string.gsub!(/(?:_|(\/))([\p{L}\d]*)/iu) { "#{$1}#{acronyms[$2] || mb_send(:capitalize, $2)}" }.gsub!('/', '::')
|
49
|
+
string = mb_send(:downcase, input)
|
50
|
+
string.sub!(/^[^_|\/]+/) { camel == :upper ? acronyms[$&] || mb_send(:capitalize, $&) : $& }
|
51
|
+
string.gsub(/(?:(\/)|_)([^\/|_]+)/) { "#{$1}#{acronyms[$2] || mb_send(:capitalize, $2)}" }.gsub("/", "::")
|
47
52
|
end
|
48
53
|
end
|
49
54
|
end
|
@@ -2,25 +2,31 @@ require 'normatron/filters/helpers'
|
|
2
2
|
|
3
3
|
module Normatron
|
4
4
|
module Filters
|
5
|
+
|
6
|
+
##
|
7
|
+
# Makes the first character uppercase and all remaining characters lowercase.
|
8
|
+
#
|
9
|
+
# @example Out of box
|
10
|
+
# CapitalizeFilter.evaluate("KEEP IT SIMPLE") #=> "Keep it simple"
|
11
|
+
# CapitalizeFilter.evaluate("keep it simple") #=> "Keep it simple"
|
12
|
+
# CapitalizeFilter.evaluate(" KEEP IT SIMPLE") #=> " keep it simple"
|
13
|
+
#
|
14
|
+
# @example Using as model normalizer
|
15
|
+
# normalize :attribute_a, :with => :capitalize
|
16
|
+
# normalize :attribute_b, :with => [:custom_filter, :capitalize]
|
17
|
+
#
|
18
|
+
# @see http://www.ruby-doc.org/core-1.9.3/String.html#method-i-capitalize String#capitalize
|
19
|
+
# @see TitleizeFilter Normatron::Filters::TitleizeFilter
|
5
20
|
module CapitalizeFilter
|
6
21
|
extend Helpers
|
7
22
|
|
8
23
|
##
|
9
|
-
#
|
10
|
-
#
|
11
|
-
# @example
|
12
|
-
# CapitalizeFilter.evaluate("KEEP IT SIMPLE") #=> "Keep it simple"
|
13
|
-
# CapitalizeFilter.evaluate("keep it simple") #=> "Keep it simple"
|
14
|
-
# CapitalizeFilter.evaluate(" KEEP IT SIMPLE") #=> " keep it simple"
|
24
|
+
# Performs input conversion according to filter requirements.
|
15
25
|
#
|
16
|
-
#
|
17
|
-
# normalize :attribute_a, :with => :capitalize
|
18
|
-
# normalize :attribute_b, :with => [:custom_filter, :capitalize]
|
26
|
+
# This method returns the object itself when the first argument is not a String.
|
19
27
|
#
|
20
|
-
# @param [String]
|
21
|
-
# @return [String]
|
22
|
-
# @see http://www.ruby-doc.org/core-1.9.3/String.html#method-i-capitalize String#capitalize
|
23
|
-
# @see TitleizeFilter Normatron::Filters::TitleizeFilter
|
28
|
+
# @param input [String] The String to be filtered
|
29
|
+
# @return [String] A new capitalized String
|
24
30
|
def self.evaluate(input)
|
25
31
|
input.kind_of?(String) ? mb_send(:capitalize, input) : input
|
26
32
|
end
|
@@ -1,31 +1,37 @@
|
|
1
1
|
module Normatron
|
2
2
|
module Filters
|
3
|
+
|
4
|
+
##
|
5
|
+
# Remove the given record separator from the end of the string (If present).
|
6
|
+
# If @$/@ has not been changed from the default Ruby record separator, then chomp also removes carriage return
|
7
|
+
# characters (that is it will remove @\n@, @\r@, and @\r\n@).
|
8
|
+
#
|
9
|
+
# @example Out of box
|
10
|
+
# ChompFilter.evaluate("Bon Scott\n") #=> "Bon Scott"
|
11
|
+
# ChompFilter.evaluate("Bon Scott\r") #=> "Bon Scott"
|
12
|
+
# ChompFilter.evaluate("Bon Scott\r\n") #=> "Bon Scott"
|
13
|
+
# ChompFilter.evaluate("Bon Scott\n\r") #=> "Bon Scott\n"
|
14
|
+
# ChompFilter.evaluate("Bon Scott", " Scott") #=> "Bon"
|
15
|
+
#
|
16
|
+
# @example Using as model normalizer
|
17
|
+
# normalize :attribute_a, :with => :chomp
|
18
|
+
# normalize :attribute_b, :with => [:custom_filter, :chomp]
|
19
|
+
# normalize :attribute_c, :with => [[:chomp, "x"]]
|
20
|
+
# normalize :attribute_d, :with => [{:chomp => "y"}]
|
21
|
+
# normalize :attribute_e, :with => [:custom_filter, [:chomp, "z"]]
|
22
|
+
# normalize :attribute_f, :with => [:custom_filter, {:chomp => "\f"}]
|
23
|
+
#
|
24
|
+
# @see http://www.ruby-doc.org/core-1.9.3/String.html#method-i-chomp String#chomp
|
3
25
|
module ChompFilter
|
4
26
|
|
5
27
|
##
|
6
|
-
#
|
7
|
-
# If <tt>$/</tt> has not been changed from the default Ruby record separator,
|
8
|
-
# then chomp also removes carriage return characters (that is it will remove <tt>\n</tt>, <tt>\r</tt>, and <tt>\r\n</tt>).
|
9
|
-
#
|
10
|
-
# @example
|
11
|
-
# ChompFilter.evaluate("Bon Scott\n") #=> "Bon Scott"
|
12
|
-
# ChompFilter.evaluate("Bon Scott\r") #=> "Bon Scott"
|
13
|
-
# ChompFilter.evaluate("Bon Scott\r\n") #=> "Bon Scott"
|
14
|
-
# ChompFilter.evaluate("Bon Scott\n\r") #=> "Bon Scott\n"
|
15
|
-
# ChompFilter.evaluate("Bon Scott", " Scott") #=> "Bon"
|
28
|
+
# Performs input conversion according to filter requirements.
|
16
29
|
#
|
17
|
-
#
|
18
|
-
# normalize :attribute_a, :with => :chomp
|
19
|
-
# normalize :attribute_b, :with => [:custom_filter, :chomp]
|
20
|
-
# normalize :attribute_c, :with => [[:chomp, "x"]]
|
21
|
-
# normalize :attribute_d, :with => [{:chomp => "y"}]
|
22
|
-
# normalize :attribute_e, :with => [:custom_filter, [:chomp, "z"]]
|
23
|
-
# normalize :attribute_f, :with => [:custom_filter, {:chomp => "\f"}]
|
30
|
+
# This method returns the object itself when the first argument is not a String.
|
24
31
|
#
|
25
|
-
# @param
|
26
|
-
# @param [String] separator
|
27
|
-
# @return [String]
|
28
|
-
# @see http://www.ruby-doc.org/core-1.9.3/String.html#method-i-chomp String#chomp
|
32
|
+
# @param input [String] The String to be filtered
|
33
|
+
# @param separator [String] The separator used to chomp input
|
34
|
+
# @return [String] A new chopped String
|
29
35
|
def self.evaluate(input, separator=$/)
|
30
36
|
input.kind_of?(String) ? input.chomp(separator) : input
|
31
37
|
end
|
@@ -2,21 +2,27 @@ require 'normatron/filters/helpers'
|
|
2
2
|
|
3
3
|
module Normatron
|
4
4
|
module Filters
|
5
|
+
|
6
|
+
##
|
7
|
+
# Replaces all underscores with dashes.
|
8
|
+
#
|
9
|
+
# @example Out of box
|
10
|
+
# DasherizeFilter.evaluate("monty_python") #=> "monty-python"
|
11
|
+
#
|
12
|
+
# @example Using as model normalizer
|
13
|
+
# normalize :attribute_a, :with => :dasherize
|
14
|
+
# normalize :attribute_b, :with => [:custom_filter, :dasherize]
|
15
|
+
#
|
16
|
+
# @see http://api.rubyonrails.org/classes/String.html#method-i-dasherize String#dasherize
|
5
17
|
module DasherizeFilter
|
6
18
|
|
7
19
|
##
|
8
|
-
#
|
9
|
-
#
|
10
|
-
# @example
|
11
|
-
# DasherizeFilter.evaluate("monty_python") #=> "monty-python"
|
20
|
+
# Performs input conversion according to filter requirements.
|
12
21
|
#
|
13
|
-
#
|
14
|
-
# normalize :attribute_a, :with => :dasherize
|
15
|
-
# normalize :attribute_b, :with => [:custom_filter, :dasherize]
|
22
|
+
# This method returns the object itself when the first argument is not a String.
|
16
23
|
#
|
17
|
-
# @param [String]
|
18
|
-
# @return [String]
|
19
|
-
# @see http://api.rubyonrails.org/classes/String.html#method-i-dasherize String#dasherize
|
24
|
+
# @param input [String] The String to be filtered
|
25
|
+
# @return [String] A new dasherized String
|
20
26
|
def self.evaluate(input)
|
21
27
|
input.kind_of?(String) ? input.dasherize : input
|
22
28
|
end
|
@@ -2,25 +2,31 @@ require 'normatron/filters/helpers'
|
|
2
2
|
|
3
3
|
module Normatron
|
4
4
|
module Filters
|
5
|
+
|
6
|
+
##
|
7
|
+
# Lowercase all characters.
|
8
|
+
#
|
9
|
+
# @example Out of box
|
10
|
+
# DowncaseFilter.evaluate("NOTHING ELSE MATTERS") #=> "nothing else matters"
|
11
|
+
#
|
12
|
+
# @example Using as ActiveRecord::Base normalizer
|
13
|
+
# normalize :attribute_a, :with => :downcase
|
14
|
+
# normalize :attribute_b, :with => [:custom_filter, :downcase]
|
15
|
+
#
|
16
|
+
# @see http://api.rubyonrails.org/classes/ActiveSupport/Multibyte/Chars.html#method-i-downcase ActiveSupport::Multibyte::Chars#downcase
|
17
|
+
# @see SwapcaseFilter Normatron::Filters::SwapcaseFilter
|
18
|
+
# @see TitleizeFilter Normatron::Filters::TitleizeFilter
|
19
|
+
# @see UpcaseFilter Normatron::Filters::UpcaseFilter
|
5
20
|
module DowncaseFilter
|
6
21
|
extend Helpers
|
7
22
|
|
8
23
|
##
|
9
|
-
#
|
10
|
-
#
|
11
|
-
# @example
|
12
|
-
# DowncaseFilter.evaluate("NOTHING ELSE MATTERS") #=> "nothing else matters"
|
24
|
+
# Performs input conversion according to filter requirements.
|
13
25
|
#
|
14
|
-
#
|
15
|
-
# normalize :attribute_a, :with => :downcase
|
16
|
-
# normalize :attribute_b, :with => [:custom_filter, :downcase]
|
26
|
+
# This method returns the object itself when the first argument is not a String.
|
17
27
|
#
|
18
|
-
# @param [String]
|
19
|
-
# @return [String]
|
20
|
-
# @see http://api.rubyonrails.org/classes/ActiveSupport/Multibyte/Chars.html#method-i-downcase ActiveSupport::Multibyte::Chars#downcase
|
21
|
-
# @see SwapcaseFilter Normatron::Filters::SwapcaseFilter
|
22
|
-
# @see TitleizeFilter Normatron::Filters::TitleizeFilter
|
23
|
-
# @see UpcaseFilter Normatron::Filters::UpcaseFilter
|
28
|
+
# @param input [String] The String to be filtered
|
29
|
+
# @return [String] A new lowercased String
|
24
30
|
def self.evaluate(input)
|
25
31
|
input.kind_of?(String) ? mb_send(:downcase, input) : input
|
26
32
|
end
|
@@ -1,24 +1,30 @@
|
|
1
1
|
module Normatron
|
2
2
|
module Filters
|
3
|
+
|
4
|
+
##
|
5
|
+
# Creates a literal string representation with all nonprinting characters replaced by @\\n@ notation and all
|
6
|
+
# special characters escaped.
|
7
|
+
#
|
8
|
+
# @example Out of box
|
9
|
+
# DumpFilter.evaluate("I'm not\na \"clubber\"...") #=> "\"I'm not\\na \\\"clubber\\\"...\""
|
10
|
+
# DumpFilter.evaluate("I'm not\na \"clubber\"...") #== '"I\'m not\na \"clubber\"..."'
|
11
|
+
# DumpFilter.evaluate('I\'m not\na "clubber"...') #=> "\"I'm not\\\\na \\\"clubber\\\"...\""
|
12
|
+
# DumpFilter.evaluate('I\'m not\na "clubber"...') #== '"I\'m not\\\na \"clubber\"..."'
|
13
|
+
#
|
14
|
+
# @example Using as ActiveRecord::Base normalizer
|
15
|
+
# normalize :attribute_a, :with => :dump
|
16
|
+
# normalize :attribute_b, :with => [:custom_filter, :dump]
|
17
|
+
#
|
18
|
+
# @see http://www.ruby-doc.org/core-1.9.3/String.html#method-i-dump String#dump
|
3
19
|
module DumpFilter
|
4
20
|
|
5
21
|
##
|
6
|
-
#
|
7
|
-
# replaced by <tt>\\n</tt> notation and all special characters escaped.
|
8
|
-
#
|
9
|
-
# @example
|
10
|
-
# DumpFilter.evaluate("I'm not\na \"clubber\"...") #=> "\"I'm not\\na \\\"clubber\\\"...\""
|
11
|
-
# DumpFilter.evaluate("I'm not\na \"clubber\"...") #== '"I\'m not\na \"clubber\"..."'
|
12
|
-
# DumpFilter.evaluate('I\'m not\na "clubber"...') #=> "\"I'm not\\\\na \\\"clubber\\\"...\""
|
13
|
-
# DumpFilter.evaluate('I\'m not\na "clubber"...') #== '"I\'m not\\\na \"clubber\"..."'
|
22
|
+
# Performs input conversion according to filter requirements.
|
14
23
|
#
|
15
|
-
#
|
16
|
-
# normalize :attribute_a, :with => :dump
|
17
|
-
# normalize :attribute_b, :with => [:custom_filter, :dump]
|
24
|
+
# This method returns the object itself when the first argument is not a String.
|
18
25
|
#
|
19
|
-
# @param [String]
|
20
|
-
# @return [String]
|
21
|
-
# @see http://www.ruby-doc.org/core-1.9.3/String.html#method-i-dump String#dump
|
26
|
+
# @param input [String] The String to be filtered
|
27
|
+
# @return [String] A new dumpped String
|
22
28
|
def self.evaluate(input)
|
23
29
|
input.kind_of?(String) ? input.dump : input
|
24
30
|
end
|