adsl 0.0.2

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.
data/lib/util/util.rb ADDED
@@ -0,0 +1,110 @@
1
+ require 'set'
2
+ require 'open3'
3
+ require 'thread'
4
+
5
+ class String
6
+ def increment_suffix
7
+ suffix = scan(/_\d+$/).first
8
+ if suffix.nil?
9
+ return self + "_2"
10
+ else
11
+ return self[0, self.length - suffix.length] + '_' + (suffix.to_i + 1).to_s
12
+ end
13
+ end
14
+ end
15
+
16
+ class Time
17
+ def self.time_execution
18
+ pre = Time.now
19
+ yield
20
+ ((Time.now - pre)*1000).to_i
21
+ end
22
+ end
23
+
24
+ def container_for(*fields, &block)
25
+ raise ArgumentError, 'Field list empty' if fields.empty?
26
+
27
+ all_fields = Set.new(fields)
28
+ if methods.include? "container_for_fields"
29
+ all_fields.merge send(:container_for_fields)
30
+ end
31
+ singleton_class = (class << self; self; end)
32
+ singleton_class.send :define_method, :container_for_fields, lambda{all_fields}
33
+
34
+ attr_accessor *fields
35
+
36
+ self.send(:define_method, :initialize) do |*options|
37
+ options = options.empty? ? {} : options[0]
38
+ options ||= {}
39
+ options_trimmed = Hash[options]
40
+
41
+ all_fields.each do |field|
42
+ instance_variable_set "@#{field}".to_sym, options_trimmed.delete(field.to_sym)
43
+ end
44
+ if block
45
+ instance_eval &block
46
+ elsif not options_trimmed.empty?
47
+ raise ArgumentError, "Undefined fields mentioned in initializer: #{options_trimmed.keys.map{ |key| ":#{key.to_s}"}.join(", ")}"
48
+ end
49
+ end
50
+
51
+ send :define_method, :recursively_gather do |method|
52
+ to_inspect = [self]
53
+ inspected = Set[]
54
+ while not to_inspect.empty?
55
+ elem = to_inspect.pop
56
+ inspected << elem
57
+ if elem.class.methods.include? 'container_for_fields'
58
+ elem.class.container_for_fields.each do |field|
59
+ field_val = elem.send(field)
60
+ next if field_val.nil?
61
+ [field_val].flatten.each do |subval|
62
+ to_inspect << subval unless inspected.include?(subval)
63
+ end
64
+ end
65
+ end
66
+ end
67
+ result = Set[]
68
+ inspected.each do |val|
69
+ result = result + [val.send(method)].flatten if val.class.method_defined?(method)
70
+ end
71
+ result.delete_if{ |a| a.nil? }.flatten
72
+ end
73
+ end
74
+
75
+ # returns stdout of the process that terminates first
76
+ # not completely thread safe; cannot be with 1.8.7
77
+ def process_race(*commands)
78
+ parent_thread = Thread.current
79
+ mutex = Mutex.new
80
+ children_threads = []
81
+ spawned_pids = []
82
+ result = nil
83
+ mutex.synchronize do
84
+ commands.each do |command|
85
+ children_threads << Thread.new do
86
+ begin
87
+ sleep 0.1
88
+ pipe = IO.popen command, 'r'
89
+ spawned_pids << pipe.pid
90
+ output = pipe.read
91
+ mutex.synchronize do
92
+ result = output if result.nil?
93
+ parent_thread.run
94
+ end
95
+ rescue => e
96
+ parent_thread.raise e unless e.message == 'die!'
97
+ end
98
+ end
99
+ end
100
+ end
101
+ Thread.stop
102
+ return result
103
+ ensure
104
+ children_threads.each do |child|
105
+ child.raise 'die!'
106
+ end
107
+ spawned_pids.each do |pid|
108
+ Process.kill 'HUP', pid
109
+ end
110
+ end
metadata ADDED
@@ -0,0 +1,185 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: adsl
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 2
10
+ version: 0.0.2
11
+ platform: ruby
12
+ authors:
13
+ - Ivan Bocic
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2013-03-01 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: rake
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 3
29
+ segments:
30
+ - 0
31
+ version: "0"
32
+ type: :development
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: test-unit
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ hash: 3
43
+ segments:
44
+ - 0
45
+ version: "0"
46
+ type: :development
47
+ version_requirements: *id002
48
+ - !ruby/object:Gem::Dependency
49
+ name: rex
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ hash: 3
57
+ segments:
58
+ - 0
59
+ version: "0"
60
+ type: :runtime
61
+ version_requirements: *id003
62
+ - !ruby/object:Gem::Dependency
63
+ name: racc
64
+ prerelease: false
65
+ requirement: &id004 !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ hash: 3
71
+ segments:
72
+ - 0
73
+ version: "0"
74
+ type: :runtime
75
+ version_requirements: *id004
76
+ - !ruby/object:Gem::Dependency
77
+ name: active_support
78
+ prerelease: false
79
+ requirement: &id005 !ruby/object:Gem::Requirement
80
+ none: false
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ hash: 3
85
+ segments:
86
+ - 0
87
+ version: "0"
88
+ type: :runtime
89
+ version_requirements: *id005
90
+ - !ruby/object:Gem::Dependency
91
+ name: colorize
92
+ prerelease: false
93
+ requirement: &id006 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ hash: 3
99
+ segments:
100
+ - 0
101
+ version: "0"
102
+ type: :runtime
103
+ version_requirements: *id006
104
+ - !ruby/object:Gem::Dependency
105
+ name: i18n
106
+ prerelease: false
107
+ requirement: &id007 !ruby/object:Gem::Requirement
108
+ none: false
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ hash: 3
113
+ segments:
114
+ - 0
115
+ version: "0"
116
+ type: :runtime
117
+ version_requirements: *id007
118
+ description: ADSL parses ADSL specification, translating it into Spass for verification
119
+ email:
120
+ - bo@cs.ucsb.edu
121
+ executables:
122
+ - adsl-verify
123
+ extensions: []
124
+
125
+ extra_rdoc_files: []
126
+
127
+ files:
128
+ - bin/adsl-verify
129
+ - lib/ds/data_store_spec.rb
130
+ - lib/parser/adsl_parser.rex
131
+ - lib/parser/adsl_parser.racc
132
+ - lib/parser/dsdl_parser.rex.rb
133
+ - lib/parser/adsl_ast.rb
134
+ - lib/parser/adsl_parser.tab.rb
135
+ - lib/parser/dsdl_parser.tab.rb
136
+ - lib/parser/adsl_parser.rex.rb
137
+ - lib/util/test_helper.rb
138
+ - lib/util/csv_hash_formatter.rb
139
+ - lib/util/util.rb
140
+ - lib/spass/util.rb
141
+ - lib/spass/spass_ds_extensions.rb
142
+ - lib/spass/ruby_extensions.rb
143
+ - lib/spass/bin.rb
144
+ - lib/spass/spass_translator.rb
145
+ - lib/fol/first_order_logic.rb
146
+ - LICENSE
147
+ - README.md
148
+ - Gemfile
149
+ homepage: http://cs.ucsb.edu/~bo/adsl/
150
+ licenses: []
151
+
152
+ post_install_message:
153
+ rdoc_options: []
154
+
155
+ require_paths:
156
+ - lib
157
+ required_ruby_version: !ruby/object:Gem::Requirement
158
+ none: false
159
+ requirements:
160
+ - - ~>
161
+ - !ruby/object:Gem::Version
162
+ hash: 57
163
+ segments:
164
+ - 1
165
+ - 8
166
+ - 7
167
+ version: 1.8.7
168
+ required_rubygems_version: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ hash: 3
174
+ segments:
175
+ - 0
176
+ version: "0"
177
+ requirements: []
178
+
179
+ rubyforge_project:
180
+ rubygems_version: 1.8.24
181
+ signing_key:
182
+ specification_version: 3
183
+ summary: A tool for parsing ADSL and translating it into Spass
184
+ test_files: []
185
+