procemon 0.8.1 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NGI0YTZlYmZhZDhhNWI2ZWFiOTdmNmUyNzk0OTA2NmI4N2Q5OTA0Zg==
4
+ ZTc0ZjMxOGUyM2YwZjI0ZTBmMTBlMGFiMzY2MDk1M2JmMDUwZjAxMA==
5
5
  data.tar.gz: !binary |-
6
- NDgyOTFkYzBhNDIxZTMzOTA3YjU4MjFkMTFlMWVkZDVhZGZhOWU5YQ==
6
+ ZWU2NzZjZGRhYzM5ZGVkNmMzYmM4Yjc0NWUyMDkzYWU3NzkzMDFkZA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NjliMTM0YzUyMTFlMDBkYWZjNWQ0ZGExOTc1YmM5ZTY1MzgwZDFlOTJjNDEz
10
- OTk3OGE1MmQ1YTIzNzU3ZDE2NDhhYjcyYTIzMjQwZDdlMjAxMzgyZTVlMDA3
11
- OGUxOGViMDdhMmZjYzdkNTg0YWQ5OGQ3MTdkYTVmNzA3YTI4MWE=
9
+ MzA2MmE3NTQ0NjM1YjRhZDcxYjdhMzkyOTUzYThmNGI3OTI5NGY2YmYxZjk1
10
+ MzFiYWQxYzNkYzVjYTUzZTAwY2E0ZDY2YmYyOGNjN2U0OWY3NmMyMzBlOWMy
11
+ OWNiYTE2ZGMxYjNkY2ZlYzU1ZmU0ZGJmOTMzODAxNjYwNTVlZmQ=
12
12
  data.tar.gz: !binary |-
13
- NjM3Zjc2MmE2MmY0ODEzMWIwNzE1NjYyYWVlMmU3OGFkNTU5ZjExYzBmMWFj
14
- YWU0ZDljM2Q2OTM4ZTQ2MTI2MWZhYjFlOTdhYjZmMzg4YWIzMzJlNmI1YWY2
15
- NTc2ZmFhZDRiMmVmNDFmMmM0NjBjMzM1ODk5OTE4Yjg1MmFlYzQ=
13
+ NTViNmJhYTAwYjZjYTMwMDZjMzU5MTUxZGE5ODc5NmIxYzEyMmJlNjFlYWM4
14
+ ZTU1ZDdlNGJhYWJhODgzODVmODNjY2E0M2U0N2U2Yjc1OTNiZGQ3YTg3YzUz
15
+ Nzc0MGNkODBhNzAyZTYxZTc5YTQzYzU2NDk0NTE1ZTY4YjE0MWE=
data/Gemfile.lock CHANGED
@@ -1,16 +1,18 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- procemon (0.7.0)
4
+ procemon (0.8.1)
5
5
  asynchronous
6
6
  loader
7
+ mpatch
7
8
  sourcerer
8
9
 
9
10
  GEM
10
11
  remote: http://rubygems.org/
11
12
  specs:
12
- asynchronous (1.0.3)
13
+ asynchronous (1.0.4)
13
14
  loader (1.0.2)
15
+ mpatch (1.0.0)
14
16
  sourcerer (0.5.2)
15
17
 
16
18
  PLATFORMS
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.8.1
1
+ 0.9.0
@@ -1,90 +1,2 @@
1
1
  require File.join 'active_support','time'
