procemon 0.1.1 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.3
@@ -1,7 +1,11 @@
1
1
  class Object
2
- def get_binding
2
+
3
+ def binding?
3
4
  return binding
4
5
  end
6
+
7
+ alias :get_binding :binding?
8
+
5
9
  end
6
10
 
7
11
  class Array
@@ -1,4 +1,6 @@
1
1
  class File
2
+
3
+ # create a file, if not exsist create file, and dir if needed
2
4
  def self.create(route_name ,filemod="w",string_data=String.new)
3
5
  begin
4
6
 
@@ -45,4 +47,25 @@ class File
45
47
  puts ex
46
48
  end
47
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
+
48
71
  end
@@ -9,4 +9,40 @@ class Proc
9
9
  Proc.new { |*args| self[*other[*args]] }
10
10
  end unless method_defined? :*
11
11
 
12
+
13
+ # create a raw eval-able process source, so you can set
14
+ # the right bindings using the .to_proc call from String methods
15
+ @@source_cache= Hash.new
16
+ def source
17
+
18
+ # defaults
19
+ begin
20
+ return_string= String.new
21
+ block= 0
22
+ end
23
+
24
+ if @@source_cache.keys.include? self.object_id
25
+ return @@source_cache[self.object_id]
26
+ else
27
+ File.open(Dir.pwd.dup.concat(File::Separator).concat(self.source_location[0])
28
+ ).each_line_from self.source_location[1] do |line|
29
+
30
+ line.gsub!(/\bdo\b/,'{')
31
+ line.gsub!(/\bend\b/,'}')
32
+
33
+ block += line.frequency /{/
34
+ block -= line.frequency /}/
35
+
36
+ return_string.concat(line)
37
+ break if block == 0
38
+ end
39
+
40
+ return_string.sub!(/^[\w\W]*Proc.new\s*{/,'Proc.new{')
41
+ return_string.sub!(/}[^}]*$/,"}")
42
+ @@source_cache[self.object_id]= return_string
43
+ return return_string
44
+ end
45
+
46
+ end
47
+
12
48
  end
@@ -64,10 +64,32 @@ class String
64
64
  self.match(/^[[:upper:]]/) ? true : false
65
65
  end
66
66
 
67
- end
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
+ # create process object from valid process string
79
+ def to_proc(binding=nil)
80
+ begin
81
+
82
+ if !self.include?('Proc.new') && !self.include?('lambda')
83
+ raise ArgumentError, "string obj is not a valid process source"
84
+ end
68
85
 
69
- =begin
86
+ if binding.nil?
87
+ return eval(self)
88
+ else
89
+ return eval(self,binding)
90
+ end
70
91
 
71
- /\b[A-Z]\w*/ #> this is for find capitalized words
92
+ end
93
+ end
72
94
 
73
- =end
95
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: procemon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-12-04 00:00:00.000000000 Z
12
+ date: 2013-12-20 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: ! 'This is a collection of my Ruby Procs in the adventure of becoming
15
15
  the best! In short this provides extra tools in Application configs, argumens processing,daemonise,