Checked 0.1.4 → 1.0.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.
Files changed (49) hide show
  1. data/Checked.gemspec +2 -3
  2. data/lib/Checked.rb +21 -9
  3. data/lib/Checked/Ask/Arrays.rb +31 -0
  4. data/lib/Checked/Ask/Ask.rb +21 -0
  5. data/lib/Checked/Ask/Strings.rb +27 -0
  6. data/lib/Checked/Ask/Vars.rb +21 -0
  7. data/lib/Checked/Base/Arch.rb +20 -0
  8. data/lib/Checked/Base/Base.rb +110 -0
  9. data/lib/Checked/Base/DSL.rb +73 -0
  10. data/lib/Checked/Base/DSL_Obj.rb +35 -0
  11. data/lib/Checked/{Clean.rb → Clean/Clean.rb} +1 -4
  12. data/lib/Checked/Clean/Strings.rb +94 -0
  13. data/lib/Checked/Demand/Arrays.rb +78 -0
  14. data/lib/Checked/Demand/Bools.rb +28 -0
  15. data/lib/Checked/{Demand.rb → Demand/Demand.rb} +12 -11
  16. data/lib/Checked/Demand/File_Paths.rb +63 -0
  17. data/lib/Checked/Demand/Hashs.rb +29 -0
  18. data/lib/Checked/Demand/Strings.rb +66 -0
  19. data/lib/Checked/Demand/Symbols.rb +21 -0
  20. data/lib/Checked/Demand/Vars.rb +65 -0
  21. data/lib/Checked/version.rb +1 -1
  22. data/spec/main.rb +5 -1
  23. data/spec/tests/Ask.rb +126 -8
  24. data/spec/tests/Clean.rb +66 -8
  25. data/spec/tests/DSL.rb +31 -0
  26. data/spec/tests/Demand.rb +220 -29
  27. metadata +38 -32
  28. data/lib/Checked/Args.rb +0 -55
  29. data/lib/Checked/Ask.rb +0 -69
  30. data/lib/Checked/Ask/DSL.rb +0 -31
  31. data/lib/Checked/Ask/Mods/Arrays.rb +0 -25
  32. data/lib/Checked/Ask/Mods/Strings.rb +0 -26
  33. data/lib/Checked/Ask/Mods/Vars.rb +0 -12
  34. data/lib/Checked/Base.rb +0 -119
  35. data/lib/Checked/Clean/DSL.rb +0 -16
  36. data/lib/Checked/Clean/Mods/Strings.rb +0 -104
  37. data/lib/Checked/Demand/DSL.rb +0 -29
  38. data/lib/Checked/Demand/Mods/Arrays.rb +0 -72
  39. data/lib/Checked/Demand/Mods/Bools.rb +0 -37
  40. data/lib/Checked/Demand/Mods/File_Addresses.rb +0 -59
  41. data/lib/Checked/Demand/Mods/Strings.rb +0 -51
  42. data/lib/Checked/Demand/Mods/Symbols.rb +0 -20
  43. data/lib/Checked/Demand/Mods/Vars.rb +0 -91
  44. data/spec/tests/Ask_Strings.rb +0 -57
  45. data/spec/tests/Checked.rb +0 -43
  46. data/spec/tests/Clean_Strings.rb +0 -76
  47. data/spec/tests/Demand_Arrays.rb +0 -31
  48. data/spec/tests/Demand_File_Addresses.rb +0 -61
  49. data/spec/tests/Demand_Vars.rb +0 -19