2
-
3
- class String
4
-
5
- def duck
6
-
7
- begin
8
- if self == self.to_f.to_s
9
- return self.to_f
10
- end
11
- rescue NoMethodError
12
- end
13
-
14
- begin
15
- if self == self.to_i.to_s
16
- return self.to_i
17
- end
18
- rescue NoMethodError
19
- end
20
-
21
- begin
22
- if self.gsub(":","") == self.to_datetime.to_s.gsub(
23
- "T"," ").gsub("+"," +").gsub(":","")
24
- return self.to_datetime
25
- end
26
- rescue Exception
27
- end
28
-
29
- begin
30
- if self == self.to_datetime.to_s
31
- return self.to_datetime
32
- end
33
- rescue Exception
34
- end
35
-
36
- begin
37
- if self == self.to_date.to_s
38
- return self.to_date
39
- end
40
- rescue Exception
41
- end
42
-
43
- begin
44
- if self == "true"
45
- return true
46
- end
47
- rescue NoMethodError
48
- end
49
-
50
-
51
- begin
52
- if self == "false"
53
- return false
54
- end
55
- rescue NoMethodError
56
- end
57
-
58
- begin
59
- string_input= self
60
- contain= nil
61
- ["[", "]","^","$","*","/"].each do |one_sym|
62
- if string_input.include? one_sym
63
- contain ||= true
64
- end
65
- end
66
- if contain == true
67
- string_regexp= Regexp.new(string_input).inspect#.gsub('\\','')
68
- string_regexp= string_regexp[1..(string_regexp.length-2)]
69
- if string_input == string_regexp
70
- return Regexp.new(string_input)
71
- else
72
- raise ArgumentError,"invalid input string"
73
- end
74
- end
75
- rescue ArgumentError
76
- end
77
-
78
- begin
79
- if self == self.to_s.to_s
80
- return self.to_s
81
- end
82
- rescue NoMethodError
83
- end
84
-
85
- end
86
-
87
- alias :to_duck :duck
88
- alias :to_d :duck
89
-
90
- end
2
+ require File.join 'mpatch','active_support','str2duck'
data/lib/procemon.rb CHANGED
@@ -4,8 +4,8 @@ module Procemon
4
4
  require 'asynchronous'
5
5
  require 'sourcerer'
6
6
  require 'loader'
7
+ require 'mpatch'
7
8
 
8
- require_relative_directory File.join("procemon","mpatch")
9
9
  require_relative_directory File.join("procemon","function")
10
10
 
11
11
  def self.init_all
data/procemon.gemspec CHANGED
@@ -22,5 +22,6 @@ Gem::Specification.new do |spec|
22
22
  spec.add_dependency "asynchronous"
23
23
  spec.add_dependency "sourcerer"
24
24
  spec.add_dependency "loader"
25
+ spec.add_dependency "mpatch"
25
26
 
26
27
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: procemon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Luzsi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-05 00:00:00.000000000 Z
11
+ date: 2014-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: asynchronous
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: mpatch
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  description: ! 'This is a collection of my Ruby Procs in the adventure of becoming
56
70
  the best! In short this provides extra tools in Application configs, argumens processing,daemonise,eval,
57
71
  getting source of a block,method,process and work with it, or even fuse them into
@@ -81,7 +95,6 @@ files:
81
95
  - lib/procemon/extra/str2duck.rb
82
96
  - lib/procemon/function/application.rb
83
97
  - lib/procemon/function/argv.rb
84
- - lib/procemon/function/binding/binding.rb
85
98
  - lib/procemon/function/binding/bindless.rb
86
99
  - lib/procemon/function/daemon.rb
87
100
  - lib/procemon/function/documentation.rb
@@ -92,22 +105,6 @@ files:
92
105
  - lib/procemon/function/name.rb
93
106
  - lib/procemon/function/port.rb
94
107
  - lib/procemon/function/tmp_dir.rb
95
- - lib/procemon/function/validation.rb
96
- - lib/procemon/mpatch/array.rb
97
- - lib/procemon/mpatch/boolean.rb
98
- - lib/procemon/mpatch/class.rb
99
- - lib/procemon/mpatch/exception.rb
100
- - lib/procemon/mpatch/file.rb
101
- - lib/procemon/mpatch/hash.rb
102
- - lib/procemon/mpatch/integer.rb
103
- - lib/procemon/mpatch/kernel.rb
104
- - lib/procemon/mpatch/module.rb
105
- - lib/procemon/mpatch/object.rb
106
- - lib/procemon/mpatch/proc.rb
107
- - lib/procemon/mpatch/process.rb
108
- - lib/procemon/mpatch/random.rb
109
- - lib/procemon/mpatch/string.rb
110
- - lib/procemon/mpatch/yml.rb
111
108
  - procemon.gemspec
112
109
  - scripts/doc_gen.rb
113
110
  - scripts/test.txt
