drain 0.3.0 → 0.7.0

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.
@@ -49,17 +49,17 @@ describe DR::Meta do
49
49
  # end
50
50
 
51
51
  it "Can show all ancestors" do
52
- DR::Meta.all_ancestors("foo").include?(String.singleton_class).must_equal(true)
52
+ _(DR::Meta.all_ancestors("foo").include?(String.singleton_class)).must_equal(true)
53
53
  end
54
54
 
55
55
  it "Can generate bound methods" do
56
56
  m=DR::Meta.get_bound_method("foo", :bar) do |x|
57
57
  self+x
58
58
  end
59
- m.call("bar").must_equal("foobar")
59
+ _(m.call("bar")).must_equal("foobar")
60
60
  end
61
61
 
62
62
  it "Can apply unbound methods" do
63
- DR::Meta.apply(method: String.instance_method(:length), to: "foo").must_equal(3)
63
+ _(DR::Meta.apply(method: String.instance_method(:length), to: "foo")).must_equal(3)
64
64
  end
65
65
  end
@@ -10,27 +10,27 @@ describe DR::SimpleKeywordsParser do
10
10
  end
11
11
 
12
12
  it "Can parse keywords" do
13
- @parser.parse("FOO(ploum, plam)").must_equal 'FOO: ["ploum", "plam"]'
13
+ _(@parser.parse("FOO(ploum, plam)")).must_equal 'FOO: ["ploum", "plam"]'
14
14
  end
15
15
 
16
16
  it "Can preserver spaces" do
17
- @parser.parse("FOO( ploum , plam )", space: true).must_equal "FOO: [\" ploum \", \" plam \"]"
17
+ _(@parser.parse("FOO( ploum , plam )", space: true)).must_equal "FOO: [\" ploum \", \" plam \"]"
18
18
  end
19
19
 
20
20
  it "Can change delimiters" do
21
- @parser.parse("FOO[ ploum , plam ]", delims: '[]').must_equal "FOO: [\"ploum\", \"plam\"]"
21
+ _(@parser.parse("FOO[ ploum , plam ]", delims: '[]')).must_equal "FOO: [\"ploum\", \"plam\"]"
22
22
  end
23
23
 
24
24
  it "Can have a one caracter delimiter" do
25
- @parser.parse("FOO! ploum , plam !", delims: '!').must_equal "FOO: [\"ploum\", \"plam\"]"
25
+ _(@parser.parse("FOO! ploum , plam !", delims: '!')).must_equal "FOO: [\"ploum\", \"plam\"]"
26
26
  end
27
27
 
28
28
  it "Can parse keywords inside keywords" do
29
- @parser.parse("FOO(ploum, BAR( foo, bar ))").must_equal "FOO: [\"ploum\", \"BAR: [\\\"foo\\\"\", \"\\\"bar\\\"]\"]"
29
+ _(@parser.parse("FOO(ploum, BAR( foo, bar ))")).must_equal "FOO: [\"ploum\", \"BAR: [\\\"foo\\\"\", \"\\\"bar\\\"]\"]"
30
30
  end
31
31
 
32
32
  it "Can add a keyword" do
33
33
  @parser.keyword("PLOUM") { |a,b| a.to_i+b.to_i}
34
- @parser.parse("Hello PLOUM(2,3)").must_equal 'Hello 5'
34
+ _(@parser.parse("Hello PLOUM(2,3)")).must_equal 'Hello 5'
35
35
  end
36
36
  end
@@ -4,34 +4,34 @@ require 'dr/parse/simple_parser'
4
4
  describe DR::SimpleParser do
5
5
  describe "parse_namevalue" do
6
6
  it "parses a simple name value" do
7
- DR::SimpleParser.parse_namevalue("foo:bar").must_equal([:foo,"bar"])
7
+ _(DR::SimpleParser.parse_namevalue("foo:bar")).must_equal([:foo,"bar"])
8
8
  end
9
9
  it "can let the name be a string" do
10
- DR::SimpleParser.parse_namevalue("foo:bar",symbolize:false).must_equal(["foo","bar"])
10
+ _(DR::SimpleParser.parse_namevalue("foo:bar",symbolize:false)).must_equal(["foo","bar"])
11
11
  end
12
12
  it "only splits on the first ':'" do
