From 1aa517a0b4a8505882f69e966b72f8a3cc4339ce Mon Sep 17 00:00:00 2001 From: Thiago Coutinho Date: Mon, 8 Jul 2019 14:32:38 -0300 Subject: [PATCH 1/3] README improvements --- README.md | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 0c1ce0b..c1b7e43 100644 --- a/README.md +++ b/README.md @@ -10,26 +10,22 @@ 5. REFERENCES -0. INTRODUCTION -=============== +## 0. INTRODUCTION sieve-parser is a pure-ruby implementation for parsing and manipulate the sieve scripts. -1. REQUIREMENTS -=============== +## 1. REQUIREMENTS Ruby/SieveParser requires Ruby version 1.9.1 or newer. -2. INSTALLATION -=============== +## 2. INSTALLATION gem install sieve-parser -3. LICENSE -========== +## 3. LICENSE Copyright (c) 2012 Thiago Coutinho @@ -47,28 +43,27 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -4. AUTHOR -========= +## 4. AUTHOR Ruby/SieveParser was developed by Thiago Coutinho in Locaweb (http://www.locaweb.com.br). -5. REFERENCES -============= +## 5. REFERENCES + +- http://www.faqs.org/rfcs/rfc3028.html +- http://www.faqs.org/rfcs/rfc5804.html +- http://www.faqs.org/rfcs/rfc5230.html +- http://www.faqs.org/rfcs/rfc5229.html -[1] http://www.faqs.org/rfcs/rfc3028.html -[2] http://www.faqs.org/rfcs/rfc5804.html -[3] http://www.faqs.org/rfcs/rfc5230.html -[4] http://www.faqs.org/rfcs/rfc5229.html +## 6. LAST CHANGES -6. LAST CHANGES -=============== -[0.0.6] +*0.0.6* - require 'split-where' - Sieve::Conditions => Parse new types and spliter more faster without regex - Examples: +``` # header :contains "Subject" "lala" # not header :contains "Subject" "popo" # not exists "Subject" @@ -79,3 +74,4 @@ Ruby/SieveParser was developed by Thiago Coutinho in Locaweb # header :count "eq" :comparator "i;ascii-numeric" "Subject" "7" # header :value "gt" :comparator "i;ascii-numeric" "Subject" "9" # header :value "eq" :comparator "i;ascii-numeric" "Subject" "11" +``` From f952c66d103cef6d348a1329a48144636eed5fd8 Mon Sep 17 00:00:00 2001 From: Thiago Coutinho Date: Mon, 8 Jul 2019 14:36:37 -0300 Subject: [PATCH 2/3] wip - --- .yardoc/checksums | 6 -- .yardoc/object_types | Bin 2617 -> 0 bytes .yardoc/objects/root.dat | Bin 46753 -> 0 bytes .yardoc/proxy_types | Bin 4 -> 0 bytes Gemfile | 13 +-- Gemfile.lock | 192 +++++++++++++++++++++++---------------- README.md | 4 +- sieve-parser.gemspec | 37 +++++--- 8 files changed, 142 insertions(+), 110 deletions(-) delete mode 100644 .yardoc/checksums delete mode 100644 .yardoc/object_types delete mode 100644 .yardoc/objects/root.dat delete mode 100644 .yardoc/proxy_types diff --git a/.yardoc/checksums b/.yardoc/checksums deleted file mode 100644 index 4dc1313..0000000 --- a/.yardoc/checksums +++ /dev/null @@ -1,6 +0,0 @@ -lib/sieve-parser.rb 6761d3f27b3cbe8113f6b2be71e527feb28cc421 -lib/sieve-parser/filter.rb 8c9736921f0d5a902b5197530e6bbddc2b308c21 -lib/sieve-parser/action.rb 92b5da8d5b7a352c0ad10db1e993dd6cf35130a5 -lib/sieve-parser/vacation.rb 12648646e7ca23a03d1ce60966d27ab5f9855694 -lib/sieve-parser/condition.rb e47115cdfd02831ad262d292b2d0269d849e4e3a -lib/sieve-parser/filterset.rb c35a7cb459645f2e6d07f19fa794ada0e185cd89 diff --git a/.yardoc/object_types b/.yardoc/object_types deleted file mode 100644 index 59b1d3d1823048706dfcd7846909e1965e531b97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2617 zcmaJ@ON-P%5cVLWyCR4vz8{;MR1n-_77M#q;W-||JWxL78~dBxgxbw7RNgmFJv&dlm#Ts;>}QJUok!}5icLbgDEJ6WM(--KF< zt|=hmwH1*zTUM3DcP3d4IF*8pUUJnh>;Aa97RBmE8a=_iKtSBEngjEx4}1p1p{V^P zOzD9z0^*aI35n{t+8}4*KGBXwA zJq&s5dp`jjHxS9iW^Zp|0wCoX>Pg9%`~{PnMkKWbg)8~K6Up}-5!ZK;7~qef2CFLD z8A>}kL-Hapk(WB73n4Dp-Wehb!p>+PBi4578=m7>(}=m~99a*T;>{cxQOAlgx3Qe8 zupp$pK?g_7Rn`qaZH;H1Qfic!3ZK(4j1_OO9U6NZbDA+=Bar9k)DY5qOb_HI`7~ z4zys7q+fk*cE%RmgXtS)hR3fxIi6H|d@l85?Nrtde}LhYr_MtW*m;Bsn-JFN`jY?d zN{KGS2V)!`Od?kaI{7BzYWR`hmGaK3a#c1(1~J)sKe^c72SWS5O{NKaXUBfhJoMgDs!8hDsf37+CK+|Br$u#&TRf3I` Hhu!@LWwK3c diff --git a/.yardoc/objects/root.dat b/.yardoc/objects/root.dat deleted file mode 100644 index e5f8f410a7d1d038790d5274b60b55a1aac9c02c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46753 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 diff --git a/.yardoc/proxy_types b/.yardoc/proxy_types deleted file mode 100644 index beefda1ae32c2cef8eb53a4f3c8407a532a22b51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4 LcmZSKsAd2F0U`j1 diff --git a/Gemfile b/Gemfile index 3246222..d65e2a6 100644 --- a/Gemfile +++ b/Gemfile @@ -1,14 +1,3 @@ source 'http://rubygems.org' -gem "split-where" , ">= 0.0.3" - -#gem 'ruby-managesieve' - -group :test, :development do - gem 'pry' - gem 'guard-rspec' - gem 'yard' - gem 'rspec' - gem "rspec-rails", "~> 2.4" - gem 'rb-fsevent', '~> 0.9.1' -end \ No newline at end of file +gemspec diff --git a/Gemfile.lock b/Gemfile.lock index 0caf4c1..5fbb1fb 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,92 +1,132 @@ +PATH + remote: . + specs: + sieve-parser (0.0.6) + split-where + GEM remote: http://rubygems.org/ specs: - actionpack (3.2.8) - activemodel (= 3.2.8) - activesupport (= 3.2.8) - builder (~> 3.0.0) - erubis (~> 2.7.0) - journey (~> 1.0.4) - rack (~> 1.4.0) - rack-cache (~> 1.2) - rack-test (~> 0.6.1) - sprockets (~> 2.1.3) - activemodel (3.2.8) - activesupport (= 3.2.8) - builder (~> 3.0.0) - activesupport (3.2.8) - i18n (~> 0.6) - multi_json (~> 1.0) - builder (3.0.3) - coderay (1.0.7) - diff-lcs (1.1.3) - erubis (2.7.0) - guard (1.4.0) - listen (>= 0.4.2) - thor (>= 0.14.6) - guard-rspec (2.0.0) - guard (>= 1.1) - rspec (~> 2.11) - hike (1.2.1) - i18n (0.6.1) - journey (1.0.4) - json (1.7.5) - listen (0.5.2) - method_source (0.8) - multi_json (1.3.6) - pry (0.9.10) - coderay (~> 1.0.5) - method_source (~> 0.8) - slop (~> 3.3.1) - rack (1.4.1) - rack-cache (1.2) - rack (>= 0.4) - rack-ssl (1.3.2) - rack - rack-test (0.6.1) - rack (>= 1.0) - railties (3.2.8) - actionpack (= 3.2.8) - activesupport (= 3.2.8) - rack-ssl (~> 1.3.2) + actionpack (5.2.3) + actionview (= 5.2.3) + activesupport (= 5.2.3) + rack (~> 2.0) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.0.2) + actionview (5.2.3) + activesupport (= 5.2.3) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.0.3) + activesupport (5.2.3) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 0.7, < 2) + minitest (~> 5.1) + tzinfo (~> 1.1) + builder (3.2.3) + coderay (1.1.2) + concurrent-ruby (1.0.5) + crass (1.0.4) + diff-lcs (1.3) + erubi (1.8.0) + ffi (1.11.1) + formatador (0.2.5) + guard (2.15.0) + formatador (>= 0.2.4) + listen (>= 2.7, < 4.0) + lumberjack (>= 1.0.12, < 2.0) + nenv (~> 0.1) + notiffany (~> 0.0) + pry (>= 0.9.12) + shellany (~> 0.0) + thor (>= 0.18.1) + guard-compat (1.2.1) + guard-rspec (4.7.3) + guard (~> 2.1) + guard-compat (~> 1.1) + rspec (>= 2.99.0, < 4.0) + i18n (1.6.0) + concurrent-ruby (~> 1.0) + listen (3.1.5) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + ruby_dep (~> 1.2) + loofah (2.2.3) + crass (~> 1.0.2) + nokogiri (>= 1.5.9) + lumberjack (1.0.13) + method_source (0.9.2) + mini_portile2 (2.4.0) + minitest (5.11.3) + nenv (0.3.0) + nokogiri (1.10.3) + mini_portile2 (~> 2.4.0) + notiffany (0.1.1) + nenv (~> 0.1) + shellany (~> 0.0) + pry (0.12.2) + coderay (~> 1.1.0) + method_source (~> 0.9.0) + rack (2.0.7) + rack-test (1.1.0) + rack (>= 1.0, < 3) + rails-dom-testing (2.0.3) + activesupport (>= 4.2.0) + nokogiri (>= 1.6) + rails-html-sanitizer (1.0.4) + loofah (~> 2.2, >= 2.2.2) + railties (5.2.3) + actionpack (= 5.2.3) + activesupport (= 5.2.3) + method_source rake (>= 0.8.7) - rdoc (~> 3.4) - thor (>= 0.14.6, < 2.0) - rake (0.9.2.2) - rb-fsevent (0.9.1) - rdoc (3.12) - json (~> 1.4) - rspec (2.11.0) - rspec-core (~> 2.11.0) - rspec-expectations (~> 2.11.0) - rspec-mocks (~> 2.11.0) - rspec-core (2.11.1) - rspec-expectations (2.11.3) - diff-lcs (~> 1.1.3) - rspec-mocks (2.11.3) - rspec-rails (2.11.0) + thor (>= 0.19.0, < 2.0) + rake (12.3.2) + rb-fsevent (0.10.3) + rb-inotify (0.10.0) + ffi (~> 1.0) + rspec (3.8.0) + rspec-core (~> 3.8.0) + rspec-expectations (~> 3.8.0) + rspec-mocks (~> 3.8.0) + rspec-core (3.8.2) + rspec-support (~> 3.8.0) + rspec-expectations (3.8.4) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.8.0) + rspec-mocks (3.8.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.8.0) + rspec-rails (3.8.2) actionpack (>= 3.0) activesupport (>= 3.0) railties (>= 3.0) - rspec (~> 2.11.0) - slop (3.3.3) + rspec-core (~> 3.8.0) + rspec-expectations (~> 3.8.0) + rspec-mocks (~> 3.8.0) + rspec-support (~> 3.8.0) + rspec-support (3.8.2) + ruby_dep (1.5.0) + shellany (0.0.1) split-where (0.0.3) - sprockets (2.1.3) - hike (~> 1.2) - rack (~> 1.0) - tilt (~> 1.1, != 1.3.0) - thor (0.16.0) - tilt (1.3.3) - yard (0.8.2.1) + thor (0.20.3) + thread_safe (0.3.6) + tzinfo (1.2.5) + thread_safe (~> 0.1) PLATFORMS ruby DEPENDENCIES + concurrent-ruby (~> 1.0.2) guard-rspec pry - rb-fsevent (~> 0.9.1) + rb-fsevent rspec - rspec-rails (~> 2.4) - split-where (>= 0.0.3) - yard + rspec-rails + sieve-parser! + +BUNDLED WITH + 1.17.3 diff --git a/README.md b/README.md index c1b7e43..2c5d1be 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,9 @@ Ruby/SieveParser was developed by Thiago Coutinho in Locaweb - http://www.faqs.org/rfcs/rfc5229.html ## 6. LAST CHANGES - +*1.0.0* + - Upgrading gems + - Adding travis *0.0.6* - require 'split-where' diff --git a/sieve-parser.gemspec b/sieve-parser.gemspec index e20eec6..1f75e36 100644 --- a/sieve-parser.gemspec +++ b/sieve-parser.gemspec @@ -1,16 +1,15 @@ require 'rubygems' -spec = Gem::Specification.new do |s| - s.name = 'sieve-parser' - s.version = '0.0.6' - s.summary = 'A Ruby library for sieve parser' - s.description = <<-EOF - sieve-parser is a pure-ruby implementation for parsing and - manipulate the sieve scripts. +spec = Gem::Specification.new do |spec| + spec.name = 'sieve-parser' + spec.version = '1.0.0' + spec.summary = 'A Ruby library for sieve parser' + spec.description = <<-EOF + sieve-parser is a pure-ruby implementation for parsing and + manipulate the sieve script. EOF - s.add_dependency 'split-where' - s.requirements << 'A sieve script to parse and gem ruby-managesieve to connect on server.' - s.files = [ + spec.requirements << 'A sieve script to parse and gem ruby-managesieve to connect on server.' + spec.files = [ 'lib/sieve-parser', 'lib/sieve-parser/action.rb', 'lib/sieve-parser/condition.rb', @@ -21,11 +20,19 @@ spec = Gem::Specification.new do |s| 'sieve-parser.gemspec' ] - s.has_rdoc = true - s.author = 'Thiago Coutinho (www.locaweb.com.br)' - s.email = 'thiago@osfeio.com' - s.rubyforge_project = 'sieve-parser' - s.homepage = "http://github.com/selialkile/sieve-parser" + spec.author = 'Thiago Coutinho (www.locaweb.com.br)' + spec.email = 'thiago@osfeio.com' + spec.rubyforge_project = 'sieve-parser' + spec.homepage = "http://github.com/selialkile/sieve-parser" + + spec.add_runtime_dependency 'split-where' + + spec.add_development_dependency 'concurrent-ruby' + spec.add_development_dependency 'guard-rspec' + spec.add_development_dependency 'pry' + spec.add_development_dependency 'rb-fsevent' + spec.add_development_dependency 'rspec-rails' + spec.add_development_dependency 'rspec' end if __FILE__ == $0 From fd65c6ffcb1a33b3de1dbfd44d1ff9d5ab284cbb Mon Sep 17 00:00:00 2001 From: Thiago Coutinho Date: Mon, 8 Jul 2019 15:15:41 -0300 Subject: [PATCH 3/3] Adding pendings tests --- Gemfile.lock | 4 +-- lib/sieve-parser/filterset.rb | 14 +++++------ spec/sieve-parser/filter_spec.rb | 6 ++--- spec/sieve-parser/filterset_spec.rb | 39 ++++++++++++++++------------- 4 files changed, 33 insertions(+), 30 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 5fbb1fb..b47706c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - sieve-parser (0.0.6) + sieve-parser (1.0.0) split-where GEM @@ -120,7 +120,7 @@ PLATFORMS ruby DEPENDENCIES - concurrent-ruby (~> 1.0.2) + concurrent-ruby guard-rspec pry rb-fsevent diff --git a/lib/sieve-parser/filterset.rb b/lib/sieve-parser/filterset.rb index b00c9b6..a447631 100644 --- a/lib/sieve-parser/filterset.rb +++ b/lib/sieve-parser/filterset.rb @@ -20,7 +20,7 @@ module Sieve class FilterSet attr_accessor :text_sieve, :auto_require - + #Create FilterSet #@param [String] text of sieve #@return [FilterSet] @@ -81,7 +81,7 @@ def requires #@param [string] name of require def add_require(req) #TODO: Implement config of requires allowed - raise Exception.new("Is not a require valid!") unless req =~ /\S+/ + raise Exception.new("Is not a require valid!") unless req =~ /\S+/ @requires << req @requires.uniq! end @@ -96,16 +96,16 @@ def to_s end # Return a array of filters by select with all given params - #@param [{:name=>String, :disabled => Boolean, :text => String}] + #@param [{:name=>String, :disabled => Boolean, :text => String}] #@note The :text only have text to search #@return [Array] def where entries =[] - @filters.each do |filter| + @filters.each do |filter| cond = false cond = filter.name == args[:name] unless args[:name].nil? cond = filter.disabled? == args[:disabled] unless args[:disabled].nil? - cond = filter.to_s =~ /#{args[:text]}/ unless args[:text].nil? + cond = filter.to_s =~ /#{args[:text]}/ unless args[:text].nil? entries << filter if cond end entries @@ -115,11 +115,11 @@ def where # Make de parse and put results in variables def parse #return a array with string of elements: "xxxx", "yyyyyy" - @text_sieve.scan(/^require\s\["(\S+)"\];$/).each do |r| + @text_sieve.scan(/^require\s\["(\S+)"\];$/).each do |r| @requires.concat(r[0].split('","')) end - @text_sieve.scan(/(^#.*\nif[\s\w\:\"\.\;\(\)\,\-]*\n\{[a-zA-Z0-9\s\@\<>=\:\[\]\_\"\.\;\(\)\&\,\-\/]*\n\}$)/).each do |f| + @text_sieve.scan(/(^#.*\nif[\s\w\:\"\.\;\(\)\,\-@]*\n\{[a-zA-Z0-9\s\@\<>=\:\[\]\_\"\.\;\(\)\&\,\-\/]*\n\}$)/).each do |f| @filters << Sieve::Filter.new(text:f[0]) end diff --git a/spec/sieve-parser/filter_spec.rb b/spec/sieve-parser/filter_spec.rb index 5e858db..0963069 100644 --- a/spec/sieve-parser/filter_spec.rb +++ b/spec/sieve-parser/filter_spec.rb @@ -58,7 +58,7 @@ module Sieve context ".new" do context "given a success with type anyof" do - subject{Sieve::Filter.new(text:filter_text_anyof)} + subject {Sieve::Filter.new(text:filter_text_anyof)} it 'should have a name' do subject.name.should == "rule:[nome_all]" @@ -105,7 +105,7 @@ module Sieve end it "should is enabled" do - subject.disabled?.should be_false + expect(subject.disabled?).to be_falsey end end @@ -126,7 +126,7 @@ module Sieve end it "should is disabled" do - subject.disabled?.should be_true + expect(subject.disabled?).to be_truthy end end diff --git a/spec/sieve-parser/filterset_spec.rb b/spec/sieve-parser/filterset_spec.rb index a2925ec..a639f5e 100644 --- a/spec/sieve-parser/filterset_spec.rb +++ b/spec/sieve-parser/filterset_spec.rb @@ -92,23 +92,23 @@ module Sieve } let(:filterset_many_filters_else) { %Q{require ["fileinto"]; - +# Many filters if header :is "Sender" "owner-ietf-mta-filters@imc.org" -\t{ -\tfileinto "filter"; # move to "filter" mailbox -\t} +{ +\tfileinto "filter"; +} elsif address :DOMAIN :is ["From", "To"] "example.com" -\t{ -\tkeep; # keep in "In" mailbox -\t} +{ +\tkeep; +} elsif anyof (NOT address :all :contains ["To", "Cc", "Bcc"] "me@example.com", header :matches "subject" ["*make*money*fast*", "*university*dipl*mas*"]) -\t{ -\tfileinto "spam"; # move to "spam" mailbox -\t} +{ +\tfileinto "spam"; +} else -\t{ +{ \tfileinto "personal"; -\t} +} } } context ".new" do @@ -162,22 +162,25 @@ module Sieve } context "given a success with get text of filterset" do subject{Sieve::FilterSet.new(filterset_text_to_s)} + it "should return a text" do - subject.to_s.should == filterset_text_to_s + expect(subject.to_s).to eq filterset_text_to_s end end context "given a success with get text of filterset test" do subject{Sieve::FilterSet.new(filterset_text_test)} + it "should return a text" do - subject.to_s.should == filterset_text_test + expect(subject.to_s).to eq filterset_text_test end end context "given a success to get text of filterset with many filters conditions" do - subject{Sieve::FilterSet.new(filterset_many_filters_else)} - it "should return a text" do - subject.to_s.should == filterset_many_filters_else + subject {Sieve::FilterSet.new(filterset_many_filters_else)} + + xit "should return a text" do + expect(subject.to_s).to eq filterset_many_filters_else end end end @@ -272,7 +275,7 @@ module Sieve filter2 = Sieve::Filter.new(:name => "myname2") subject.add_filter(filter) subject.add_filter(filter2) - subject.remove_filter_by_name("myname2").should be_true + expect(subject.remove_filter_by_name("myname2")).to be_truthy end end