@@ -1,17 +0,0 @@
1
- class Object
2
-
3
- def binding?
4
- return binding
5
- end
6
-
7
- alias :get_binding :binding?
8
-
9
- end
10
-
11
- class Array
12
- def debug binding
13
- self.each do |arg|
14
- puts "arg = #{eval(arg, binding).inspect}"
15
- end
16
- end
17
- end
@@ -1,21 +0,0 @@
1
- class Object
2
-
3
- # basic validations for those who fear the DUCK!
4
- def must_be class_name
5
- if class_name.class == Class
6
- begin
7
- if self.class != class_name
8
- raise ArgumentError, "invalid parameter given: #{self}"
9
- end
10
- end
11
- else
12
- begin
13
- if self != class_name
14
- raise ArgumentError, "invalid parameter given: #{self}"
15
- end
16
- end
17
- end
18
- return self
19
- end unless method_defined? :must_be
20
-
21
- end
@@ -1,149 +0,0 @@
1
- class Array
2
-
3
- # remove arguments or array of
4
- # parameters from the main array
5
- def trim(*args)
6
-
7
- args.dup.each do |one_element|
8
- if one_element.class == Array
9
- args.delete_at(args.index(one_element))
10
- args= args+one_element
11
- end
12
- end
13
-
14
- delete_array= Array.new
15
- args.each do |one_element|
16
- index= self.index(one_element)
17
- unless index.nil?
18
- delete_array.push index
19
- self.delete_at(index)
20
- end
21
- end
22
-
23
- return self
24
-
25
- end
26
-
27
- # return index of the target element
28
- def index_of(target_element)
29
- array = self
30
- hash = Hash[array.map.with_index.to_a]
31
- return hash[target_element]
32
- end
33
-
34
- # remove n. element from the end
35
- # and return a new object
36
- def pinch n=1
37
- return self[0..(self.count-(n+1))]
38
- end
39
-
40
- # remove n. element from the end
41
- # and return the original object
42
- def pinch! n=1
43
- n.times do
44
- self.pop
45
- end
46
- return self
47
- end
48
-
49
- # return boolean by other array
50
- # all element included or
51
- # not in the target array
52
- def contain?(oth_array)#anothere array
53
- (oth_array & self) == oth_array
54
- end
55
-
56
- # return boolean by other array
57
- # if any element included from
58
- # the oth_array, return a true
59
- def contain_any_of?(oth_array)
60
- oth_array.each do |element|
61
- if self.include? element
62
- return true
63
- end
64
- end
65
- return false
66
- end
67
-
68
- alias :contains_any_of? :contain_any_of?
69
- alias :has_any_of? :contain_any_of?
70
-
71
- # do safe transpose
72
- def safe_transpose
73
- result = []
74
- max_size = self.max { |a,b| a.size <=> b.size }.size
75
- max_size.times do |i|
76
- result[i] = Array.new(self.first.size)
77
- self.each_with_index { |r,j| result[i][j] = r[i] }
78
- end
79
- result
80
- end
81
-
82
- alias :contains? :contain?
83
-
84
- # return boolean
85
- # if any element class is equal to th given class
86
- # return a true , else false
87
- def contain_element_of_class?(class_name)
88
- target_array= self.map{|e| e.class }.uniq
89
- if class_name.class != Class
90
- raise ArgumentError, "Argument must be a Class!"
91
- end
92
- if target_array.include? class_name
93
- return true
94
- end
95
- return false
96
- end
97
-
98
- alias :contains_element_of_class? :contain_element_of_class?
99
- alias :has_element_of_class? :contain_element_of_class?
100
-
101
- # generate params structure from array
102
- # *args => [:opts,:args]
103
- def params_separation
104
-
105
- options= self.map { |element|
106
- if element.class == Hash
107
- element
108
- end
109
- }.uniq - [ nil ]
110
- #options.each{|e| self.delete(e) }
111
- arguments= self.dup - options
112
- options= Hash[*options]
113
-
114
- return [options,arguments]
115
-
116
- end
117
-
118
- alias :separate_params :params_separation
119
- alias :process_params :params_separation
120
-
121
- # generate params structure from array
122
- # return_array
123
- def extract_class! class_name
124
-
125
- if class_name.class != Class
126
- raise ArgumentError, "parameter must be a class name"
127
- end
128
-
129
- return_value= self.map { |element|
130
- if element.class == class_name
131
- element
132
- end
133
- }.uniq - [ nil ]
134
- return_value.each{|e| self.delete(e) }
135
-
136
- return return_value
137
-
138
- end
139
- alias :cut_class! :extract_class!
140
-
141
- # generate params structure from array
142
- # *args - options {}
143
- def extract_options!
144
- options= self.extract_class! Hash
145
- return Hash[*options]
146
- end
147
- alias :extract_hash! :extract_options!
148
-
149
- end
@@ -1,15 +0,0 @@
1
- class Object
2
-
3
- def boolean?
4
- !!self == self
5
- end
6
-
7
- def true?
8
- self == true
9
- end
10
-
11
- def false?
12
- self == false
13
- end
14
-
15
- end
@@ -1,92 +0,0 @@
1
- class Class
2
-
3
- # get singleton methods to target class without super class methods
4
- def class_methods
5
- self.methods - Object.methods
6
- end
7
-
8
- # bind a singleton method to a class object
9
- def create_class_method(method,&block)
10
- self.class_eval do
11
- define_singleton_method method do |*args|
12
- block.call *args
13
- end
14
- end
15
- end
16
-
17
- # create an instance method
18
- def create_instance_method(method,&block)
19
- self.class_eval do
20
- define_method method do |*args|
21
- block.call *args
22
- end
23
- end
24
- end
25
-
26
- # Iterates over all subclasses (direct and indirect)
27
- def each_subclass
28
- ObjectSpace.each_object(Class) { | candidate |
29
- begin
30
- yield candidate if candidate < self
31
- rescue ArgumentError
32
- # comparison of Class with Class failed (ArgumentError)
33
- end
34
- }
35
- end
36
-
37
- # Returns an Array of subclasses (direct and indirect)
38
- def subclasses_all
39
- ret = []
40
- each_subclass {|c| ret.push c}
41
- ret
42
- end
43
-
44
- alias :all_subclasses :subclasses_all
45
-
46
- # Returns an Array of direct subclasses
47
- def subclasses
48
- ret = []
49
- each_subclass {|c| ret.push(c) if c.superclass == self }
50
- ret
51
- end
52
- alias :subclass :subclasses
53
-
54
- # create singleton attribute
55
- def class_attr_accessor(name)
56
-
57
- ### GET
58
- begin
59
- define_method name do
60
- class_variable_get "@@#{name}"
61
- end
62
- end
63
-
64
- ### SET
65
- begin
66
- define_method "#{name}=" do |new_val|
67
- class_variable_set "@@#{name}", new_val
68
- end
69
- end
70
-
71
- end
72
-
73
- # create class instance attribute
74
- def instance_attr_accessor(name)
75
-
76
- ### GET
77
- begin
78
- define_method name do
79
- instance_variable_get "@#{name}"
80
- end
81
- end
82
-
83
- ### SET
84
- begin
85
- define_method "#{name}=" do |new_val|
86
- instance_variable_set "@#{name}", new_val
87
- end
88
- end
89
-
90
- end
91
-
92
- end
File without changes
@@ -1,71 +0,0 @@
1
- class File
2
-
3
- # create a file, if not exsist create file, and dir if needed
4
- def self.create(route_name ,filemod="w",string_data=String.new)
5
- begin
6
-
7
- #file_name generate
8
- if !route_name.to_s.split(File::SEPARATOR).last.nil? || route_name.to_s.split(File::SEPARATOR).last != ''
9
- file_name = route_name.to_s.split(File::SEPARATOR).last
10
- else
11
- file_name = nil?
12
- end
13
-
14
- #path_way
15
- begin
16
- raise ArgumentError, "missing route_name: #{route_name}" if route_name.nil?
17
- path = File.expand_path(route_name).to_s.split(File::SEPARATOR)
18
- path = path - [File.expand_path(route_name).to_s.split(File::SEPARATOR).last]
19
- path.shift
20
- end
21
-
22
- #job
23
- begin
24
- if !Dir.exists?(File::SEPARATOR+path.join(File::SEPARATOR))
25
-
26
- at_now = File::SEPARATOR
27
- path.each do |dir_to_be_checked|
28
-
29
- at_now += "#{dir_to_be_checked+File::SEPARATOR}"
30
- Dir.mkdir(at_now) if !Dir.exists?(at_now)
31
-
32
- end
33
- end
34
- end
35
-
36
- # write data
37
- begin
38
- full_path = "#{File::SEPARATOR+path.join(File::SEPARATOR)+File::SEPARATOR}#{file_name}"
39
- if File.exist? full_path
40
- File.open(full_path,filemod).write string_data
41
- else
42
- File.new(full_path,filemod).write string_data
43
- end
44
- end
45
-
46
- rescue Exception => ex
47
- puts ex
48
- end
49
- end
50
-
51
- # start read the file object on each line
52
- # optionable an integer value to start read line at
53
- # compatible with mac (i am linux user, so not tested)
54
- def each_line_from(start_at=1,&block)
55
- unless [Integer,Fixnum,Bignum].include?(start_at.class)
56
- raise ArgumentError, "invalid line index"
57
- end
58
- begin
59
- line_num= 1
60
- text= self.read
61
- text.gsub!(/\r\n?/, "\n")
62
- text.each_line do |*line|
63
- if line_num >= start_at
64
- block.call #*line
65
- end
66
- line_num += 1
67
- end
68
- end
69
- end
70
-
71
- end
@@ -1,101 +0,0 @@
1
- class Hash
2
-
3
- # remove elements by keys,
4
- # array of keys,
5
- # hashTags,
6
- # strings
7
- def trim(*args)
8
-
9
- args.each do |one_element|
10
- case true
11
-
12
- when one_element.class == Hash
13
- begin
14
- one_element.each do |key,value|
15
- if self[key] == value
16
- self.delete(key)
17
- end
18
- end
19
- end
20
-
21
- when one_element.class == Array
22
- begin
23
- one_element.each do |one_key|
24
- self.delete(one_key)
25
- end
26
- end
27
-
28
- when one_element.class == Symbol,
29
- one_element.class == String
30
- begin
31
- self.delete(one_element)
32
- end
33
-
34
- end
35
- end
36
- return self
37
-
38
- end
39
-
40
- #pass single or array of keys, which will be removed, returning the remaining hash
41
- def remove!(*keys)
42
- keys.each{|key| self.delete(key) }
43
- self
44
- end
45
-
46
- #non-destructive version
47
- def remove(*keys)
48
- self.dup.remove!(*keys)
49
- end
50
-
51
- # Returns a new hash with +self+ and +other_hash+ merged recursively.
52
- #
53
- # h1 = {:x => {:y => [4,5,6]}, :z => [7,8,9]}
54
- # h2 = {:x => {:y => [7,8,9]}, :z => "xyz"}
55
- #
56
- # h1.deep_merge(h2) #=> { :x => {:y => [7, 8, 9]}, :z => "xyz" }
57
- # h2.deep_merge(h1) #=> { :x => {:y => [4, 5, 6]}, :z => [7, 8, 9] }
58
- def deep_merge(other_hash)
59
- dup.deep_merge!(other_hash)
60
- end unless method_defined? :deep_merge
61
-
62
- alias :+ :deep_merge
63
-
64
- # Same as +deep_merge+, but modifies +self+.
65
- def deep_merge!(other_hash)
66
- other_hash.each_pair do |k,v|
67
- tv = self[k]
68
- self[k] = tv.is_a?(Hash) && v.is_a?(Hash) ? tv.deep_merge(v) : v
69
- end
70
- self
71
- end unless method_defined? :deep_merge!
72
-
73
- # return bool that does the sub hash all element include the hash who call this or not
74
- def deep_include?(sub_hash)
75
- sub_hash.keys.all? do |key|
76
- self.has_key?(key) && if sub_hash[key].is_a?(Hash)
77
- self[key].is_a?(Hash) && self[key].deep_include?(sub_hash[key])
78
- else
79
- self[key] == sub_hash[key]
80
- end
81
- end
82
- end unless method_defined? :deep_include?
83
-
84
- def map_hash &block
85
-
86
- tmp_hash= Hash.new
87
- map_hash_obj= self.map &block
88
- map_hash_obj.each do |hash|
89
-
90
- if hash.class <= Array
91
- hash= Hash[*hash]
92
- end
93
-
94
- tmp_hash.deep_merge!(hash)
95
-
96
- end
97
-
98
- return tmp_hash
99
- end
100
-
101
- end
@@ -1,12 +0,0 @@
1
-
2
- class Integer
3
-
4
- # because for i in integer/fixnum not working,
5
- # here is a little patch
6
- def each &block
7
- self.times do |number|
8
- block.call number
9
- end
10
- end
11
-
12
- end
@@ -1,9 +0,0 @@
1
- def putsf(integer,*args)
2
- command_string=String.new
3
- args.each do |one_element|
4
- command_string+="%-#{integer}s"
5
- end
6
- command_string+="\n"
7
- printf command_string,*args
8
- end
9
-
@@ -1,16 +0,0 @@
1
- class Module
2
-
3
- # return the module objects direct sub modules
4
- def modules
5
- constants.collect {|const_name| const_get(const_name)}.select {|const| const.class == Module}
6
- end
7
-
8
- # return the module objects direct sub modules
9
- def classes
10
- constants.collect {|const_name| const_get(const_name)}.select {|const| const.class == Class}
11
- end
12
-
13
- alias :submodules :modules
14
- alias :subclasses :classes
15
-
16
- end
@@ -1,250 +0,0 @@
1
- class Object
2
-
3
- # The hidden singleton lurks behind everyone
4
- def metaclass; class << self; self; end; end
5
-
6
- # extend the metaclass with an instance eval
7
- def meta_eval &blk; metaclass.instance_eval &blk; end
8
-
9
- # Adds methods to a metaclass
10
- def meta_def name, &blk
11
- meta_eval { define_method name, &blk }
12
- end
13
-
14
- # Defines an instance method within a class
15
- def class_def name, &blk
16
- class_eval { define_method name, &blk }
17
- end
18
-
19
- # constantize object
20
- def constantize
21
- camel_cased_word= self.to_s
22
- names = camel_cased_word.split('::')
23
- names.shift if names.empty? || names.first.empty?
24
-
25
- constant = Object
26
- names.each do |name|
27
- constant = constant.const_defined?(name, false) ? constant.const_get(name) : constant.const_missing(name)
28
- end
29
- constant
30
- end unless method_defined? :constantize
31
-
32
- # find and replace object in object
33
- def find_and_replace(input,*params)
34
- params=Hash[*params]
35
- # some default values
36
- begin
37
- #None!
38
- end
39
- # Do the find and replace
40
- begin
41
-
42
- if input.class == Array
43
- input.count.times do |counter|
44
- params.each do |key,value|
45
- input[counter]= input[counter].gsub(key,value)
46
- end
47
- end
48
- elsif input.class == String
49
- params.each do |key,value|
50
- input= input.gsub(key,value)
51
- end
52
- elsif input.class == Integer
53
- params.each do |key,value|
54
- input= input.to_s.gsub(key,value).to_i
55
- end
56
- elsif input.class == Float
57
- params.each do |key,value|
58
- input= input.to_s.gsub(key,value).to_f
59
- end
60
- end
61
-
62
- # return value
63
- return input
64
- end
65
- end
66
-
67
- # each for any object
68
- def each_universal(&block)
69
- case self.class.to_s.downcase
70
- when "hash"
71
- self.each do |key,value|
72
- block.call(key,value)
73
- end
74
- when "array"
75
- self.each do |one_element|
76
- block.call(self.index(one_element),one_element)
77
- end
78
- else
79
- block.call nil,self
80
- end
81
- end
82
-
83
- # map an object => experiment
84
- def map_object(symbol_key="$type")
85
-
86
- stage = self
87
- do_later = Hash.new
88
- samples = Hash.new
89
- relations = Hash.new
90
- main_object = nil
91
-
92
- loop do
93
-
94
- # processing
95
- begin
96
-
97
- tmp_key = String.new
98
- tmp_hash= Hash.new
99
- stage.each_universal do |key,value|
100
-
101
- if value.class.to_s.downcase == "string"
102
-
103
- if key== symbol_key
104
- tmp_key= value
105
- main_object ||= value
106
- else
107
- tmp_hash[key]= value
108
- end
109
-
110
- else
111
-
112
- value.each_universal do |key_sub,value_sub|
113
- if key_sub == symbol_key && tmp_key != String.new
114
- child_property = Hash.new
115
- child_property['type']= value_sub
116
- child_property['class']= value.class.to_s
117
- relations[tmp_key]= child_property
118
- end
119
- do_later[key_sub]= value_sub
120
- end
121
-
122
- end
123
- end
124
-
125
- if tmp_key != String.new && tmp_hash != Hash.new
126
- samples[tmp_key]=tmp_hash
127
- end
128
-
129
- end
130
-
131
- # finish
132
- begin
133
- break if do_later == Hash.new
134
- stage= do_later
135
- do_later = Hash.new
136
- end
137
-
138
- end
139
-
140
- return {:samples => samples,
141
- :relations => relations,
142
- :main => main_object
143
- }
144
-
145
- end
146
-
147
- # is class?
148
- def class?
149
- self.class == Class
150
- end
151
-
152
- # convert class instance instance variables into a hash object
153
- def convert_to_hash
154
-
155
- unless self.class.class == Class
156
- raise NoMethodError, "undefined method `to_hash' for #{self.inspect}"
157
- end
158
-
159
- tmp_hash= Hash.new()
160
- self.instance_variables.each do|var|
161
- tmp_hash[var.to_s.delete("@")] = self.instance_variable_get(var)
162
- end
163
-
164
- return tmp_hash
165
-
166
- end
167
-
168
- # this will check that the class is
169
- # defined or not in the runtime memory
170
- def class_exists?
171
- klass = Module.const_get(self)
172
- return klass.is_a?(Class)
173
- rescue NameError
174
- return false
175
- end
176
-
177
- # This will convert a symbol or string and format to be a valid
178
- # constant name and create from it a class with instance attribute accessors
179
- # Best use is when you get raw data in string from external source
180
- # and you want make them class objects
181
- #
182
- # :hello_world.to_class(:test)
183
- # HelloWorld.to_class(:sup)
184
- # hw_var = HelloWorld.new
185
- # hw_var.sup = "Fine thanks!"
186
- # hw_var.test = 5
187
- #
188
- # puts hw_var.test
189
- #
190
- # #> produce 5 :Integer
191
- #
192
- # you can also use this formats
193
- # :HelloWorld , "hello.world",
194
- # "hello/world", "Hello::World",
195
- # "hello:world"...
196
- def to_class(*attributes)
197
-
198
- unless self.class == Symbol || self.class == String || self.class == Class
199
- raise ArgumentError, "object must be symbol or string to make able build class to it"
200
- end
201
-
202
- class_name= self.to_s
203
-
204
- unless self.class == Class
205
-
206
- class_name= class_name[0].upcase+class_name[1..class_name.length]
207
- %w[ _ . : / ].each do |one_sym|
208
-
209
- loop do
210
- index_nmb= class_name.index(one_sym)
211
- break if index_nmb.nil?
212
- class_name[index_nmb..index_nmb+1]= class_name[index_nmb+1].upcase
213
- end
214
-
215
- end
216
-
217
- end
218
-
219
- create_attribute = Proc.new do |*args|
220
-
221
- end
222
-
223
- unless class_name.class_exists?
224
-
225
- Object.const_set(
226
- class_name,
227
- Class.new
228
- )
229
-
230
- end
231
-
232
-
233
- class_name.constantize.class_eval do
234
- attributes.each do |one_attribute|
235
- attr_accessor one_attribute.to_s.to_sym
236
- end
237
- end
238
-
239
-
240
-
241
- return true
242
-
243
- end
244
-
245
- alias :create_attributes :to_class
246
- alias :map_sample :map_object
247
- alias :each_univ :each_universal
248
- alias :fnr :find_and_replace
249
-
250
- end
@@ -1,27 +0,0 @@
1
- class Proc
2
-
3
- # sugar syntax for proc * operator
4
- # a = ->(x){x+1}
5
- # b = ->(x){x*10}
6
- # c = b*a
7
- # c.call(1) #=> 20
8
- def *(other)
9
- Proc.new { |*args| self[*other[*args]] }
10
- end unless method_defined? :*
11
-
12
- def call_with_binding(bind, *args)
13
- Bindless.new([bind]).run_proc(self, *args)
14
- end
15
-
16
- def call_with_obj(obj, *args)
17
- m = nil
18
- p = self
19
- Object.class_eval do
20
- define_method :a_temp_method_name, &p
21
- m = instance_method :a_temp_method_name
22
- remove_method :a_temp_method_name
23
- end
24
- m.bind(obj).call(*args)
25
- end
26
-
27
- end
@@ -1,14 +0,0 @@
1
- module Process
2
- def self.daemonize
3
- File.create Application.pid,'a+'
4
- File.create Application.log,'a+'
5
- File.create Application.daemon_stderr,'a+'
6
- Daemon.start fork,
7
- Application.pid,
8
- Application.log,
9
- Application.daemon_stderr
10
- end
11
- def self.stop
12
- Daemon.stop
13
- end
14
- end
@@ -1,39 +0,0 @@
1
- class RND
2
- class << self
3
- def string(length= 7,amount=1,hyphen= " ")
4
- amount_container= Array.new
5
- amount.times do
6
- mrg= String.new
7
- mrg= (0...length).map{ ('a'..'z').to_a[rand(26)] }.join
8
- amount_container.push mrg
9
- end
10
- return amount_container.join(hyphen)
11
- end
12
- def integer(length= 3)
13
- Random.rand(length)
14
- end
15
- def boolean
16
- rand(2) == 1
17
- end
18
- def time from = Time.at(1114924812), to = Time.now
19
- rand(from..to)
20
- end
21
- def date from = Time.at(1114924812), to = Time.now
22
- rand(from..to).to_date
23
- end
24
- def datetime from = Time.at(1114924812), to = Time.now
25
- rand(from..to).to_datetime
26
- end
27
- end
28
- end
29
-
30
- # alias in Random from RND
31
- begin
32
- (RND.singleton_methods-Object.singleton_methods).each do |one_method_sym|
33
- Random.class_eval do
34
- define_singleton_method one_method_sym do |*args|
35
- RND.__send__(one_method_sym,*args)
36
- end
37
- end
38
- end
39
- end
@@ -1,78 +0,0 @@
1
- class String
2
-
3
- # Find string in othere string
4
- def positions(oth_string)
5
-
6
- special_chrs=%w[# _ & < > @ $ . , -]+[*(0..9)]+[*("A".."Z")]+[*("a".."z")]
7
- loop do
8
- if oth_string.include? special_chrs[0]
9
- special_chrs.shift
10
- else
11
- break
12
- end
13
- end
14
-
15
- string=self
16
- return_array = Array.new
17
- loop do
18
- break if string.index(oth_string).nil?
19
- range_value= ((string.index(oth_string))..(string.index(oth_string)+oth_string.length-1))
20
- return_array.push range_value
21
- [*range_value].each do |one_index|
22
- string[one_index]= special_chrs[0]
23
- end
24
- end
25
-
26
- # return value
27
- return return_array
28
- end
29
-
30
- # Standard in rails. See official documentation
31
- # [http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/String/Inflections.html]
32
- def camelize(first_letter = :upper)
33
- if first_letter == :upper
34
- gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase }
35
- else
36
- self[0..0].downcase + camelize[1..-1]
37
- end
38
- end unless method_defined? :camelize
39
-
40
- # Standard in rails. See official documentation
41
- # [http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/String/Inflections.html]
42
- def dasherize
43
- gsub(/_/, '-')
44
- end unless method_defined? :dasherize
45
-
46
- # Standard in rails. See official documentation
47
- # [http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/String/Inflections.html]
48
- def demodulize
49
- gsub(/^.*::/, '')
50
- end unless method_defined? :demodulize
51
-
52
- # Standard in rails. See official documentation
53
- # [http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/String/Inflections.html]
54
- def underscore
55
- gsub(/::/, '/').
56
- gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
57
- gsub(/([a-z\d])([A-Z])/,'\1_\2').
58
- tr("-", "_").
59
- downcase
60
- end unless method_defined? :underscore
61
-
62
- # Check that instance of String is start with an upper case or not
63
- def capitalized?
64
- self.match(/^[[:upper:]]/) ? true : false
65
- end
66
-
67
- # return the number how often the str is with in the self
68
- # by default with \b regex border
69
- def frequency(str)
70
- begin
71
- if str.class == String
72
- str= '\b'+str+'\b'
73
- end
74
- end
75
- self.scan(/#{str}/).count
76
- end
77
-
78
- end
@@ -1,11 +0,0 @@
1
- require 'yaml'
2
- module YAML
3
- def self.save_file(file_path,config_hash)
4
- File.open(file_path, 'w+') {|f| f.write(config_hash.to_yaml) }
5
- end
6
-
7
- def self.load_file(file_path)
8
- YAML.load(File.open(file_path))
9
- end
10
- end
11
-