13
- DR::SimpleParser.parse_namevalue("foo:bar:baz").must_equal([:foo,"bar:baz"])
13
+ _(DR::SimpleParser.parse_namevalue("foo:bar:baz")).must_equal([:foo,"bar:baz"])
14
14
  end
15
15
  it "can change the separation" do
16
- DR::SimpleParser.parse_namevalue("foo:bar!baz", sep: "!",symbolize:false).must_equal(["foo:bar","baz"])
16
+ _(DR::SimpleParser.parse_namevalue("foo:bar!baz", sep: "!",symbolize:false)).must_equal(["foo:bar","baz"])
17
17
  end
18
18
  it "can set a default" do
19
- DR::SimpleParser.parse_namevalue("foo", default: 0).must_equal([:foo,0])
19
+ _(DR::SimpleParser.parse_namevalue("foo", default: 0)).must_equal([:foo,0])
20
20
  end
21
21
  it "If the default is true then support 'no-foo'" do
22
- DR::SimpleParser.parse_namevalue("no-foo", default: true).must_equal([:foo,false])
22
+ _(DR::SimpleParser.parse_namevalue("no-foo", default: true)).must_equal([:foo,false])
23
23
  end
24
24
  it "can set the default to true" do
25
- DR::SimpleParser.parse_namevalue("foo", default: true, symbolize:false).must_equal(["foo",true])
25
+ _(DR::SimpleParser.parse_namevalue("foo", default: true, symbolize:false)).must_equal(["foo",true])
26
26
  end
27
27
  end
28
28
 
29
29
  describe "parse_strings" do
30
30
  it "can parse several name values" do
31
- DR::SimpleParser.parse_string("foo:bar,ploum:plim")[:values].must_equal({foo: "bar", ploum: "plim"})
31
+ _(DR::SimpleParser.parse_string("foo:bar,ploum:plim")[:values]).must_equal({foo: "bar", ploum: "plim"})
32
32
  end
33
33
  it "can handle options" do
