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
data/lib/Checked/Args.rb DELETED
@@ -1,55 +0,0 @@
1
-
2
- module Checked
3
-
4
- class Args
5
-
6
- Unknown_Class = Class.new(RuntimeError)
7
-
8
- module Base
9
-
10
- def initialize *arr
11
- arr.flatten.each { |var|
12
- case var
13
- when Array
14
- var.each { |k|
15
- define k
16
- }
17
- when Hash
18
- var.each { |k,v|
19
- define k
20
- send("#{k}=", v)
21
- }
22
- else
23
- raise Unknown_Class, var.inspect
24
- end
25
- }
26
- end
27
-
28
- def define *raw
29
- raw.flatten.each { |k|
30
- eval %~
31
-
32
- def #{k}
33
- @#{k}
34
- end
35
-
36
- def #{k}= v
37
- @#{k} = v
38
- end
39
-
40
- ~
41
- }
42
- end
43
-
44
- def defined? key
45
- respond_to?( key ) &&
46
- respond_to?( :"#{key}=" )
47
- end
48
-
49
- end # === module Base
50
-
51
- include Base
52
-
53
- end # === module Args
54
-
55
- end # === module Checked
data/lib/Checked/Ask.rb DELETED
@@ -1,69 +0,0 @@
1
- require 'Checked/Base'
2
- require 'Checked/Ask/DSL'
3
-
4
- module Checked
5
- class Ask
6
- module Base
7
-
8
- private # ==============================
9
-
10
- include ::Checked::Base
11
-
12
- #
13
- # Demand::DSL is not used here
14
- # because it uses the Questioner.
15
- # It would cause an stack level/infinite loop
16
- # error.
17
- #
18
- def valid! target, *args
19
- v = Demand.new(target)
20
- if args.empty?
21
- yield v
22
- else
23
- raise "No block allowed with arguments: #{args.inspect}" if block_given?
24
- v << args
25
- end
26
-
27
- v.target
28
- end
29
-
30
- public # ==============================
31
-
32
- attr_reader :records
33
-
34
- def before_init
35
- @records = []
36
- end
37
-
38
- def < name, *args, &blok
39
- a = super
40
- valid!(a, :bool!)
41
- records << a
42
- a
43
- end
44
-
45
- def << *methods
46
- valid! block_given?, :no_block!
47
- super(*methods) { |name|
48
- self.< name
49
- }
50
- end
51
-
52
- def true?
53
- return false if records.empty?
54
- records.all?
55
- end
56
-
57
- def any?
58
- return false if records.empty?
59
- records.any?
60
- end
61
-
62
- private # ==============================
63
-
64
-
65
- end # === module Base
66
-
67
- include Base
68
- end # === class Ask
69
- end # === module Checked
@@ -1,31 +0,0 @@
1
- require 'Checked/Demand/DSL'
2
-
3
- module Checked
4
- class Ask
5
- module DSL
6
-
7
- include Demand::DSL
8
-
9
- def ask? target, *args
10
- Checked::Ask.new(target) { |a|
11
- a.<< args
12
- }.true?
13
- end
14
-
15
- def true? target, *args
16
- demand! block_given?, :no_block!
17
- q = Ask.new(target)
18
- q << args
19
- q.true?
20
- end
21
-
22
- def any? target, *args
23
- demand! block_given?, :no_block!
24
- q = Ask.new(target)
25
- q << args
26
- q.any?
27
- end
28
-
29
- end # === module DSL
30
- end # === class Ask
31
- end # === module Checked
@@ -1,25 +0,0 @@
1
-
2
-
3
- module Checked
4
- class Ask
5
- module Mods
6
- module Arrays
7
-
8
- def self.apply?(d)
9
- d.target.is_a?(Array)
10
- end
11
-
12
- def symbols?
13
- valid! target, :array!
14
- return false if target.empty?
15
- target.all? { |val| val.is_a? Symbol }
16
- end
17
-
18
- def excludes? matcher
19
- !target.includes?(matcher)
20
- end
21
-
22
- end # === module Arrays
23
- end # === module Mods
24
- end # === class Ask
25
- end # === class Checked
@@ -1,26 +0,0 @@
1
-
2
- module Checked
3
- class Ask
4
- module Mods
5
- module Strings
6
-
7
- def self.apply? d
8
- d.target.is_a?(String)
9
- end
10
-
11
- def empty?
12
- target.strip.empty?
13
- end
14
-
15
- def includes? matcher
16
- !!target[matcher]
17
- end
18
-
19
- def excludes? matcher
20
- !includes?(matcher)
21
- end
22
-
23
- end # === module Strings
24
- end # === module Mods
25
- end # === class Ask
26
- end # === module Checked
@@ -1,12 +0,0 @@
1
-
2
- module Checked
3
- class Ask
4
- module Mods
5
- module Vars
6
-
7
-
8
-
9
- end # === module Vars
10
- end # === module Mods
11
- end # === class Ask
12
- end # === module Checked
data/lib/Checked/Base.rb DELETED
@@ -1,119 +0,0 @@
1
-
2
- module Checked
3
- module Base
4
-
5
- def self.included var
6
- klass_name = var.to_s.gsub(/::Base$/, '').split('::').last
7
- klass = Checked.const_get(klass_name)
8
-
9
- files = Dir.glob(File.join File.dirname(__FILE__), "#{klass_name}/Mods/*.rb")
10
- raise "No Mods found for #{klass}" if files.empty?
11
-
12
- files.each { |path|
13
- name = File.basename(path).sub('.rb', '')
14
- require "Checked/#{klass_name}/Mods/#{name}"
15
- if name == 'Vars'
16
- klass.class_eval {
17
- include klass::Mods::Vars
18
- }
19
- else
20
- klass.const_set(:Mod_List, []) unless klass.const_defined?(:Mod_List)
21
- klass::Mod_List << klass::Mods.const_get(name)
22
- end
23
- }
24
- end
25
-
26
- attr_accessor :target
27
- attr_reader :target_name
28
-
29
- def initialize target, &blok
30
-
31
- if respond_to? :before_init
32
- if method(:before_init).parameters === []
33
- before_init
34
- else
35
- before_init target, &blok
36
- end
37
- end
38
-
39
- @target = target
40
- @target_name = target.respond_to?(:english_name) ?
41
- target.english_name :
42
- "#{target.class.name.gsub('_', ' ')}, #{target.inspect},"
43
-
44
- self.class.const_get(:Mod_List).each { |mod|
45
- if mod.apply?(self)
46
- extend mod
47
- end
48
- }
49
-
50
- if respond_to? :after_init
51
- if method(:after_init).parameters === []
52
- after_init
53
- else
54
- after_init target, &blok
55
- end
56
- end
57
-
58
- yield(self) if block_given?
59
- end
60
-
61
- #
62
- # Sets the name.
63
- #
64
- def * name
65
- @target_name = "#{name}, #{target.inspect},"
66
- self
67
- end
68
-
69
- #
70
- # ::Checked::Demand => demand
71
- # ::Checked::Clean => clean
72
- # ::Checked::Ask => ask
73
- #
74
- def purpose
75
- @purpose ||= self.class.name.split('::').last.downcase.sub(/er$/, '')
76
- end
77
-
78
- def < name, *args, &blok
79
- send(name, *args, &blok)
80
- end
81
-
82
- def << *methods
83
- meths = begin
84
- ::Checked::Demand.new(methods.flatten) { |d|
85
- d.* "(Originally: #{target_name})"
86
- d.instance_eval { not_empty!; symbols! }
87
- }.target
88
- end
89
-
90
-
91
- meths.each { |name|
92
-
93
- begin
94
- if block_given?
95
- yield name
96
- else
97
- send name
98
- end
99
- rescue NoMethodError => e
100
- raise e if !e.message[/undefined method `#{name.to_s}' for/]
101
- to_name = lambda { |m| m.to_s.split('::').last }
102
- mods = self.class::Mod_List.select { |m| m.instance_methods.include?(name.to_sym) }
103
- all = self.class::Mod_List
104
-
105
- if mods.empty?
106
- e_msg = e.message
107
- raise NoMethodError, "#{e_msg} using mods: #{all.map(&to_name).join(', ')}"
108
- else
109
- raise NoMethodError, err_msg(
110
- "...can not #{purpose} #{name}, which is found in: #{mods.map(&to_name).join(', ')}"
111
- )
112
- end
113
- end
114
- }
115
- self
116
- end
117
-
118
- end # === module Base
119
- end # === module Checked
@@ -1,16 +0,0 @@
1
-
2
- module Checked
3
- class Clean
4
- module DSL
5
-
6
- def clean target, *args
7
- raise "No block allowed here." if block_given?
8
-
9
- c = Clean.new(target)
10
- c.<(*args)
11
- c.target
12
- end
13
-
14
- end # === module DSL
15
- end # === class Clean
16
- end # === module Checked
@@ -1,104 +0,0 @@
1
-
2
- module Checked
3
- class Clean
4
- module Mods
5
- module Strings
6
-
7
- def self.apply? d
8
- d.target.is_a?(String) ||
9
- d.target.is_a?(StringIO)
10
- end
11
-
12
- def self.on_apply d
13
- case d.target
14
- when StringIO
15
- d.target.rewind
16
- d.target= d.target.readlines
17
- else
18
- # Do nothing.
19
- end
20
- end
21
-
22
- def untar
23
- target
24
- .sub(/\.tar\.gz$/, '')
25
- .sub(/\.tar/, '')
26
- end
27
-
28
- def file_names matcher
29
- target.strip.split.select { |word| word[matcher] }
30
- end
31
-
32
- def file_names_by_ext ext
33
- names = file_names(ext)
34
- bases = names.map { |s|
35
- s.sub(%r!#{ext}$!, '')
36
- }
37
-
38
- names.zip bases
39
- end
40
-
41
- def shell
42
- target
43
- .strip
44
- .split("\n")
45
- .map(&:strip)
46
- .reject { |line| line.empty? }
47
- .join(' && ')
48
- end
49
-
50
- def chop_ext
51
- target.sub /\.[^\.]+$/, ''
52
- end
53
-
54
- def ruby_name
55
- c = ::Checked::Clean.new( File.basename( target ) )
56
- c.< :chop_rb
57
- c.target
58
- end
59
-
60
- def chop_rb
61
- target.sub %r!\.rb$!, ''
62
- end
63
-
64
- def chop_slash_r
65
- target.gsub "\r", ''
66
- end
67
-
68
- def os_stardard
69
- chop_slash_r.strip
70
- end
71
-
72
- def file_names matcher
73
- strip.split.select { |word| word[matcher] }
74
- end
75
-
76
- def file_names_by_ext ext
77
- names = file_names(ext)
78
- bases = names.map { |s|
79
- s.sub(%r!#{ext}$!, '')
80
- }
81
-
82
- names.zip bases
83
- end
84
-
85
- def to_single
86
- target.gsub( /s\Z/, '' )
87
- end
88
-
89
- def to_plural
90
- target.to_single + 's'
91
- end
92
-
93
- def to_class_name
94
- target.split('_').map(&:capitalize).join('_')
95
- end
96
-
97
- def to_camel_case
98
- target.split('_').map(&:capitalize).join
99
- end
100
-
101
- end # === module Strings
102
- end # === module Mods
103
- end # === class Clean
104
- end # === module Checked