normatron 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.textile +35 -48
- data/Rakefile +6 -7
- data/lib/generators/normatron/install_generator.rb +23 -0
- data/lib/generators/normatron/templates/normatron.rb +4 -0
- data/lib/normatron.rb +22 -8
- data/lib/normatron/configuration.rb +26 -22
- data/lib/normatron/extensions.rb +8 -0
- data/lib/normatron/extensions/active_record.rb +20 -15
- data/lib/normatron/filters.rb +26 -379
- data/lib/normatron/filters/blank_filter.rb +29 -0
- data/lib/normatron/filters/camelize_filter.rb +50 -0
- data/lib/normatron/filters/capitalize_filter.rb +29 -0
- data/lib/normatron/filters/chomp_filter.rb +34 -0
- data/lib/normatron/filters/dasherize_filter.rb +25 -0
- data/lib/normatron/filters/downcase_filter.rb +29 -0
- data/lib/normatron/filters/dump_filter.rb +27 -0
- data/lib/normatron/filters/helpers.rb +44 -0
- data/lib/normatron/filters/keep_filter.rb +100 -0
- data/lib/normatron/filters/remove_filter.rb +37 -0
- data/lib/normatron/filters/squeeze_filter.rb +30 -0
- data/lib/normatron/filters/squish_filter.rb +28 -0
- data/lib/normatron/filters/strip_filter.rb +33 -0
- data/lib/normatron/filters/swapcase_filter.rb +30 -0
- data/lib/normatron/filters/titleize_filter.rb +29 -0
- data/lib/normatron/filters/underscore_filter.rb +45 -0
- data/lib/normatron/filters/upcase_filter.rb +29 -0
- data/lib/normatron/version.rb +3 -0
- data/spec/normatron/configuration_spec.rb +60 -0
- data/spec/normatron/extensions/active_record_spec.rb +96 -0
- data/spec/normatron/filters/blank_filter_spec.rb +15 -0
- data/spec/normatron/filters/camelize_filter_spec.rb +42 -0
- data/spec/normatron/filters/capitalize_filter_spec.rb +14 -0
- data/spec/normatron/filters/chomp_filter_spec.rb +15 -0
- data/spec/normatron/filters/dasherize_filter_spec.rb +9 -0
- data/spec/normatron/filters/downcase_filter_spec.rb +10 -0
- data/spec/normatron/filters/dump_filter_spec.rb +10 -0
- data/spec/normatron/filters/keep_filter_spec.rb +86 -0
- data/spec/normatron/filters/remove_filter_spec.rb +86 -0
- data/spec/normatron/filters/squeeze_filter_spec.rb +10 -0
- data/spec/normatron/filters/squish_filter_spec.rb +12 -0
- data/spec/normatron/filters/strip_filter_spec.rb +12 -0
- data/spec/normatron/filters/swapcase_filter_spec.rb +12 -0
- data/spec/normatron/filters/titleize_filter_spec.rb +12 -0
- data/spec/normatron/filters/underscore_filter_spec.rb +26 -0
- data/spec/normatron/filters/upcase_filter_spec.rb +10 -0
- data/spec/normatron_spec.rb +28 -2
- data/spec/spec_helper.rb +37 -4
- data/spec/support/my_filters.rb +7 -0
- data/spec/support/user_model.rb +14 -0
- metadata +64 -13
- data/spec/configuration_spec.rb +0 -53
- data/spec/extensions/active_record_spec.rb +0 -114
- data/spec/filters_spec.rb +0 -442
- data/spec/support/model_model.rb +0 -3
- data/spec/support/schema.rb +0 -7
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'normatron/filters/helpers'
|
2
|
+
|
3
|
+
module Normatron
|
4
|
+
module Filters
|
5
|
+
module SquishFilter
|
6
|
+
|
7
|
+
##
|
8
|
+
# Strip input, remove line-breaks and multiple spaces.
|
9
|
+
#
|
10
|
+
# @example
|
11
|
+
# SquishFilter.evaluate(" the simpsons ") #=> "the simpsons"
|
12
|
+
# SquishFilter.evaluate("family guy") #=> "family guy"
|
13
|
+
# SquishFilter.evaluate("the \n simpsons") #=> "the simpsons"
|
14
|
+
# SquishFilter.evaluate("the\nsimpsons") #=> "the simpsons"
|
15
|
+
#
|
16
|
+
# @example Using as ActiveRecord::Base normalizer
|
17
|
+
# normalize :attribute, :with => [:custom_filter, :squish]
|
18
|
+
#
|
19
|
+
# @param [String] input A character sequence
|
20
|
+
# @return [String] The clean character sequence or the object itself
|
21
|
+
# @see http://api.rubyonrails.org/classes/String.html#method-i-squish String#squish
|
22
|
+
# @see SqueezeFilter Normatron::Filters::SqueezeFilter
|
23
|
+
def self.evaluate(input)
|
24
|
+
input.kind_of?(String) ? input.squish : input
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'normatron/filters/helpers'
|
2
|
+
|
3
|
+
module Normatron
|
4
|
+
module Filters
|
5
|
+
module StripFilter
|
6
|
+
extend Helpers
|
7
|
+
|
8
|
+
##
|
9
|
+
# Remove traling and/or leading spaces from the string.
|
10
|
+
#
|
11
|
+
# @example
|
12
|
+
# StripFilter.evaluate(" copy ") #=> "copy"
|
13
|
+
# StripFilter.evaluate(" copy ", :L) #=> "copy "
|
14
|
+
# StripFilter.evaluate(" copy ", :R) #=> " copy"
|
15
|
+
# StripFilter.evaluate(" copy ", :LR) #=> "copy"
|
16
|
+
#
|
17
|
+
# @example Using as ActiveRecord::Base normalizer
|
18
|
+
# normalize :attribute_a, :with => :strip
|
19
|
+
# normalize :attribute_b, :with => { :strip => :L }
|
20
|
+
# normalize :attribute_c, :with => [:custom_filter, :strip]
|
21
|
+
# normalize :attribute_d, :with => [:custom_filter, [:strip, :L]]
|
22
|
+
# normalize :attribute_e, :with => [:custom_filter, {:strip => :R}]
|
23
|
+
#
|
24
|
+
# @param [String] input A character sequence
|
25
|
+
# @param [Symbol] option :L to strip trailing spaces, :R for leading spaces and :LR for both
|
26
|
+
# @return [String] The character sequence without trailing and leading spaces or the object itself
|
27
|
+
# @see http://www.ruby-doc.org/core-1.9.3/String.html#method-i-strip String#strip
|
28
|
+
def self.evaluate(input, option=:LR)
|
29
|
+
input.kind_of?(String) ? evaluate_strip(input, option) : input
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'normatron/filters/helpers'
|
2
|
+
|
3
|
+
module Normatron
|
4
|
+
module Filters
|
5
|
+
module SwapcaseFilter
|
6
|
+
extend Helpers
|
7
|
+
|
8
|
+
##
|
9
|
+
# Replaces uppercased characters by lowercased and vice versa.
|
10
|
+
#
|
11
|
+
# @example
|
12
|
+
# SwapcaseFilter.evaluate("As you Wish!") #=> "aS YOU wISH!"
|
13
|
+
#
|
14
|
+
# @example Using as ActiveRecord::Base normalizer
|
15
|
+
# normalize :attribute_a, :with => :swapcase
|
16
|
+
# normalize :attribute_b, :with => [:custom_filter, :swapcase]
|
17
|
+
#
|
18
|
+
# @param [String] input A character sequence
|
19
|
+
# @return [String] The swapped case character sequence or the object itself
|
20
|
+
# @see http://www.ruby-doc.org/core-1.9.3/String.html#method-i-swapcase String#swapcase
|
21
|
+
# @see DownFilter Normatron::Filters::DownFilter
|
22
|
+
# @see TitleizeFilter Normatron::Filters::TitleizeFilter
|
23
|
+
# @see UpcaseFilter Normatron::Filters::UpcaseFilter
|
24
|
+
def self.evaluate(input)
|
25
|
+
return input unless input.kind_of?(String)
|
26
|
+
input.gsub(/([\p{Ll}])|(\p{Lu})|([^\p{Ll}\p{Lu}])/u) { $3 || ($2 ? mb_send(:downcase, $2) : mb_send(:upcase, $1)) }
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'normatron/filters/helpers'
|
2
|
+
|
3
|
+
module Normatron
|
4
|
+
module Filters
|
5
|
+
module TitleizeFilter
|
6
|
+
extend Helpers
|
7
|
+
|
8
|
+
##
|
9
|
+
# Capitalizes the first character of each word.
|
10
|
+
#
|
11
|
+
# @example
|
12
|
+
# TitleizeFilter.evaluate("at your will!") #=> "At Your Will!"
|
13
|
+
#
|
14
|
+
# @example Using as ActiveRecord::Base normalizer
|
15
|
+
# normalize :attribute_a, :with => :titleize
|
16
|
+
# normalize :attribute_b, :with => [:custom_filter, :titleize]
|
17
|
+
#
|
18
|
+
# @param [String] input A character sequence
|
19
|
+
# @return [String] The titleized character sequence or the object itself
|
20
|
+
# @see http://api.rubyonrails.org/classes/ActiveSupport/Multibyte/Chars.html#method-i-titleize ActiveSupport::Multibyte::Chars#titleize
|
21
|
+
# @see DownFilter Normatron::Filters::DownFilter
|
22
|
+
# @see SwapcaseFilter Normatron::Filters::SwapcaseFilter
|
23
|
+
# @see UpcaseFilter Normatron::Filters::UpcaseFilter
|
24
|
+
def self.evaluate(input)
|
25
|
+
input.kind_of?(String) ? mb_send(:titleize, input) : input
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'normatron/filters/helpers'
|
2
|
+
|
3
|
+
module Normatron
|
4
|
+
module Filters
|
5
|
+
module UnderscoreFilter
|
6
|
+
extend Helpers
|
7
|
+
|
8
|
+
##
|
9
|
+
# Makes an underscored, lowercase form from the expression in the string.
|
10
|
+
#
|
11
|
+
# Changes ‘::’ to ‘/’ to convert namespaces to paths.
|
12
|
+
#
|
13
|
+
# As a rule of thumb you can think of underscore as the inverse of camelize, though there are cases where that does not hold:
|
14
|
+
# "SSLError".underscore.camelize # => "SslError"
|
15
|
+
#
|
16
|
+
# @example
|
17
|
+
# UnderscoreFilter.evaluate("ActiveRecord::Errors") #=> "active_record/errors"
|
18
|
+
#
|
19
|
+
# @example Using as ActiveRecord::Base normalizer
|
20
|
+
# normalize :attribute_a, :with => :underscore
|
21
|
+
# normalize :attribute_b, :with => [:custom_filter, :underscore]
|
22
|
+
# normalize :attribute_c, :with => [[:underscore, :lower]]
|
23
|
+
# normalize :attribute_d, :with => [{:underscore => :lower}]
|
24
|
+
# normalize :attribute_e, :with => [:custom_filter, [:underscore, :lower]]
|
25
|
+
# normalize :attribute_f, :with => [:custom_filter, {:underscore => :lower}]
|
26
|
+
#
|
27
|
+
# @param [String] input A character sequence
|
28
|
+
# @return [String] The underscored character sequence or the object itself
|
29
|
+
# @see http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method-i-underscore ActiveSupport::Inflector#underscore
|
30
|
+
# @see CamelizeFilter Normatron::Filters::CamelizeFilter
|
31
|
+
# @todo Performance tests
|
32
|
+
# @todo Exception class
|
33
|
+
def self.evaluate(input)
|
34
|
+
return input unless input.kind_of?(String)
|
35
|
+
|
36
|
+
input.gsub!(/::/, '/')
|
37
|
+
input.gsub!(/(?:([\p{Ll}\p{Lu}\d])|^)(#{acronym_regex})(?=\b|[^\p{Ll}])/u) { "#{$1}#{$1 && '_'}#{mb_send(:downcase, $2)}" }
|
38
|
+
input.gsub!(/([\p{Lu}\d]+)([\p{Lu}][\p{Ll}])/u,'\1_\2')
|
39
|
+
input.gsub!(/([\p{Ll}\d])([\p{Lu}])/u,'\1_\2')
|
40
|
+
input.tr!("-", "_")
|
41
|
+
mb_send(:downcase, input)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'normatron/filters/helpers'
|
2
|
+
|
3
|
+
module Normatron
|
4
|
+
module Filters
|
5
|
+
module UpcaseFilter
|
6
|
+
extend Helpers
|
7
|
+
|
8
|
+
##
|
9
|
+
# Uppercase all characters.
|
10
|
+
#
|
11
|
+
# @example
|
12
|
+
# upcase("borderlands") #=> "BORDERLANDS"
|
13
|
+
#
|
14
|
+
# @example Using as ActiveRecord::Base normalizer
|
15
|
+
# normalize :attribute_a, :with => :upcase
|
16
|
+
# normalize :attribute_b, :with => [:custom_filter, :upcase]
|
17
|
+
#
|
18
|
+
# @return [String, Chars] The uppercased character sequence or the object itself
|
19
|
+
# @see http://www.ruby-doc.org/core-1.9.3/String.html#method-i-upcase String#upcase
|
20
|
+
# @see http://api.rubyonrails.org/classes/ActiveSupport/Multibyte/Chars.html#method-i-upcase ActiveSupport::Multibyte::Chars#upcase
|
21
|
+
# @see DownFilter Normatron::Filters::DownFilter
|
22
|
+
# @see TitleizeFilter Normatron::Filters::TitleizeFilter
|
23
|
+
# @see SwapcaseFilter Normatron::Filters::SwapcaseFilter
|
24
|
+
def self.evaluate(input)
|
25
|
+
input.kind_of?(String) ? mb_send(:upcase, input) : input
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'normatron/configuration'
|
3
|
+
|
4
|
+
describe Normatron::Configuration do
|
5
|
+
|
6
|
+
before :each do
|
7
|
+
@instance = described_class.new
|
8
|
+
end
|
9
|
+
|
10
|
+
subject { @instance }
|
11
|
+
|
12
|
+
describe :default_filters do
|
13
|
+
it "should be initialized" do
|
14
|
+
subject.default_filters.should == { blank: nil, squish: nil }
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should parse and set filters properly" do
|
18
|
+
subject.default_filters = :upcase, :blank, { keep: [:L, :N] }, [:remove, :S, :Z]
|
19
|
+
subject.default_filters.should == { upcase: nil, blank: nil, keep: [:L, :N], remove: [:S, :Z] }
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe :filters do
|
24
|
+
it "should be initialized" do
|
25
|
+
subject.filters[:blank] .should eq Normatron::Filters::BlankFilter
|
26
|
+
subject.filters[:camelize] .should eq Normatron::Filters::CamelizeFilter
|
27
|
+
subject.filters[:capitalize].should eq Normatron::Filters::CapitalizeFilter
|
28
|
+
subject.filters[:chomp] .should eq Normatron::Filters::ChompFilter
|
29
|
+
subject.filters[:dasherize] .should eq Normatron::Filters::DasherizeFilter
|
30
|
+
subject.filters[:downcase] .should eq Normatron::Filters::DowncaseFilter
|
31
|
+
subject.filters[:dump] .should eq Normatron::Filters::DumpFilter
|
32
|
+
subject.filters[:keep] .should eq Normatron::Filters::KeepFilter
|
33
|
+
subject.filters[:remove] .should eq Normatron::Filters::RemoveFilter
|
34
|
+
subject.filters[:squeeze] .should eq Normatron::Filters::SqueezeFilter
|
35
|
+
subject.filters[:squish] .should eq Normatron::Filters::SquishFilter
|
36
|
+
subject.filters[:strip] .should eq Normatron::Filters::StripFilter
|
37
|
+
subject.filters[:swapcase] .should eq Normatron::Filters::SwapcaseFilter
|
38
|
+
subject.filters[:titleize] .should eq Normatron::Filters::TitleizeFilter
|
39
|
+
subject.filters[:underscore].should eq Normatron::Filters::UnderscoreFilter
|
40
|
+
subject.filters[:upcase] .should eq Normatron::Filters::UpcaseFilter
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should allow add new filters" do
|
44
|
+
subject.filters[:smile] = MyFilters::SmileFilter
|
45
|
+
subject.filters[:smile].should eq MyFilters::SmileFilter
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should allow remove filters" do
|
49
|
+
lambda { subject.filters.delete(subject.filters.keys.first) }.should_not raise_error
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe :add_orm do
|
54
|
+
it "should include ActiveRecord extension" do
|
55
|
+
ActiveRecord::Base.include?(Normatron::Extensions::ActiveRecord).should be_false
|
56
|
+
subject.add_orm Normatron::Extensions::ActiveRecord
|
57
|
+
ActiveRecord::Base.include?(Normatron::Extensions::ActiveRecord).should be_true
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
require 'normatron'
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Normatron::Extensions::ActiveRecord do
|
5
|
+
|
6
|
+
it { subject.constants.should include(:ORM_CLASS) }
|
7
|
+
|
8
|
+
let(:ext) { Normatron::Extensions }
|
9
|
+
let(:configuration) { Normatron.configuration }
|
10
|
+
let(:model) { User }
|
11
|
+
|
12
|
+
before(:all) { ActiveRecord::Base.send(:include, Normatron::Extensions::ActiveRecord) }
|
13
|
+
before(:each) { model.normalize_filters = nil }
|
14
|
+
after(:all) do
|
15
|
+
ActiveRecord.send(:remove_const, :Base)
|
16
|
+
load 'active_record/base.rb'
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
describe :normalize do
|
21
|
+
subject { model }
|
22
|
+
|
23
|
+
it "should raise UnknownAttributeError" do
|
24
|
+
lambda { subject.normalize :unknown }.should raise_error(ext::UnknownAttributeError)
|
25
|
+
lambda { subject.normalize nil }.should raise_error(ext::UnknownAttributeError)
|
26
|
+
lambda { subject.normalize :phone, :unknown }.should raise_error(ext::UnknownAttributeError)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should append default filters" do
|
30
|
+
subject.normalize :login, :email
|
31
|
+
subject.normalize_filters.should == { :login => configuration.default_filters,
|
32
|
+
:email => configuration.default_filters }
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should stack filters for multiple calls" do
|
36
|
+
subject.normalize :login
|
37
|
+
subject.normalize :login, :with => :upcase
|
38
|
+
subject.normalize_filters.should == { :login => configuration.default_filters.merge({ :upcase => nil }) }
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should append multiple attributes" do
|
42
|
+
subject.normalize :login, :email, :phone
|
43
|
+
subject.normalize_filters.should == { login: { squish: nil, blank: nil },
|
44
|
+
email: { squish: nil, blank: nil },
|
45
|
+
phone: { squish: nil, blank: nil } }
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should allow multiple filters" do
|
49
|
+
subject.normalize :login, :with => [:upcase, :blank]
|
50
|
+
subject.normalize_filters.should == { login: { upcase: nil, blank: nil } }
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should allow multiple filters" do
|
54
|
+
subject.normalize :login, :with => [[:keep, :L], { :remove => [:N] }]
|
55
|
+
subject.normalize_filters.should == { login: { keep: [:L], remove: [:N] } }
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe :apply_normalizations do
|
60
|
+
before(:each) { @instance = model.new }
|
61
|
+
subject { @instance }
|
62
|
+
|
63
|
+
it "should run instance method filter" do
|
64
|
+
model.class_eval do
|
65
|
+
define_method :sad_face do |value|
|
66
|
+
value + " =("
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
model.normalize :login, :with => :sad_face
|
71
|
+
subject.login = "..."
|
72
|
+
subject.apply_normalizations
|
73
|
+
subject.login.should eq "... =("
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should run native filter" do
|
77
|
+
model.normalize :login, :with => :squish
|
78
|
+
subject.login = " word "
|
79
|
+
subject.apply_normalizations
|
80
|
+
subject.login.should eq "word"
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should be called before validation" do
|
84
|
+
model.normalize :login, :with => :blank
|
85
|
+
subject.login = " "
|
86
|
+
subject.valid?
|
87
|
+
subject.login.should == nil
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should raise UnknownFilterError" do
|
91
|
+
model.normalize :login, :with => :unknown
|
92
|
+
subject.login = " "
|
93
|
+
lambda { subject.apply_normalizations }.should raise_error(ext::UnknownFilterError)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'normatron/filters/blank_filter'
|
3
|
+
|
4
|
+
describe Normatron::Filters::BlankFilter do
|
5
|
+
it_should_behave_like "string processor"
|
6
|
+
it_should_behave_like "evaluable filter", ["18pm"], "18pm"
|
7
|
+
|
8
|
+
describe :blank do
|
9
|
+
let(:word) { "phase" }
|
10
|
+
it { subject.send(:evaluate, " ").should be_nil }
|
11
|
+
it { subject.send(:evaluate, "\n \t \r \f").should be_nil }
|
12
|
+
it { subject.send(:evaluate, "\n\t\r\f" ).should be_nil }
|
13
|
+
it { subject.send(:evaluate, word ).should equal word }
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'normatron/filters/camelize_filter'
|
5
|
+
|
6
|
+
describe Normatron::Filters::CamelizeFilter do
|
7
|
+
it_should_behave_like "string processor"
|
8
|
+
it_should_behave_like "evaluable filter", ["active_record/errors" ], "ActiveRecord::Errors"
|
9
|
+
it_should_behave_like "evaluable filter", ["active_record/errors", :upper ], "ActiveRecord::Errors"
|
10
|
+
it_should_behave_like "evaluable filter", ["active_record/errors", :lower ], "activeRecord::Errors"
|
11
|
+
it_should_behave_like "evaluable filter", ["dados_históricos/período/empresa" ], "DadosHistóricos::Período::Empresa"
|
12
|
+
it_should_behave_like "evaluable filter", ["dados_históricos/período/empresa", :upper], "DadosHistóricos::Período::Empresa"
|
13
|
+
it_should_behave_like "evaluable filter", ["dados_históricos/período/empresa", :lower], "dadosHistóricos::Período::Empresa"
|
14
|
+
it_should_behave_like "evaluable filter", ["ímpar_par/norte_sul" ], "ÍmparPar::NorteSul"
|
15
|
+
it_should_behave_like "evaluable filter", ["ímpar_par/norte_sul", :upper ], "ÍmparPar::NorteSul"
|
16
|
+
it_should_behave_like "evaluable filter", ["ímpar_par/norte_sul", :lower ], "ímparPar::NorteSul"
|
17
|
+
|
18
|
+
context "should affect acronyms" do
|
19
|
+
let(:inflections) { ActiveSupport::Inflector::Inflections.instance }
|
20
|
+
|
21
|
+
before(:all) do
|
22
|
+
inflections.acronym 'HTTP'
|
23
|
+
inflections.acronym 'SSL'
|
24
|
+
inflections.acronym 'Xml'
|
25
|
+
inflections.acronym 'docType'
|
26
|
+
end
|
27
|
+
|
28
|
+
after(:all) do
|
29
|
+
inflections.acronyms.delete("http")
|
30
|
+
inflections.acronyms.delete("ssl")
|
31
|
+
inflections.acronyms.delete("xml")
|
32
|
+
inflections.acronyms.delete("doctype")
|
33
|
+
end
|
34
|
+
|
35
|
+
it_should_behave_like "evaluable filter", ["http_address/ssl/xml_file/doctype" ], "HTTPAddress::SSL::XmlFile::docType"
|
36
|
+
it_should_behave_like "evaluable filter", ["http_address/ssl/xml_file/doctype", :upper], "HTTPAddress::SSL::XmlFile::docType"
|
37
|
+
it_should_behave_like "evaluable filter", ["http_address/ssl/xml_file/doctype", :lower], "httpAddress::SSL::XmlFile::docType"
|
38
|
+
it_should_behave_like "evaluable filter", ["doctype_stop/run_ssl/xml/mix_http" ], "docTypeStop::RunSSL::Xml::MixHTTP"
|
39
|
+
it_should_behave_like "evaluable filter", ["doctype_stop/run_ssl/xml/mix_http", :upper], "docTypeStop::RunSSL::Xml::MixHTTP"
|
40
|
+
it_should_behave_like "evaluable filter", ["doctype_stop/run_ssl/xml/mix_http", :lower], "doctypeStop::RunSSL::Xml::MixHTTP"
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'normatron/filters/capitalize_filter'
|
5
|
+
|
6
|
+
describe Normatron::Filters::CapitalizeFilter do
|
7
|
+
it_should_behave_like "string processor"
|
8
|
+
it_should_behave_like "evaluable filter", ["i love winter" ], "I love winter"
|
9
|
+
it_should_behave_like "evaluable filter", ["I LOVE WINTER" ], "I love winter"
|
10
|
+
it_should_behave_like "evaluable filter", ["ó, vida cruel!"], "Ó, vida cruel!"
|
11
|
+
it_should_behave_like "evaluable filter", ["Ó, VIDA CRUEL!"], "Ó, vida cruel!"
|
12
|
+
it_should_behave_like "evaluable filter", ["1 minute" ], "1 minute"
|
13
|
+
it_should_behave_like "evaluable filter", ["1 MINUTE" ], "1 minute"
|
14
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'normatron/filters/chomp_filter'
|
5
|
+
|
6
|
+
describe Normatron::Filters::ChompFilter do
|
7
|
+
it_should_behave_like "string processor"
|
8
|
+
it_should_behave_like "evaluable filter", ["show me the money" ], "show me the money"
|
9
|
+
it_should_behave_like "evaluable filter", ["show me the money\n" ], "show me the money"
|
10
|
+
it_should_behave_like "evaluable filter", ["show me the money\r" ], "show me the money"
|
11
|
+
it_should_behave_like "evaluable filter", ["show me the money\r\n" ], "show me the money"
|
12
|
+
it_should_behave_like "evaluable filter", ["show me the money\n\r" ], "show me the money\n"
|
13
|
+
it_should_behave_like "evaluable filter", ["show me the money", " money" ], "show me the"
|
14
|
+
it_should_behave_like "evaluable filter", ["show me the money", " money".mb_chars], "show me the"
|
15
|
+
end
|