34
- DR::SimpleParser.parse_string("name1:value1!option1=ploum!option2=plam!option3,name2:value2!!globalopt1=foo,globalopt2=bar").must_equal({
34
+ _(DR::SimpleParser.parse_string("name1:value1!option1=ploum!option2=plam!option3,name2:value2!!globalopt1=foo,globalopt2=bar")).must_equal({
35
35
  values: {name1: "value1", name2: "value2"},
36
36
  local_opts: {name1: {option1:"ploum",option2:"plam",option3:true}, name2: {}},
37
37
  global_opts: {globalopt1: "foo", globalopt2: "bar"},
@@ -0,0 +1,43 @@
1
+ require 'helper'
2
+ require 'dr/parse/time_parse'
3
+
4
+ describe DR::TimeParse do
5
+ before do
6
+ @tz=ENV['TZ']
7
+ ENV['TZ']='GMT'
8
+ class << Time
9
+ alias _original_now now
10
+ def now
11
+ Time.new(2000)
12
+ end
13
+ end
14
+ end
15
+ after do
16
+ ENV['TZ']=@tz
17
+ class << Time
18
+ alias now _original_now
19
+ end
20
+ end
21
+
22
+ it "Can parse a range" do
23
+ _(DR::TimeParse.parse("+100..tomorrow")).must_equal(
24
+ Time.parse("2000-01-01 00:01:40")..Time.parse("2000-01-02 12:00:00")
25
+ )
26
+ _(DR::TimeParse.parse("now..in seven days")).must_equal(
27
+ Time.parse("2000-01-01 00:00:00")..Time.parse("2000-01-08 00:00:00")
28
+ )
29
+ end
30
+
31
+ it "Can parse a date" do
32
+ _(DR::TimeParse.parse("today")).must_equal(Time.parse("2000-01-01-12:00:00"))
33
+ end
34
+
35
+ it "Can put a date in a range" do
36
+ _(DR::TimeParse.parse("today", range: true)).must_equal(
37
+ Time.parse("2000-01-01-00:00:00")..Time.parse("2000-01-02-00:00:00")
38
+ )
39
+ end
40
+ end
41
+
42
+ #with active_support: DR::TimeParse.parse("-3 years 2 minutes")
43
+ #=> 2011-08-22 20:01:34 +0200
@@ -0,0 +1,35 @@
1
+ require 'helper'
2
+ require 'dr/base/uri'
3
+
4
+ describe DR::URI::Wrapper do
5
+ before do
6
+ @uri=DR::URI::Wrapper.new(DR::URI::Escape.escape("http://ploum:secret@plam:443/foo bar"))
7
+ end
8
+ it "Wraps an uri element" do
9
+ _(@uri.scheme).must_equal "http"
10
+ end
11
+ it "Auto escapes attribute" do
12
+ _(@uri.path).must_equal "/foo bar"
13
+ end
14
+ it "Auto escape setting elements" do
15
+ @uri.user="ploum plam"
16
+ _(@uri.user).must_equal "ploum plam"
17
+ end
18
+ it "Can convert to a hash" do
19
+ _(@uri.to_h[:user]).must_equal("ploum")
20
+ end
21
+ it "Can convert to json" do
22
+ require 'json'
23
+ _(@uri.to_json).must_equal("{\"uri\":\"http://ploum:secret@plam:443/foo%20bar\",\"scheme\":\"http\",\"userinfo\":\"ploum:secret\",\"host\":\"plam\",\"port\":443,\"path\":\"/foo bar\",\"user\":\"ploum\",\"password\":\"secret\"}")
24
+ end
25
+ it "Can remove password" do
26
+ _(@uri.to_public).must_equal("http://ploum@plam:443/foo%20bar")
27
+ end
28
+ it "Can be merged" do
29
+ _(@uri.soft_merge("foo://plim@").to_s).must_equal("foo://plim:secret@plam:443/foo%20bar")
30
+ end
31
+ it "Can be reverse merged" do
32
+ _(DR::URI::Wrapper.parse("//user@server").reverse_merge(@uri).to_s).must_equal("http://user:secret@server:443/foo%20bar")
33
+ end
34
+ end
35
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: drain
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Damien Robert
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-07 00:00:00.000000000 Z
11
+ date: 2020-10-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -28,47 +28,47 @@ dependencies:
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rubygems-tasks
42
+ name: chronic
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.2'
47
+ version: '0.10'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0.2'
54
+ version: '0.10'
55
55
  - !ruby/object:Gem::Dependency
56
- name: yard
56
+ name: chronic_duration
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0.8'
61
+ version: '0.10'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0.8'
68
+ version: '0.10'
69
69
  description: 'Drain is a small set of libraries that I use in my other gems.
70
70
 
71
- '
71
+ '
72
72
  email: Damien.Olivier.Robert+gems@gmail.com
73
73
  executables: []
74
74
  extensions: []
@@ -77,6 +77,8 @@ extra_rdoc_files:
77
77
  - LICENSE.txt
78
78
  - README.md
79
79
  files:
80
+ - ".bundle/config"
81
+ - ".github/workflows/ruby.yml"
80
82
  - ".gitignore"
81
83
  - ".travis.yml"
82
84
  - ".yardopts"
@@ -91,6 +93,7 @@ files:
91
93
  - lib/dr/base.rb
92
94
  - lib/dr/base/bool.rb
93
95
  - lib/dr/base/converter.rb
96
+ - lib/dr/base/delegate.rb
94
97
  - lib/dr/base/encoding.rb
95
98
  - lib/dr/base/eruby.rb
96
99
  - lib/dr/base/functional.rb
@@ -120,12 +123,14 @@ files:
120
123
  - test/test_meta.rb
121
124
  - test/test_simple_keywords.rb
122
125
  - test/test_simple_parser.rb
126
+ - test/test_time_parse.rb
127
+ - test/test_uri.rb
123
128
  homepage: https://github.com/DamienRobert/drain#readme
124
129
  licenses:
125
130
  - MIT
126
131
  metadata:
127
132
  yard.run: yri
128
- post_install_message:
133
+ post_install_message:
129
134
  rdoc_options: []
130
135
  require_paths:
131
136
  - lib
@@ -140,9 +145,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
145
  - !ruby/object:Gem::Version
141
146
  version: '0'
142
147
  requirements: []
143
- rubyforge_project:
144
- rubygems_version: 2.7.7
145
- signing_key:
148
+ rubygems_version: 3.1.4
149
+ signing_key:
146
150
  specification_version: 4
147
151
  summary: Use a drain for a dryer ruby!
148
152
  test_files: []