@@ -1,29 +0,0 @@
1
-
2
- module Checked
3
- class Demand
4
- module DSL
5
-
6
- def demand! target, *args
7
- if block_given?
8
- raise "No block allowed here."
9
- end
10
-
11
- Demand.new(target) { |d|
12
- d.<< args
13
- }.target
14
- end
15
-
16
- def named_demand! name, target, *args
17
- if block_given?
18
- raise "No block allowed here."
19
- end
20
-
21
- Demand.new(target) { |d|
22
- d.* name
23
- d.<< args
24
- }.target
25
- end
26
-
27
- end # === module Dsl
28
- end # === class Demand
29
- end # === module Checked
@@ -1,72 +0,0 @@
1
-
2
- module Checked
3
- class Demand
4
- module Mods
5
- module Arrays
6
-
7
- def self.before_apply d
8
- end
9
-
10
- def self.apply? d
11
- d.target.is_a?(Array)
12
- end
13
-
14
- def self.after_apply d
15
- end
16
-
17
- def no_nils!
18
- array!
19
- if target.include?(nil)
20
- fail!("...can't contain nils.")
21
- end
22
- end
23
-
24
- def no_empty_strings!
25
- array!
26
- target.each { |s|
27
-
28
- if s.respond_to?(:rewind)
29
- s.rewind
30
- end
31
-
32
- final = if s.respond_to?(:readlines)
33
- s.readlines
34
- else
35
- s
36
- end
37
-
38
- if final.is_a?(String) && final.strip.empty?
39
- fail!("...can't contain empty strings.")
40
- end
41
- }
42
- end
43
-
44
- def symbols!
45
- array!
46
- not_empty!
47
- if !target.all? { |v| v.is_a?(Symbol) }
48
- fail! "...contains a non-symbol."
49
- end
50
- end
51
-
52
- def include! matcher
53
- included = target.include?(matcher)
54
- return true if included
55
- fail!("...must contain: #{matcher.inspect}")
56
- end
57
-
58
- def exclude! matcher
59
- raise_e = val.include?(matcher)
60
- return true unless raise_e
61
- fail!("...can't contain #{matcher.inspect}")
62
- end
63
-
64
- def matches_only! matcher
65
- arr = target.reject { |val| val == matcher }
66
- fail!( "...invalid elements: #{arr.inspect}" ) if !arr.empty?
67
- end
68
-
69
- end # === module Arrays
70
- end # === module Mods
71
- end # === class Demand
72
- end # === module Checked
@@ -1,37 +0,0 @@
1
-
2
- module Checked
3
- class Demand
4
- module Mods
5
- module Bools
6
-
7
- def self.before_apply d
8
- end
9
-
10
- def self.apply? d
11
- target = d.target
12
- target.is_a?( FalseClass ) ||
13
- target.is_a?(TrueClass)
14
- end
15
-
16
- def self.after_apply d
17
- end
18
-
19
- def be! meth, *args
20
- answer = target.send meth, *args
21
- demand answer, :bool!
22
- return true if answer
23
- fail!("...failed #{meth} with #{args.inspect}")
24
- end
25
-
26
- def not_be! meth, *args
27
- bool!
28
- pass = target.send(meth, *args)
29
- demand pass, :bool!
30
- return true unless pass
31
- fail!("...#{meth} should not be true with #{args.inspect}")
32
- end
33
-
34
- end # === module Bools
35
- end # === module Mods
36
- end # === class Demand
37
- end # === module Checked
@@ -1,59 +0,0 @@
1
-
2
- module Checked
3
- class Demand
4
- module Mods
5
- module File_Addresses
6
-
7
- def self.apply? d
8
- d.target.is_a?(String)
9
- end
10
-
11
- def hostname!
12
- string!
13
- not_empty!
14
- matches_only! %r![\dA-Za-z_-]!
15
- end
16
-
17
- def not_dir!
18
- string!
19
- not_empty!
20
- if File.directory?(target)
21
- fail! "...can't be a directory."
22
- end
23
- end
24
-
25
- def not_file!
26
- string!
27
- not_empty!
28
- if File.file?(target)
29
- fail! "...can't be a file."
30
- end
31
- end
32
-
33
- def dir_address!
34
- file_address!
35
- end
36
-
37
- def file_address!
38
- self.target= target.strip
39
- string!
40
- not_empty!
41
- if target[%r!([^a-zA-Z0-9\.\_\-\/~,]+)!]
42
- fail! "...has invalid characters: #{$1.inspect}"
43
- end
44
- end
45
-
46
- def file_read!
47
- self.target= target.gsub("\r\n", "\n")
48
- end
49
-
50
- def file_content!
51
- string!
52
- not_empty!
53
- file_read!
54
- end
55
-
56
- end # === module File_Addresses
57
- end # === module Mods
58
- end # === class Demand
59
- end # === module Checked
@@ -1,51 +0,0 @@
1
-
2
- module Checked
3
- class Demand
4
- module Mods
5
- module Strings
6
-
7
- def self.before_apply d
8
- end
9
-
10
- def self.apply? d
11
- d.target.is_a?( String ) ||
12
- d.target.is_a?(StringIO)
13
- end
14
-
15
- def self.after_apply d
16
- if d.target.is_a?(StringIO)
17
- d.target.rewind
18
- d.target= d.target.readlines
19
- d.target.rewind
20
- end
21
- end
22
-
23
- def include! matcher
24
- included = target[matcher]
25
- return true if included
26
- fail!("...must contain: #{matcher.inspect}")
27
- end
28
-
29
- def exclude! matcher
30
- raise_e = val[matcher]
31
- return true unless raise_e
32
- fail!("...can't contain #{matcher.inspect}")
33
- end
34
-
35
- def matches_only! matcher
36
- str = target.gsub(matcher, '')
37
- if !str.empty?
38
- fail!( "...has invalid characters: #{str.inspect}" )
39
- end
40
- end
41
-
42
- def not_empty!
43
- if target.strip.empty?
44
- fail!("...can't be empty.")
45
- end
46
- end
47
-
48
- end # === module Strings
49
- end # === module DSL
50
- end # === class Demand
51
- end # === module Checked
@@ -1,20 +0,0 @@
1
-
2
- module Checked
3
- class Demand
4
- module Mods
5
- module Symbols
6
-
7
- def self.before_apply d
8
- end
9
-
10
- def self.apply? d
11
- d.target.is_a? Symbol
12
- end
13
-
14
- def self.after_apply d
15
- end
16
-
17
- end # === module Symbols
18
- end # === class DEMANDS
19
- end # === class Demand
20
- end # === module Checked
@@ -1,91 +0,0 @@
1
-
2
- module Checked
3
- class Demand
4
- module Mods
5
- module Vars
6
-
7
- def array!
8
- a! Array
9
- end
10
-
11
- def bool!
12
- return true if [true, false].include?(target)
13
- fail!("...has to be a boolean.")
14
- end
15
-
16
- def string!
17
- a! String
18
- end
19
-
20
- def symbol!
21
- a! Symbol
22
- end
23
-
24
- def no_block_given!
25
- one_of! NilClass, FalseClass
26
- if target
27
- fail! "No block allowed."
28
- end
29
- end
30
-
31
- def no_block!
32
- no_block_given!
33
- end
34
-
35
- def either! *meths
36
- meths.flatten.detect { |m|
37
- begin
38
- send m
39
- true
40
- rescue Failed
41
- false
42
- end
43
- }
44
- end
45
-
46
- def one_of! *klasses
47
- return true if klasses.flatten.any? { |k| target.is_a?(k) }
48
- fail! "...can only be of class/module: #{klasses.map(&:to_s).join(', ')}"
49
- end
50
-
51
- def a! klass
52
- one_of! klass
53
- end
54
-
55
- def nil!
56
- return true if target == nil
57
- fail!("...must be nil.")
58
- end
59
-
60
- def not_nil!
61
- fail!("...can't be nil.") if target.nil?
62
- true
63
- end
64
-
65
- def respond_to! meth
66
- return true if target.respond_to?(meth)
67
- fail!("...must respond to #{meth.inspect}")
68
- end
69
-
70
- def not_empty!
71
- respond_to! :empty?
72
- is_empty = target.empty?
73
- fail!("...can't be empty.") if is_empty
74
- end
75
-
76
- def exists!
77
- respond_to! :exists?
78
- return true if target.exists?
79
- fail!("...must exist.")
80
- end
81
-
82
- def not_exists!
83
- respond_to! :exists?
84
- return true unless target.exists?
85
- fail!("...must not exist.")
86
- end
87
-
88
- end # === module Var
89
- end # === module Mods
90
- end # === class Demand
91
- end # === module Checked
@@ -1,57 +0,0 @@
1
-
2
- shared 'Ask' do
3
- before {
4
- extend Checked::Ask::DSL
5
- }
6
- end
7
-
8
- describe "ask empty?" do
9
-
10
- behaves_like 'Ask'
11
-
12
- it "returns true if string is :empty? after applying :strip" do
13
- ask?(" \n ", :empty?).should.be === true
14
- end
15
-
16
- it "returns false if string is not :empty? after applying :strip" do
17
- ask?(" n ", :empty?).should.be === false
18
- end
19
-
20
-
21
- end # === describe Ask Strings
22
-
23
- describe "Ask :includes" do
24
-
25
- behaves_like 'Ask'
26
-
27
- it "returns true if string contains a Regexp matcher" do
28
- Checked::Ask.new(" :a ") { |a|
29
- a.< :includes?, / :a /
30
- }.true?.should.be == true
31
- end
32
-
33
- it "returns false if string excludes a Regexp matcher" do
34
- Checked::Ask.new(" :a ") { |a|
35
- a.< :includes?, / :b /
36
- }.true?.should.be == false
37
- end
38
-
39
- end # === describe Ask :includes
40
-
41
- describe "Ask :excludes" do
42
-
43
- behaves_like 'Ask'
44
-
45
- it "returns true if string excludes a Regexp matcher" do
46
- Checked::Ask.new(" :a ") { |a|
47
- a.< :excludes?, / :b /
48
- }.true?.should.be == true
49
- end
50
-
51
- it 'returns false if string includes a Regexp matcher' do
52
- Checked::Ask.new(" :a ") { |a|
53
- a.< :excludes?, / :a /
54
- }.true?.should.be == false
55
- end
56
-
57
- end # === describe Ask :excludes
@@ -1,43 +0,0 @@
1
-
2
- describe "Checked::DSL" do
3
-
4
- %w{ Ask Demand Clean }.each { |name|
5
- klass = Checked.const_get(name)
6
-
7
- it "includes #{name}::DSL" do
8
- Checked::DSL.included_modules.should.include klass::DSL
9
- end
10
-
11
- }
12
-
13
- end # === describe
14
-
15
-
16
- describe "Checked.demand!" do
17
-
18
- before {
19
- @perf = Class.new { include Checked::DSL }.new
20
- }
21
-
22
- it 'must be equivalent to: Demand.new(target)' do
23
- should.raise(Checked::Demand::Failed) {
24
- @perf.demand! [], :not_empty!
25
- }.message.should == "Array, [], can't be empty."
26
-
27
- end
28
-
29
- end # === describe Checked.demand!
30
-
31
- describe "Checked.named_demand!" do
32
-
33
- before {
34
- @perf = Class.new { include Checked::DSL }.new
35
- }
36
-
37
- it 'must be equivalent to: Demand.new(target) { |d| d.* name; d << args}' do
38
- should.raise(Checked::Demand::Failed) {
39
- @perf.named_demand! "Test Val", [:a, 'c'], :symbols!
40
- }.message.should == "Test Val, [:a, \"c\"], contains a non-symbol."
41
- end
42
-
43
- end # === describe Checked.named_demand!