normatron 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -35,7 +35,6 @@ module Normatron
35
35
  end
36
36
 
37
37
  # Append new filters to rules
38
- @normalize_rules ||= {}
39
38
  @normalize_rules =
40
39
  args.reduce(@normalize_rules) do |hash, att|
41
40
  filters = (@normalize_rules[att] || {}).merge(new_filters)
@@ -46,9 +45,11 @@ module Normatron
46
45
 
47
46
  module InstanceMethods
48
47
  def apply_normalizations
48
+ return unless self.class.normalize_rules
49
+
49
50
  listed_filters = Normatron.configuration.filters
50
51
 
51
- self.class.normalize_filters.each do |attribute, filters|
52
+ self.class.normalize_rules.each do |attribute, filters|
52
53
  value = send("#{attribute}_before_type_cast") || send(attribute)
53
54
 
54
55
  filters.each do |filter, args|
@@ -48,7 +48,8 @@ module Normatron
48
48
 
49
49
  string = mb_send(:downcase, input)
50
50
  string.sub!(/^[^_|\/]+/) { camel == :upper ? acronyms[$&] || mb_send(:capitalize, $&) : $& }
51
- string.gsub(/(?:(\/)|_)([^\/|_]+)/) { "#{$1}#{acronyms[$2] || mb_send(:capitalize, $2)}" }.gsub("/", "::")
51
+ string.gsub!(/(?:(\/)|_)([^\/|_]+)/) { "#{$1}#{acronyms[$2] || mb_send(:capitalize, $2)}" }
52
+ string.gsub("/", "::")
52
53
  end
53
54
  end
54
55
  end
@@ -39,12 +39,12 @@ module Normatron
39
39
  def self.evaluate(input)
40
40
  return input unless input.kind_of?(String)
41
41
 
42
- input.gsub!(/::/, '/')
43
- input.gsub!(/(?:([\p{Ll}\p{Lu}\d])|^)(#{acronym_regex})(?=\b|[^\p{Ll}])/u) { "#{$1}#{$1 && '_'}#{mb_send(:downcase, $2)}" }
44
- input.gsub!(/([\p{Lu}\d]+)([\p{Lu}][\p{Ll}])/u,'\1_\2')
45
- input.gsub!(/([\p{Ll}\d])([\p{Lu}])/u,'\1_\2')
46
- input.tr!("-", "_")
47
- mb_send(:downcase, input)
42
+ string = input.gsub(/::/, '/')
43
+ string.gsub!(/#{acronym_regex}/) { "_#{$&}_".downcase }
44
+ string.gsub!(/\b_|_\b/, "")
45
+ string.gsub!(/([^\/\b_])(?=[\p{Lu}])/u) { "#{$&}_" }
46
+ string.tr!("-", "_")
47
+ mb_send(:downcase, string)
48
48
  end
49
49
  end
50
50
  end
@@ -1,3 +1,3 @@
1
1
  module Normatron
2
- VERSION = "0.3.2"
2
+ VERSION = "0.3.3"
3
3
  end
@@ -1,68 +1,67 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Normatron::Configuration do
3
+ module Normatron
4
+ describe Configuration do
4
5
 
5
- before :each do
6
- @instance = described_class.new
7
- end
6
+ before(:each) { @instance = described_class.new }
7
+ subject { @instance }
8
8
 
9
- subject { @instance }
9
+ describe :default_filters do
10
+ it "should have default values" do
11
+ subject.default_filters.should == { blank: nil, squish: nil }
12
+ end
10
13
 
11
- describe :default_filters do
12
- it "should be initialized" do
13
- subject.default_filters.should == { blank: nil, squish: nil }
14
+ it "should parse and set filters properly" do
15
+ subject.default_filters = :upcase, :blank, { keep: [:L, :N] }, [:remove, :S, :Z]
16
+ subject.default_filters.should == { upcase: nil, blank: nil, keep: [:L, :N], remove: [:S, :Z] }
17
+ end
14
18
  end
15
19
 
16
- it "should parse and set filters properly" do
17
- subject.default_filters = :upcase, :blank, { keep: [:L, :N] }, [:remove, :S, :Z]
18
- subject.default_filters.should == { upcase: nil, blank: nil, keep: [:L, :N], remove: [:S, :Z] }
19
- end
20
- end
20
+ describe :filters do
21
+ context "when initialized" do
22
+ it { subject.filters[:ascii] .should eq Normatron::Filters::AsciiFilter }
23
+ it { subject.filters[:blank] .should eq Normatron::Filters::BlankFilter }
24
+ it { subject.filters[:camelize] .should eq Normatron::Filters::CamelizeFilter }
25
+ it { subject.filters[:capitalize].should eq Normatron::Filters::CapitalizeFilter }
26
+ it { subject.filters[:chomp] .should eq Normatron::Filters::ChompFilter }
27
+ it { subject.filters[:dasherize] .should eq Normatron::Filters::DasherizeFilter }
28
+ it { subject.filters[:downcase] .should eq Normatron::Filters::DowncaseFilter }
29
+ it { subject.filters[:dump] .should eq Normatron::Filters::DumpFilter }
30
+ it { subject.filters[:keep] .should eq Normatron::Filters::KeepFilter }
31
+ it { subject.filters[:remove] .should eq Normatron::Filters::RemoveFilter }
32
+ it { subject.filters[:squeeze] .should eq Normatron::Filters::SqueezeFilter }
33
+ it { subject.filters[:squish] .should eq Normatron::Filters::SquishFilter }
34
+ it { subject.filters[:strip] .should eq Normatron::Filters::StripFilter }
35
+ it { subject.filters[:swapcase] .should eq Normatron::Filters::SwapcaseFilter }
36
+ it { subject.filters[:titleize] .should eq Normatron::Filters::TitleizeFilter }
37
+ it { subject.filters[:underscore].should eq Normatron::Filters::UnderscoreFilter }
38
+ it { subject.filters[:upcase] .should eq Normatron::Filters::UpcaseFilter }
39
+ end
21
40
 
22
- describe :filters do
23
- context "when initialized" do
24
- it { subject.filters[:ascii] .should eq Normatron::Filters::AsciiFilter }
25
- it { subject.filters[:blank] .should eq Normatron::Filters::BlankFilter }
26
- it { subject.filters[:camelize] .should eq Normatron::Filters::CamelizeFilter }
27
- it { subject.filters[:capitalize].should eq Normatron::Filters::CapitalizeFilter }
28
- it { subject.filters[:chomp] .should eq Normatron::Filters::ChompFilter }
29
- it { subject.filters[:dasherize] .should eq Normatron::Filters::DasherizeFilter }
30
- it { subject.filters[:downcase] .should eq Normatron::Filters::DowncaseFilter }
31
- it { subject.filters[:dump] .should eq Normatron::Filters::DumpFilter }
32
- it { subject.filters[:keep] .should eq Normatron::Filters::KeepFilter }
33
- it { subject.filters[:remove] .should eq Normatron::Filters::RemoveFilter }
34
- it { subject.filters[:squeeze] .should eq Normatron::Filters::SqueezeFilter }
35
- it { subject.filters[:squish] .should eq Normatron::Filters::SquishFilter }
36
- it { subject.filters[:strip] .should eq Normatron::Filters::StripFilter }
37
- it { subject.filters[:swapcase] .should eq Normatron::Filters::SwapcaseFilter }
38
- it { subject.filters[:titleize] .should eq Normatron::Filters::TitleizeFilter }
39
- it { subject.filters[:underscore].should eq Normatron::Filters::UnderscoreFilter }
40
- it { subject.filters[:upcase] .should eq Normatron::Filters::UpcaseFilter }
41
- end
41
+ context "when new filter is added" do
42
+ it "module filter should be set" do
43
+ subject.filters[:smile] = MyFilters::SmileFilter
44
+ subject.filters[:smile].should eq MyFilters::SmileFilter
45
+ end
42
46
 
43
- context "when new filter is added" do
44
- it "module filter should be set" do
45
- subject.filters[:smile] = MyFilters::SmileFilter
46
- subject.filters[:smile].should eq MyFilters::SmileFilter
47
+ it "lambda filter should be set" do
48
+ lambda_filter = lambda { |input, value| input << value }
49
+ subject.filters[:append] = lambda_filter
50
+ subject.filters[:append].should eq lambda_filter
51
+ end
47
52
  end
48
53
 
49
- it "lambda filter should be set" do
50
- lambda_filter = lambda { |input, value| input << value }
51
- subject.filters[:append] = lambda_filter
52
- subject.filters[:append].should eq lambda_filter
54
+ it "should allow remove filters" do
55
+ lambda { subject.filters.delete(subject.filters.keys.first) }.should_not raise_error
53
56
  end
54
57
  end
55
58
 
56
- it "should allow remove filters" do
57
- lambda { subject.filters.delete(subject.filters.keys.first) }.should_not raise_error
58
- end
59
- end
60
-
61
- describe :add_orm do
62
- it "should include ActiveRecord extension" do
63
- ActiveRecord::Base.include?(Normatron::Extensions::ActiveRecord).should be_false
64
- subject.add_orm Normatron::Extensions::ActiveRecord
65
- ActiveRecord::Base.include?(Normatron::Extensions::ActiveRecord).should be_true
59
+ describe :add_orm do
60
+ it "should include ActiveRecord extension" do
61
+ ActiveRecord::Base.include?(Normatron::Extensions::ActiveRecord).should be_false
62
+ subject.add_orm Normatron::Extensions::ActiveRecord
63
+ ActiveRecord::Base.include?(Normatron::Extensions::ActiveRecord).should be_true
64
+ end
66
65
  end
67
66
  end
68
67
  end
@@ -13,8 +13,6 @@ module Normatron
13
13
  it { should evaluate("⠋⠗⠁⠝⠉⠑" ).to("france" ) }
14
14
  it { should evaluate(100 ).to(100 ) }
15
15
  it { should evaluate(nil ).to(nil ) }
16
-
17
- pending "Open a pull request to Stringex.\n'¬' (not sign) character is not evaluating as expected (minus sign or tilde)."
18
16
  end
19
17
  end
20
18
  end
@@ -3,12 +3,12 @@ require 'spec_helper'
3
3
  module Normatron
4
4
  module Filters
5
5
  describe BlankFilter do
6
- it { subject.send(:evaluate, " ").should be_nil }
7
- it { subject.send(:evaluate, "\n \t \r \f").should be_nil }
8
- it { subject.send(:evaluate, "\n\t\r\f" ).should be_nil }
9
- it { subject.send(:evaluate, "phase" ).should eq("phase") }
10
- it { subject.send(:evaluate, 100 ).should eq(100) }
11
- it { subject.send(:evaluate, nil ).should be_nil }
6
+ it { should evaluate(" ").to(nil ).constraints({identity: false, type: false}) }
7
+ it { should evaluate("\n \t \r \f").to(nil ).constraints({identity: false, type: false}) }
8
+ it { should evaluate("\n\t\r\f" ).to(nil ).constraints({identity: false, type: false}) }
9
+ it { should evaluate("phase" ).to("phase").constraints({identity: false, type: true }) }
10
+ it { should evaluate(100 ).to(100 ).constraints({identity: false, type: true }) }
11
+ it { should evaluate(nil ).to(nil ).constraints({identity: false, type: true }) }
12
12
  end
13
13
  end
14
14
  end
@@ -1,7 +1,6 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  require 'spec_helper'
4
- require 'normatron/filters/camelize_filter'
5
4
 
6
5
  module Normatron
7
6
  module Filters
@@ -93,10 +92,10 @@ module Normatron
93
92
  inflections.acronyms.delete("doctype")
94
93
  end
95
94
 
96
- it { should evaluate("http_address/ssl/xml_file/doctype").to("HTTPAddress::SSL::XmlFile::docType") }
97
- it { should evaluate("http_address/ssl/xml_file/doctype").to("httpAddress::SSL::XmlFile::docType").with(:lower) }
98
- it { should evaluate("doctype_stop/run_ssl/xml/mix_http").to("docTypeStop::RunSSL::Xml::MixHTTP" ) }
99
- it { should evaluate("doctype_stop/run_ssl/xml/mix_http").to("doctypeStop::RunSSL::Xml::MixHTTP" ).with(:lower) }
95
+ it { should evaluate("http_address/ssl_lib/xml_file/doctype").to("HTTPAddress::SSLLib::XmlFile::docType") }
96
+ it { should evaluate("http_address/ssl_lib/xml_file/doctype").to("httpAddress::SSLLib::XmlFile::docType").with(:lower) }
97
+ it { should evaluate("doctype_stop/run_ssl/xml/mix_http" ).to("docTypeStop::RunSSL::Xml::MixHTTP" ) }
98
+ it { should evaluate("doctype_stop/run_ssl/xml/mix_http" ).to("doctypeStop::RunSSL::Xml::MixHTTP" ).with(:lower) }
100
99
  end
101
100
  end
102
101
  end
@@ -1,15 +1,18 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  require 'spec_helper'
4
- require 'normatron/filters/capitalize_filter'
5
4
 
6
- describe Normatron::Filters::CapitalizeFilter do
7
- it { should evaluate("i love winter" ).to("I love winter" ) }
8
- it { should evaluate("I LOVE WINTER" ).to("I love winter" ) }
9
- it { should evaluate("ó, vida cruel!").to("Ó, vida cruel!") }
10
- it { should evaluate("Ó, VIDA CRUEL!").to("Ó, vida cruel!") }
11
- it { should evaluate("1 minute" ).to("1 minute" ) }
12
- it { should evaluate("1 MINUTE" ).to("1 minute" ) }
13
- it { should evaluate(100 ).to(100 ) }
14
- it { should evaluate(nil ).to(nil ) }
5
+ module Normatron
6
+ module Filters
7
+ describe CapitalizeFilter do
8
+ it { should evaluate("i love winter" ).to("I love winter" ) }
9
+ it { should evaluate("I LOVE WINTER" ).to("I love winter" ) }
10
+ it { should evaluate("ó, vida cruel!").to("Ó, vida cruel!") }
11
+ it { should evaluate("Ó, VIDA CRUEL!").to("Ó, vida cruel!") }
12
+ it { should evaluate("1 minute" ).to("1 minute" ) }
13
+ it { should evaluate("1 MINUTE" ).to("1 minute" ) }
14
+ it { should evaluate(100 ).to(100 ) }
15
+ it { should evaluate(nil ).to(nil ) }
16
+ end
17
+ end
15
18
  end
@@ -1,15 +1,18 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  require 'spec_helper'
4
- require 'normatron/filters/chomp_filter'
5
4
 
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"
5
+ module Normatron
6
+ module Filters
7
+ describe ChompFilter do
8
+ it { should evaluate("show me the money" ).to("show me the money" ) }
9
+ it { should evaluate("show me the money\n" ).to("show me the money" ) }
10
+ it { should evaluate("show me the money\r" ).to("show me the money" ) }
11
+ it { should evaluate("show me the money\r\n").to("show me the money" ) }
12
+ it { should evaluate("show me the money\n\r").to("show me the money\n") }
13
+ it { should evaluate("show me the money" ).to("show me the" ).with(" money") }
14
+ it { should evaluate(100 ).to(100 ) }
15
+ it { should evaluate(nil ).to(nil ) }
16
+ end
17
+ end
15
18
  end
@@ -1,9 +1,13 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  require 'spec_helper'
4
- require 'normatron/filters/dasherize_filter'
5
4
 
6
- describe Normatron::Filters::DasherizeFilter do
7
- it_should_behave_like "string processor"
8
- it_should_behave_like "evaluable filter", ["string_inflections"], "string-inflections"
5
+ module Normatron
6
+ module Filters
7
+ describe DasherizeFilter do
8
+ it { should evaluate("string_inflections").to("string-inflections") }
9
+ it { should evaluate(100 ).to(100 ) }
10
+ it { should evaluate(nil ).to(nil ) }
11
+ end
12
+ end
9
13
  end
@@ -1,10 +1,14 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  require 'spec_helper'
4
- require 'normatron/filters/downcase_filter'
5
4
 
6
- describe Normatron::Filters::DowncaseFilter do
7
- it_should_behave_like "string processor"
8
- it_should_behave_like "evaluable filter", ["caçador"], "caçador"
9
- it_should_behave_like "evaluable filter", ["CAÇADOR"], "caçador"
10
- end
5
+ module Normatron
6
+ module Filters
7
+ describe DowncaseFilter do
8
+ it { should evaluate("caçador").to("caçador") }
9
+ it { should evaluate("CAÇADOR").to("caçador") }
10
+ it { should evaluate(100 ).to(100 ) }
11
+ it { should evaluate(nil ).to(nil ) }
12
+ end
13
+ end
14
+ end
@@ -1,10 +1,14 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  require 'spec_helper'
4
- require 'normatron/filters/dump_filter'
5
4
 
6
- describe Normatron::Filters::DumpFilter do
7
- it_should_behave_like "string processor"
8
- it_should_behave_like "evaluable filter", ["First \n Time"], '"First \n Time"'
9
- it_should_behave_like "evaluable filter", ['First \n Time'], '"First \\\n Time"'
10
- end
5
+ module Normatron
6
+ module Filters
7
+ describe DumpFilter do
8
+ it { should evaluate("First \n Time").to('"First \n Time"' ) }
9
+ it { should evaluate('First \n Time').to('"First \\\n Time"') }
10
+ it { should evaluate(100 ).to(100 ) }
11
+ it { should evaluate(nil ).to(nil ) }
12
+ end
13
+ end
14
+ end
@@ -1,86 +1,92 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  require 'spec_helper'
4
- require 'normatron/filters/keep_filter'
5
4
 
6
- describe Normatron::Filters::KeepFilter do
7
- it_should_behave_like "string processor"
8
- it_should_behave_like "character cleaner", :keep, [:Graph]
9
- it_should_behave_like "character cleaner", :keep, [:Punct]
10
- it_should_behave_like "character cleaner", :keep, [:Upper]
11
- it_should_behave_like "character cleaner", :keep, [:Word]
12
- it_should_behave_like "character cleaner", :keep, [:Latin]
13
- it_should_behave_like "character cleaner", :keep, [:L]
14
- it_should_behave_like "character cleaner", :keep, [:M]
15
- it_should_behave_like "character cleaner", :keep, [:N]
16
- it_should_behave_like "character cleaner", :keep, [:P]
17
- it_should_behave_like "character cleaner", :keep, [:S]
18
- it_should_behave_like "character cleaner", :keep, [:Z]
19
- it_should_behave_like "character cleaner", :keep, [:C]
20
- it_should_behave_like "character cleaner", :keep, [:Graph, :Punct]
21
- it_should_behave_like "character cleaner", :keep, [:Graph, :Upper]
22
- it_should_behave_like "character cleaner", :keep, [:Graph, :Word]
23
- it_should_behave_like "character cleaner", :keep, [:Graph, :Latin]
24
- it_should_behave_like "character cleaner", :keep, [:Graph, :L]
25
- it_should_behave_like "character cleaner", :keep, [:Graph, :M]
26
- it_should_behave_like "character cleaner", :keep, [:Graph, :N]
27
- it_should_behave_like "character cleaner", :keep, [:Graph, :P]
28
- it_should_behave_like "character cleaner", :keep, [:Graph, :S]
29
- it_should_behave_like "character cleaner", :keep, [:Graph, :Z]
30
- it_should_behave_like "character cleaner", :keep, [:Graph, :C]
31
- it_should_behave_like "character cleaner", :keep, [:Punct, :Upper]
32
- it_should_behave_like "character cleaner", :keep, [:Punct, :Word]
33
- it_should_behave_like "character cleaner", :keep, [:Punct, :Latin]
34
- it_should_behave_like "character cleaner", :keep, [:Punct, :L]
35
- it_should_behave_like "character cleaner", :keep, [:Punct, :M]
36
- it_should_behave_like "character cleaner", :keep, [:Punct, :N]
37
- it_should_behave_like "character cleaner", :keep, [:Punct, :P]
38
- it_should_behave_like "character cleaner", :keep, [:Punct, :S]
39
- it_should_behave_like "character cleaner", :keep, [:Punct, :Z]
40
- it_should_behave_like "character cleaner", :keep, [:Punct, :C]
41
- it_should_behave_like "character cleaner", :keep, [:Upper, :Word]
42
- it_should_behave_like "character cleaner", :keep, [:Upper, :Latin]
43
- it_should_behave_like "character cleaner", :keep, [:Upper, :L]
44
- it_should_behave_like "character cleaner", :keep, [:Upper, :M]
45
- it_should_behave_like "character cleaner", :keep, [:Upper, :N]
46
- it_should_behave_like "character cleaner", :keep, [:Upper, :P]
47
- it_should_behave_like "character cleaner", :keep, [:Upper, :S]
48
- it_should_behave_like "character cleaner", :keep, [:Upper, :Z]
49
- it_should_behave_like "character cleaner", :keep, [:Upper, :C]
50
- it_should_behave_like "character cleaner", :keep, [:Word, :Latin]
51
- it_should_behave_like "character cleaner", :keep, [:Word, :L]
52
- it_should_behave_like "character cleaner", :keep, [:Word, :M]
53
- it_should_behave_like "character cleaner", :keep, [:Word, :N]
54
- it_should_behave_like "character cleaner", :keep, [:Word, :P]
55
- it_should_behave_like "character cleaner", :keep, [:Word, :S]
56
- it_should_behave_like "character cleaner", :keep, [:Word, :Z]
57
- it_should_behave_like "character cleaner", :keep, [:Word, :C]
58
- it_should_behave_like "character cleaner", :keep, [:Latin, :L]
59
- it_should_behave_like "character cleaner", :keep, [:Latin, :M]
60
- it_should_behave_like "character cleaner", :keep, [:Latin, :N]
61
- it_should_behave_like "character cleaner", :keep, [:Latin, :P]
62
- it_should_behave_like "character cleaner", :keep, [:Latin, :S]
63
- it_should_behave_like "character cleaner", :keep, [:Latin, :Z]
64
- it_should_behave_like "character cleaner", :keep, [:Latin, :C]
65
- it_should_behave_like "character cleaner", :keep, [:L, :M]
66
- it_should_behave_like "character cleaner", :keep, [:L, :N]
67
- it_should_behave_like "character cleaner", :keep, [:L, :P]
68
- it_should_behave_like "character cleaner", :keep, [:L, :S]
69
- it_should_behave_like "character cleaner", :keep, [:L, :Z]
70
- it_should_behave_like "character cleaner", :keep, [:L, :C]
71
- it_should_behave_like "character cleaner", :keep, [:M, :N]
72
- it_should_behave_like "character cleaner", :keep, [:M, :P]
73
- it_should_behave_like "character cleaner", :keep, [:M, :S]
74
- it_should_behave_like "character cleaner", :keep, [:M, :Z]
75
- it_should_behave_like "character cleaner", :keep, [:M, :C]
76
- it_should_behave_like "character cleaner", :keep, [:N, :P]
77
- it_should_behave_like "character cleaner", :keep, [:N, :S]
78
- it_should_behave_like "character cleaner", :keep, [:N, :Z]
79
- it_should_behave_like "character cleaner", :keep, [:N, :C]
80
- it_should_behave_like "character cleaner", :keep, [:P, :S]
81
- it_should_behave_like "character cleaner", :keep, [:P, :Z]
82
- it_should_behave_like "character cleaner", :keep, [:P, :C]
83
- it_should_behave_like "character cleaner", :keep, [:S, :Z]
84
- it_should_behave_like "character cleaner", :keep, [:S, :C]
85
- it_should_behave_like "character cleaner", :keep, [:Z, :C]
86
- end
5
+ module Normatron
6
+ module Filters
7
+ describe KeepFilter do
8
+ let(:word) {"ᰄ긚 ᧔瑤л꽥๏ ѨDꨥ\aՇ謬ꗀᶆᵆ쳻ῼἬ鿃ႍꥈᤫ꙲⅟౮ⅰ⅘༌_゠⟦〉⸠›⸓⌟⅂₧௹¨⣭  \u2028\u2029\u008C\u0011⁠\uA7E5" }
9
+
10
+ it { should keep(:Graph ).from(word) }
11
+ it { should keep(:Punct ).from(word) }
12
+ it { should keep(:Upper ).from(word) }
13
+ it { should keep(:Word ).from(word) }
14
+ it { should keep(:Latin ).from(word) }
15
+ it { should keep(:L ).from(word) }
16
+ it { should keep(:M ).from(word) }
17
+ it { should keep(:N ).from(word) }
18
+ it { should keep(:P ).from(word) }
19
+ it { should keep(:S ).from(word) }
20
+ it { should keep(:Z ).from(word) }
21
+ it { should keep(:C ).from(word) }
22
+ it { should keep(:Graph, :Punct).from(word) }
23
+ it { should keep(:Graph, :Upper).from(word) }
24
+ it { should keep(:Graph, :Word ).from(word) }
25
+ it { should keep(:Graph, :Latin).from(word) }
26
+ it { should keep(:Graph, :L ).from(word) }
27
+ it { should keep(:Graph, :M ).from(word) }
28
+ it { should keep(:Graph, :N ).from(word) }
29
+ it { should keep(:Graph, :P ).from(word) }
30
+ it { should keep(:Graph, :S ).from(word) }
31
+ it { should keep(:Graph, :Z ).from(word) }
32
+ it { should keep(:Graph, :C ).from(word) }
33
+ it { should keep(:Punct, :Upper).from(word) }
34
+ it { should keep(:Punct, :Word ).from(word) }
35
+ it { should keep(:Punct, :Latin).from(word) }
36
+ it { should keep(:Punct, :L ).from(word) }
37
+ it { should keep(:Punct, :M ).from(word) }
38
+ it { should keep(:Punct, :N ).from(word) }
39
+ it { should keep(:Punct, :P ).from(word) }
40
+ it { should keep(:Punct, :S ).from(word) }
41
+ it { should keep(:Punct, :Z ).from(word) }
42
+ it { should keep(:Punct, :C ).from(word) }
43
+ it { should keep(:Upper, :Word ).from(word) }
44
+ it { should keep(:Upper, :Latin).from(word) }
45
+ it { should keep(:Upper, :L ).from(word) }
46
+ it { should keep(:Upper, :M ).from(word) }
47
+ it { should keep(:Upper, :N ).from(word) }
48
+ it { should keep(:Upper, :P ).from(word) }
49
+ it { should keep(:Upper, :S ).from(word) }
50
+ it { should keep(:Upper, :Z ).from(word) }
51
+ it { should keep(:Upper, :C ).from(word) }
52
+ it { should keep(:Word, :Latin ).from(word) }
53
+ it { should keep(:Word, :L ).from(word) }
54
+ it { should keep(:Word, :M ).from(word) }
55
+ it { should keep(:Word, :N ).from(word) }
56
+ it { should keep(:Word, :P ).from(word) }
57
+ it { should keep(:Word, :S ).from(word) }
58
+ it { should keep(:Word, :Z ).from(word) }
59
+ it { should keep(:Word, :C ).from(word) }
60
+ it { should keep(:Latin, :L ).from(word) }
61
+ it { should keep(:Latin, :M ).from(word) }
62
+ it { should keep(:Latin, :N ).from(word) }
63
+ it { should keep(:Latin, :P ).from(word) }
64
+ it { should keep(:Latin, :S ).from(word) }
65
+ it { should keep(:Latin, :Z ).from(word) }
66
+ it { should keep(:Latin, :C ).from(word) }
67
+ it { should keep(:L, :M ).from(word) }
68
+ it { should keep(:L, :N ).from(word) }
69
+ it { should keep(:L, :P ).from(word) }
70
+ it { should keep(:L, :S ).from(word) }
71
+ it { should keep(:L, :Z ).from(word) }
72
+ it { should keep(:L, :C ).from(word) }
73
+ it { should keep(:M, :N ).from(word) }
74
+ it { should keep(:M, :P ).from(word) }
75
+ it { should keep(:M, :S ).from(word) }
76
+ it { should keep(:M, :Z ).from(word) }
77
+ it { should keep(:M, :C ).from(word) }
78
+ it { should keep(:N, :P ).from(word) }
79
+ it { should keep(:N, :S ).from(word) }
80
+ it { should keep(:N, :Z ).from(word) }
81
+ it { should keep(:N, :C ).from(word) }
82
+ it { should keep(:P, :S ).from(word) }
83
+ it { should keep(:P, :Z ).from(word) }
84
+ it { should keep(:P, :C ).from(word) }
85
+ it { should keep(:S, :Z ).from(word) }
86
+ it { should keep(:S, :C ).from(word) }
87
+ it { should keep(:Z, :C ).from(word) }
88
+ it { should evaluate(100 ).to(100 ) }
89
+ it { should evaluate(nil ).to(nil ) }
90
+ end
91
+ end
92
+ end
@@ -1,86 +1,92 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  require 'spec_helper'
4
- require 'normatron/filters/remove_filter'
5
4
 
6
- describe Normatron::Filters::RemoveFilter do
7
- it_should_behave_like "string processor"
8
- it_should_behave_like "character cleaner", :remove, [:Graph]
9
- it_should_behave_like "character cleaner", :remove, [:Punct]
10
- it_should_behave_like "character cleaner", :remove, [:Upper]
11
- it_should_behave_like "character cleaner", :remove, [:Word]
12
- it_should_behave_like "character cleaner", :remove, [:Latin]
13
- it_should_behave_like "character cleaner", :remove, [:L]
14
- it_should_behave_like "character cleaner", :remove, [:M]
15
- it_should_behave_like "character cleaner", :remove, [:N]
16
- it_should_behave_like "character cleaner", :remove, [:P]
17
- it_should_behave_like "character cleaner", :remove, [:S]
18
- it_should_behave_like "character cleaner", :remove, [:Z]
19
- it_should_behave_like "character cleaner", :remove, [:C]
20
- it_should_behave_like "character cleaner", :remove, [:Graph, :Punct]
21
- it_should_behave_like "character cleaner", :remove, [:Graph, :Upper]
22
- it_should_behave_like "character cleaner", :remove, [:Graph, :Word]
23
- it_should_behave_like "character cleaner", :remove, [:Graph, :Latin]
24
- it_should_behave_like "character cleaner", :remove, [:Graph, :L]
25
- it_should_behave_like "character cleaner", :remove, [:Graph, :M]
26
- it_should_behave_like "character cleaner", :remove, [:Graph, :N]
27
- it_should_behave_like "character cleaner", :remove, [:Graph, :P]
28
- it_should_behave_like "character cleaner", :remove, [:Graph, :S]
29
- it_should_behave_like "character cleaner", :remove, [:Graph, :Z]
30
- it_should_behave_like "character cleaner", :remove, [:Graph, :C]
31
- it_should_behave_like "character cleaner", :remove, [:Punct, :Upper]
32
- it_should_behave_like "character cleaner", :remove, [:Punct, :Word]
33
- it_should_behave_like "character cleaner", :remove, [:Punct, :Latin]
34
- it_should_behave_like "character cleaner", :remove, [:Punct, :L]
35
- it_should_behave_like "character cleaner", :remove, [:Punct, :M]
36
- it_should_behave_like "character cleaner", :remove, [:Punct, :N]
37
- it_should_behave_like "character cleaner", :remove, [:Punct, :P]
38
- it_should_behave_like "character cleaner", :remove, [:Punct, :S]
39
- it_should_behave_like "character cleaner", :remove, [:Punct, :Z]
40
- it_should_behave_like "character cleaner", :remove, [:Punct, :C]
41
- it_should_behave_like "character cleaner", :remove, [:Upper, :Word]
42
- it_should_behave_like "character cleaner", :remove, [:Upper, :Latin]
43
- it_should_behave_like "character cleaner", :remove, [:Upper, :L]
44
- it_should_behave_like "character cleaner", :remove, [:Upper, :M]
45
- it_should_behave_like "character cleaner", :remove, [:Upper, :N]
46
- it_should_behave_like "character cleaner", :remove, [:Upper, :P]
47
- it_should_behave_like "character cleaner", :remove, [:Upper, :S]
48
- it_should_behave_like "character cleaner", :remove, [:Upper, :Z]
49
- it_should_behave_like "character cleaner", :remove, [:Upper, :C]
50
- it_should_behave_like "character cleaner", :remove, [:Word, :Latin]
51
- it_should_behave_like "character cleaner", :remove, [:Word, :L]
52
- it_should_behave_like "character cleaner", :remove, [:Word, :M]
53
- it_should_behave_like "character cleaner", :remove, [:Word, :N]
54
- it_should_behave_like "character cleaner", :remove, [:Word, :P]
55
- it_should_behave_like "character cleaner", :remove, [:Word, :S]
56
- it_should_behave_like "character cleaner", :remove, [:Word, :Z]
57
- it_should_behave_like "character cleaner", :remove, [:Word, :C]
58
- it_should_behave_like "character cleaner", :remove, [:Latin, :L]
59
- it_should_behave_like "character cleaner", :remove, [:Latin, :M]
60
- it_should_behave_like "character cleaner", :remove, [:Latin, :N]
61
- it_should_behave_like "character cleaner", :remove, [:Latin, :P]
62
- it_should_behave_like "character cleaner", :remove, [:Latin, :S]
63
- it_should_behave_like "character cleaner", :remove, [:Latin, :Z]
64
- it_should_behave_like "character cleaner", :remove, [:Latin, :C]
65
- it_should_behave_like "character cleaner", :remove, [:L, :M]
66
- it_should_behave_like "character cleaner", :remove, [:L, :N]
67
- it_should_behave_like "character cleaner", :remove, [:L, :P]
68
- it_should_behave_like "character cleaner", :remove, [:L, :S]
69
- it_should_behave_like "character cleaner", :remove, [:L, :Z]
70
- it_should_behave_like "character cleaner", :remove, [:L, :C]
71
- it_should_behave_like "character cleaner", :remove, [:M, :N]
72
- it_should_behave_like "character cleaner", :remove, [:M, :P]
73
- it_should_behave_like "character cleaner", :remove, [:M, :S]
74
- it_should_behave_like "character cleaner", :remove, [:M, :Z]
75
- it_should_behave_like "character cleaner", :remove, [:M, :C]
76
- it_should_behave_like "character cleaner", :remove, [:N, :P]
77
- it_should_behave_like "character cleaner", :remove, [:N, :S]
78
- it_should_behave_like "character cleaner", :remove, [:N, :Z]
79
- it_should_behave_like "character cleaner", :remove, [:N, :C]
80
- it_should_behave_like "character cleaner", :remove, [:P, :S]
81
- it_should_behave_like "character cleaner", :remove, [:P, :Z]
82
- it_should_behave_like "character cleaner", :remove, [:P, :C]
83
- it_should_behave_like "character cleaner", :remove, [:S, :Z]
84
- it_should_behave_like "character cleaner", :remove, [:S, :C]
85
- it_should_behave_like "character cleaner", :remove, [:Z, :C]
86
- end
5
+ module Normatron
6
+ module Filters
7
+ describe RemoveFilter do
8
+ let(:word) {"ᰄ긚 ᧔瑤л꽥๏ ѨDꨥ\aՇ謬ꗀᶆᵆ쳻ῼἬ鿃ႍꥈᤫ꙲⅟౮ⅰ⅘༌_゠⟦〉⸠›⸓⌟⅂₧௹¨⣭  \u2028\u2029\u008C\u0011⁠\uA7E5" }
9
+
10
+ it { should remove(:Graph ).from(word) }
11
+ it { should remove(:Punct ).from(word) }
12
+ it { should remove(:Upper ).from(word) }
13
+ it { should remove(:Word ).from(word) }
14
+ it { should remove(:Latin ).from(word) }
15
+ it { should remove(:L ).from(word) }
16
+ it { should remove(:M ).from(word) }
17
+ it { should remove(:N ).from(word) }
18
+ it { should remove(:P ).from(word) }
19
+ it { should remove(:S ).from(word) }
20
+ it { should remove(:Z ).from(word) }
21
+ it { should remove(:C ).from(word) }
22
+ it { should remove(:Graph, :Punct).from(word) }
23
+ it { should remove(:Graph, :Upper).from(word) }
24
+ it { should remove(:Graph, :Word ).from(word) }
25
+ it { should remove(:Graph, :Latin).from(word) }
26
+ it { should remove(:Graph, :L ).from(word) }
27
+ it { should remove(:Graph, :M ).from(word) }
28
+ it { should remove(:Graph, :N ).from(word) }
29
+ it { should remove(:Graph, :P ).from(word) }
30
+ it { should remove(:Graph, :S ).from(word) }
31
+ it { should remove(:Graph, :Z ).from(word) }
32
+ it { should remove(:Graph, :C ).from(word) }
33
+ it { should remove(:Punct, :Upper).from(word) }
34
+ it { should remove(:Punct, :Word ).from(word) }
35
+ it { should remove(:Punct, :Latin).from(word) }
36
+ it { should remove(:Punct, :L ).from(word) }
37
+ it { should remove(:Punct, :M ).from(word) }
38
+ it { should remove(:Punct, :N ).from(word) }
39
+ it { should remove(:Punct, :P ).from(word) }
40
+ it { should remove(:Punct, :S ).from(word) }
41
+ it { should remove(:Punct, :Z ).from(word) }
42
+ it { should remove(:Punct, :C ).from(word) }
43
+ it { should remove(:Upper, :Word ).from(word) }
44
+ it { should remove(:Upper, :Latin).from(word) }
45
+ it { should remove(:Upper, :L ).from(word) }
46
+ it { should remove(:Upper, :M ).from(word) }
47
+ it { should remove(:Upper, :N ).from(word) }
48
+ it { should remove(:Upper, :P ).from(word) }
49
+ it { should remove(:Upper, :S ).from(word) }
50
+ it { should remove(:Upper, :Z ).from(word) }
51
+ it { should remove(:Upper, :C ).from(word) }
52
+ it { should remove(:Word, :Latin ).from(word) }
53
+ it { should remove(:Word, :L ).from(word) }
54
+ it { should remove(:Word, :M ).from(word) }
55
+ it { should remove(:Word, :N ).from(word) }
56
+ it { should remove(:Word, :P ).from(word) }
57
+ it { should remove(:Word, :S ).from(word) }
58
+ it { should remove(:Word, :Z ).from(word) }
59
+ it { should remove(:Word, :C ).from(word) }
60
+ it { should remove(:Latin, :L ).from(word) }
61
+ it { should remove(:Latin, :M ).from(word) }
62
+ it { should remove(:Latin, :N ).from(word) }
63
+ it { should remove(:Latin, :P ).from(word) }
64
+ it { should remove(:Latin, :S ).from(word) }
65
+ it { should remove(:Latin, :Z ).from(word) }
66
+ it { should remove(:Latin, :C ).from(word) }
67
+ it { should remove(:L, :M ).from(word) }
68
+ it { should remove(:L, :N ).from(word) }
69
+ it { should remove(:L, :P ).from(word) }
70
+ it { should remove(:L, :S ).from(word) }
71
+ it { should remove(:L, :Z ).from(word) }
72
+ it { should remove(:L, :C ).from(word) }
73
+ it { should remove(:M, :N ).from(word) }
74
+ it { should remove(:M, :P ).from(word) }
75
+ it { should remove(:M, :S ).from(word) }
76
+ it { should remove(:M, :Z ).from(word) }
77
+ it { should remove(:M, :C ).from(word) }
78
+ it { should remove(:N, :P ).from(word) }
79
+ it { should remove(:N, :S ).from(word) }
80
+ it { should remove(:N, :Z ).from(word) }
81
+ it { should remove(:N, :C ).from(word) }
82
+ it { should remove(:P, :S ).from(word) }
83
+ it { should remove(:P, :Z ).from(word) }
84
+ it { should remove(:P, :C ).from(word) }
85
+ it { should remove(:S, :Z ).from(word) }
86
+ it { should remove(:S, :C ).from(word) }
87
+ it { should remove(:Z, :C ).from(word) }
88
+ it { should evaluate(100 ).to(100 ) }
89
+ it { should evaluate(nil ).to(nil ) }
90
+ end
91
+ end
92
+ end
@@ -1,10 +1,14 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  require 'spec_helper'
4
- require 'normatron/filters/squeeze_filter'
5
4
 
6
- describe Normatron::Filters::SqueezeFilter do
7
- it_should_behave_like "string processor"
8
- it { should evaluate("squeezing: hells bells").to("squezing: hels bels" ) }
9
- it { should evaluate("squeezing: hells bells").to("squeezing: hels bels").with("l") }
10
- end
5
+ module Normatron
6
+ module Filters
7
+ describe SqueezeFilter do
8
+ it { should evaluate("squeezing: hells bells").to("squezing: hels bels" ) }
9
+ it { should evaluate("squeezing: hells bells").to("squeezing: hels bels").with("l") }
10
+ it { should evaluate(100 ).to(100 ) }
11
+ it { should evaluate(nil ).to(nil ) }
12
+ end
13
+ end
14
+ end
@@ -1,12 +1,16 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  require 'spec_helper'
4
- require 'normatron/filters/squish_filter'
5
4
 
6
- describe Normatron::Filters::SquishFilter do
7
- it_should_behave_like "string processor"
8
- it_should_behave_like "evaluable filter", [" Friday 05 October 2012 " ], "Friday 05 October 2012"
9
- it_should_behave_like "evaluable filter", ["Friday 05 October 2012" ], "Friday 05 October 2012"
10
- it_should_behave_like "evaluable filter", ["Friday \n05 \nOctober \n2012" ], "Friday 05 October 2012"
11
- it_should_behave_like "evaluable filter", [" Friday 05 \nOctober 2012 "], "Friday 05 October 2012"
12
- end
5
+ module Normatron
6
+ module Filters
7
+ describe SquishFilter do
8
+ it { should evaluate(" Friday 05 October 2012 " ).to("Friday 05 October 2012") }
9
+ it { should evaluate("Friday 05 October 2012" ).to("Friday 05 October 2012") }
10
+ it { should evaluate("Friday \n05 \nOctober \n2012" ).to("Friday 05 October 2012") }
11
+ it { should evaluate(" Friday 05 \nOctober 2012 ").to("Friday 05 October 2012") }
12
+ it { should evaluate(100 ).to(100 ) }
13
+ it { should evaluate(nil ).to(nil ) }
14
+ end
15
+ end
16
+ end
@@ -1,12 +1,16 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  require 'spec_helper'
4
- require 'normatron/filters/strip_filter'
5
4
 
6
- describe Normatron::Filters::StripFilter do
7
- it_should_behave_like "string processor"
8
- it_should_behave_like "evaluable filter", [" to anywhere " ], "to anywhere"
9
- it_should_behave_like "evaluable filter", [" to anywhere ", :L ], "to anywhere "
10
- it_should_behave_like "evaluable filter", [" to anywhere ", :R ], " to anywhere"
11
- it_should_behave_like "evaluable filter", [" to anywhere ", :LR], "to anywhere"
12
- end
5
+ module Normatron
6
+ module Filters
7
+ describe StripFilter do
8
+ it { should evaluate(" to anywhere ").to("to anywhere" ) }
9
+ it { should evaluate(" to anywhere ").to("to anywhere ").with(:L ) }
10
+ it { should evaluate(" to anywhere ").to(" to anywhere").with(:R ) }
11
+ it { should evaluate(" to anywhere ").to("to anywhere" ).with(:LR) }
12
+ it { should evaluate(100 ).to(100 ) }
13
+ it { should evaluate(nil ).to(nil ) }
14
+ end
15
+ end
16
+ end
@@ -1,12 +1,16 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  require 'spec_helper'
4
- require 'normatron/filters/swapcase_filter'
5
4
 
6
- describe Normatron::Filters::SwapcaseFilter do
7
- it_should_behave_like "string processor"
8
- it_should_behave_like "evaluable filter", ["caçador"], "CAÇADOR"
9
- it_should_behave_like "evaluable filter", ["CAÇADOR"], "caçador"
10
- it_should_behave_like "evaluable filter", ["CaÇaDoR"], "cAçAdOr"
11
- it_should_behave_like "evaluable filter", ["cAçAdOr"], "CaÇaDoR"
12
- end
5
+ module Normatron
6
+ module Filters
7
+ describe SwapcaseFilter do
8
+ it { should evaluate("caçador").to("CAÇADOR") }
9
+ it { should evaluate("CAÇADOR").to("caçador") }
10
+ it { should evaluate("CaÇaDoR").to("cAçAdOr") }
11
+ it { should evaluate("cAçAdOr").to("CaÇaDoR") }
12
+ it { should evaluate(100 ).to(100 ) }
13
+ it { should evaluate(nil ).to(nil ) }
14
+ end
15
+ end
16
+ end
@@ -1,12 +1,16 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  require 'spec_helper'
4
- require 'normatron/filters/titleize_filter'
5
4
 
6
- describe Normatron::Filters::TitleizeFilter do
7
- it_should_behave_like "string processor"
8
- it_should_behave_like "evaluable filter", ["04. until it sleeps" ], "04. Until It Sleeps"
9
- it_should_behave_like "evaluable filter", ["04. UNTIL IT SLEEPS" ], "04. Until It Sleeps"
10
- it_should_behave_like "evaluable filter", ["quem é o dono deste sofá?"], "Quem É O Dono Deste Sofá?"
11
- it_should_behave_like "evaluable filter", ["QUEM É O DONO DESTE SOFÁ?"], "Quem É O Dono Deste Sofá?"
12
- end
5
+ module Normatron
6
+ module Filters
7
+ describe TitleizeFilter do
8
+ it { should evaluate("04. until it sleeps" ).to("04. Until It Sleeps" ) }
9
+ it { should evaluate("04. UNTIL IT SLEEPS" ).to("04. Until It Sleeps" ) }
10
+ it { should evaluate("quem é o dono deste sofá?").to("Quem É O Dono Deste Sofá?") }
11
+ it { should evaluate("QUEM É O DONO DESTE SOFÁ?").to("Quem É O Dono Deste Sofá?") }
12
+ it { should evaluate(100 ).to(100 ) }
13
+ it { should evaluate(nil ).to(nil ) }
14
+ end
15
+ end
16
+ end
@@ -1,26 +1,40 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  require 'spec_helper'
4
- require 'normatron/filters/underscore_filter'
5
4
 
6
- describe Normatron::Filters::UnderscoreFilter do
7
- it_should_behave_like "string processor"
8
- it_should_behave_like "evaluable filter", ["ActiveRecord::Errors" ], "active_record/errors"
9
- it_should_behave_like "evaluable filter", ["DadosHistóricos::Período::Empresa"], "dados_históricos/período/empresa"
10
- it_should_behave_like "evaluable filter", ["ÍmparPar::NorteSul" ], "ímpar_par/norte_sul"
11
-
12
- context "should affect acronyms" do
13
- let(:inflections) { ActiveSupport::Inflector::Inflections.instance }
5
+ module Normatron
6
+ module Filters
7
+ describe UnderscoreFilter do
8
+ it { should evaluate("AintNo::RestFor::TheWicked" ).to("aint_no/rest_for/the_wicked") }
9
+ it { should evaluate("Assets::Stocks::Companies" ).to("assets/stocks/companies" ) }
10
+ it { should evaluate("Bank::Account" ).to("bank/account" ) }
11
+ it { should evaluate("ForSale" ).to("for_sale" ) }
12
+ it { should evaluate("HighVoltage::Musics" ).to("high_voltage/musics" ) }
13
+ it { should evaluate("NoteBook::BlackPiano" ).to("note_book/black_piano" ) }
14
+ it { should evaluate("Product" ).to("product" ) }
15
+ it { should evaluate("SouthAmerica::Brazil::Paraná").to("south_america/brazil/paraná") }
16
+ it { should evaluate("YouCannot::StealMy::Wallet" ).to("you_cannot/steal_my/wallet" ) }
17
+
18
+ context "with acronyms setted" do
19
+ let(:inflections) { ActiveSupport::Inflector::Inflections.instance }
14
20
 
15
- before(:all) do
16
- inflections.acronym 'docType'
17
- end
21
+ before(:all) do
22
+ inflections.acronym 'HTTP'
23
+ inflections.acronym 'SSL'
24
+ inflections.acronym 'Xml'
25
+ inflections.acronym 'docType'
26
+ end
18
27
 
19
- after(:all) do
20
- inflections.acronyms.delete("doctype")
21
- end
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
22
34
 
23
- it_should_behave_like "evaluable filter", ["docTypeStop::RunSSL::Xml::MixHTTP" ], "doctype_stop/run_ssl/xml/mix_http"
24
- it_should_behave_like "evaluable filter", ["DocTypeStop::RunSSL::Xml::MixHTTP" ], "doc_type_stop/run_ssl/xml/mix_http"
35
+ it { should evaluate("HTTPAddress::SSLLib::XmlFile::docType").to("http_address/ssl_lib/xml_file/doctype") }
36
+ it { should evaluate("docTypeStop::RunSSL::Xml::MixHTTP" ).to("doctype_stop/run_ssl/xml/mix_http" ) }
37
+ end
38
+ end
25
39
  end
26
- end
40
+ end
@@ -1,10 +1,14 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  require 'spec_helper'
4
- require 'normatron/filters/upcase_filter'
5
4
 
6
- describe Normatron::Filters::UpcaseFilter do
7
- it_should_behave_like "string processor"
8
- it_should_behave_like "evaluable filter", ["caçador"], "CAÇADOR"
9
- it_should_behave_like "evaluable filter", ["CAÇADOR"], "CAÇADOR"
10
- end
5
+ module Normatron
6
+ module Filters
7
+ describe UpcaseFilter do
8
+ it { should evaluate("caçador").to("CAÇADOR") }
9
+ it { should evaluate("CAÇADOR").to("CAÇADOR") }
10
+ it { should evaluate(100 ).to(100 ) }
11
+ it { should evaluate(nil ).to(nil ) }
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,73 @@
1
+ module FilterMatchers
2
+ def keep(*properties)
3
+ CharacterCleanerMatcher.new(*properties, :keep)
4
+ end
5
+
6
+ def remove(*properties)
7
+ CharacterCleanerMatcher.new(*properties, :remove)
8
+ end
9
+
10
+ class CharacterCleanerMatcher
11
+ def initialize(*properties, action)
12
+ @options = {}
13
+ @options[:properties] = properties
14
+ @options[:action] = action
15
+ self
16
+ end
17
+
18
+ def from(word)
19
+ @options[:input] = word
20
+ self
21
+ end
22
+
23
+ def matches?(subject)
24
+ @subject = subject
25
+ @expected = @options[:input].gsub(regexp, '')
26
+ @got = @subject.evaluate(@options[:input], @options[:properties])
27
+ @failure_reason = failure_reason
28
+ @failure_reason.nil?
29
+ end
30
+
31
+ def description
32
+ case @failure_reason
33
+ when :identity
34
+ "not be equal #{@expected.inspect}"
35
+ when :type
36
+ "be a kind of #{@options[:input].class}"
37
+ else
38
+ "#{@options[:action]} #{@options[:properties].inspect} from input value"
39
+ end
40
+ end
41
+
42
+ def failure_message
43
+ case @failure_reason
44
+ when :value
45
+ ["input: #{@options[:input].inspect}",
46
+ "expected: #{@expected.inspect}",
47
+ "got: #{@got.inspect}"] * "\n"
48
+ when :identity
49
+ "expected #{@options[:filter].name} evaluate and returns a different object_id from input object."
50
+ when :type
51
+ "expected #{@options[:filter].name} evaluate and returns the same object type of his input."
52
+ end
53
+ end
54
+
55
+ private
56
+
57
+ def failure_reason
58
+ if @got != @expected
59
+ :value
60
+ elsif !@got.kind_of?(@options[:input].class)
61
+ :type
62
+ elsif @got.equal?(@options[:input]) && @got.kind_of?(String)
63
+ :identity
64
+ end
65
+ end
66
+
67
+ def regexp
68
+ construct = @options[:properties].map { |p| "\\p{#{p}}" } * ""
69
+ construct = "[#{'^' if @options[:action] == :keep}#{construct}]"
70
+ Regexp.new(construct.force_encoding "UTF-8")
71
+ end
72
+ end
73
+ end
@@ -6,6 +6,7 @@ module FilterMatchers
6
6
  class EvaluateMatcher
7
7
  def initialize(input)
8
8
  @input = input
9
+ @constraints = Hash[:value, true, :type, true, :identity, true]
9
10
  self
10
11
  end
11
12
 
@@ -19,6 +20,11 @@ module FilterMatchers
19
20
  self
20
21
  end
21
22
 
23
+ def constraints(constraint)
24
+ @constraints.merge! constraint
25
+ self
26
+ end
27
+
22
28
  def matches?(filter_module)
23
29
  @filter = filter_module
24
30
  @got = get_evaluation
@@ -63,11 +69,11 @@ module FilterMatchers
63
69
  end
64
70
 
65
71
  def get_failure_reason
66
- if @got != @expected
72
+ if @constraints[:value] && (@got != @expected)
67
73
  :value
68
- elsif !@got.kind_of?(@input.class)
74
+ elsif @constraints[:type] && !@got.kind_of?(@input.class)
69
75
  :type
70
- elsif @got.equal?(@input) && @got.kind_of?(String)
76
+ elsif @constraints[:identity] && @got.equal?(@input) && @got.kind_of?(String)
71
77
  :identity
72
78
  end
73
79
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: normatron
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-30 00:00:00.000000000 Z
12
+ date: 2012-11-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
@@ -133,6 +133,7 @@ files:
133
133
  - .yardopts
134
134
  - spec/spec_helper.rb
135
135
  - spec/support/user_model.rb
136
+ - spec/support/matchers/character_cleaner_matcher.rb
136
137
  - spec/support/matchers/evaluate_matcher.rb
137
138
  - spec/support/my_filters.rb
138
139
  - spec/normatron_spec.rb
@@ -182,6 +183,7 @@ summary: Normalize attributes for ActiveRecord objects.
182
183
  test_files:
183
184
  - spec/spec_helper.rb
184
185
  - spec/support/user_model.rb
186
+ - spec/support/matchers/character_cleaner_matcher.rb
185
187
  - spec/support/matchers/evaluate_matcher.rb
186
188
  - spec/support/my_filters.rb
187
189
  - spec/normatron_spec.rb