bel 0.3.0.beta1-x64-mingw32

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.
@@ -0,0 +1,21 @@
1
+ # vim: ts=2 sw=2:
2
+ module BEL
3
+ module Features
4
+
5
+ # check for rdf support
6
+ begin
7
+ require 'rdf'
8
+ require 'addressable/uri'
9
+ require 'uuid'
10
+ @@rdf_support = true
11
+ rescue LoadError => e
12
+ # exceptional condition; missing non-optional or downstream deps
13
+ @@rdf_support = false
14
+ raise unless e.message =~ /rdf/ or e.message =~ /addressable/
15
+ end
16
+
17
+ def self.rdf_support?
18
+ @@rdf_support
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,201 @@
1
+ module LibBEL
2
+
3
+ class << self
4
+
5
+ def rubinius?
6
+ defined?(RUBY_ENGINE) && ("rbx" == RUBY_ENGINE)
7
+ end
8
+
9
+ # @api_private
10
+ # Determine FFI constant for this ruby engine.
11
+ def find_ffi
12
+ if rubinius?
13
+ # Use ffi gem instead of rubinius-bundled FFI
14
+ # Rubinius 2.5.2 does not seem to support FFI::ManagedStruct
15
+ require "ffi"
16
+ ::FFI
17
+ else # mri, jruby, etc
18
+ require "ffi"
19
+ ::FFI
20
+ end
21
+ end
22
+
23
+ # @api_private
24
+ # Extend with the correct ffi implementation.
25
+ def load_ffi
26
+ ffi_module = LibBEL::find_ffi
27
+ extend ffi_module::Library
28
+ ffi_module
29
+ end
30
+
31
+ # @api_private
32
+ # Loads the libkyotocabinet shared library.
33
+ def load_libBEL
34
+ ffi_module = find_ffi
35
+ extend ffi_module::Library
36
+
37
+ # libbel.so: Linux and MinGW
38
+ # libbel.bundle: Mac OSX
39
+ messages = []
40
+ library_loaded = ['libbel.so', 'libbel.bundle'].map { |library_file|
41
+ File.join(
42
+ File.expand_path(File.dirname(__FILE__)),
43
+ library_file
44
+ )
45
+ }.any? do |library_path|
46
+ begin
47
+ ffi_lib library_path
48
+ true
49
+ rescue LoadError => exception
50
+ messages << exception.to_s
51
+ false
52
+ end
53
+ end
54
+
55
+ if !library_loaded
56
+ msg = messages.map { |msg| " #{msg}" }.join("\n")
57
+ fail LoadError.new("Failed to load libbel library. Details:\n#{msg}")
58
+ end
59
+ end
60
+ end
61
+
62
+ # Constant holding the FFI module for this ruby engine.
63
+ FFI = LibBEL::load_ffi
64
+ LibBEL::load_libBEL
65
+
66
+ # typedef enum bel_token_type
67
+ enum :bel_token_type, [
68
+ :IDENT, 0,
69
+ :STRING,
70
+ :O_PAREN,
71
+ :C_PAREN,
72
+ :COLON,
73
+ :COMMA,
74
+ :SPACES
75
+ ]
76
+
77
+ class BelToken < FFI::Struct
78
+
79
+ layout :type, :bel_token_type,
80
+ :pos_start, :int,
81
+ :pos_end, :int,
82
+ :value, :pointer
83
+
84
+ def type
85
+ self[:type]
86
+ end
87
+
88
+ def pos_start
89
+ self[:pos_start]
90
+ end
91
+
92
+ def pos_end
93
+ self[:pos_end]
94
+ end
95
+
96
+ def value
97
+ self[:value].read_string
98
+ end
99
+
100
+ def hash
101
+ [self.type, self.value, self.pos_start, self.pos_end].hash
102
+ end
103
+
104
+ def ==(other)
105
+ return false if other == nil
106
+ self.type == other.type && self.value == other.value &&
107
+ self.pos_start == other.pos_start && self.pos_end == other.pos_end
108
+ end
109
+
110
+ alias_method :eql?, :'=='
111
+ end
112
+
113
+ class BelTokenList < FFI::ManagedStruct
114
+ include Enumerable
115
+
116
+ layout :length, :int,
117
+ :tokens, BelToken.ptr
118
+
119
+ def each
120
+ if block_given?
121
+ iterator = LibBEL::bel_new_token_iterator(self.pointer)
122
+ while LibBEL::bel_token_iterator_end(iterator).zero?
123
+ current_token = LibBEL::bel_token_iterator_get(iterator)
124
+ yield LibBEL::BelToken.new(current_token)
125
+ LibBEL::bel_token_iterator_next(iterator)
126
+ end
127
+ LibBEL::free_bel_token_iterator(iterator)
128
+ else
129
+ enum_for(:each)
130
+ end
131
+ end
132
+
133
+ def token_at(position)
134
+ self.each_with_index { |tk, index|
135
+ if (tk.pos_start..tk.pos_end).include? position
136
+ return [tk, index]
137
+ end
138
+ }
139
+ nil
140
+ end
141
+
142
+ def self.release(ptr)
143
+ LibBEL::free_bel_token_list(ptr)
144
+ end
145
+ end
146
+
147
+ class BelTokenIterator < FFI::ManagedStruct
148
+ include Enumerable
149
+
150
+ layout :index, :int,
151
+ :list, :pointer,
152
+ :current_token, :pointer
153
+
154
+ def each
155
+ if self.null? or not LibBEL::bel_token_iterator_end(self).zero?
156
+ fail StopIteration, "bel_token_iterator reached end"
157
+ end
158
+
159
+ if block_given?
160
+ while LibBEL::bel_token_iterator_end(self.pointer).zero?
161
+ current_token = LibBEL::bel_token_iterator_get(self.pointer)
162
+ yield LibBEL::BelToken.new(current_token)
163
+ LibBEL::bel_token_iterator_next(self.pointer)
164
+ end
165
+ else
166
+ enum_for(:each)
167
+ end
168
+ end
169
+
170
+ def self.release(ptr)
171
+ LibBEL::free_bel_token_iterator(ptr)
172
+ end
173
+ end
174
+
175
+ attach_function :bel_new_token, [:bel_token_type, :pointer, :pointer, :pointer], :pointer
176
+ attach_function :bel_new_token_list, [:int ], :pointer
177
+ attach_function :bel_new_token_iterator, [:pointer ], :pointer
178
+ attach_function :bel_token_iterator_get, [:pointer ], :pointer
179
+ attach_function :bel_token_iterator_next, [:pointer ], :void
180
+ attach_function :bel_token_iterator_end, [:pointer ], :int
181
+ attach_function :bel_parse_term, [:string ], :pointer
182
+ attach_function :bel_tokenize_term, [:string ], :pointer
183
+ attach_function :bel_print_token, [:pointer ], :void
184
+ attach_function :bel_print_token_list, [:pointer ], :void
185
+ attach_function :free_bel_token, [:pointer ], :void
186
+ attach_function :free_bel_token_list, [:pointer ], :void
187
+ attach_function :free_bel_token_iterator, [:pointer ], :void
188
+
189
+ def self.tokenize_term(string)
190
+ LibBEL::BelTokenList.new(self.bel_tokenize_term(string))
191
+ end
192
+
193
+ def self.print_token(token)
194
+ self.bel_print_token(token.pointer)
195
+ end
196
+
197
+ def self.print_token_list(list)
198
+ self.bel_print_token_list(list.pointer)
199
+ end
200
+ end
201
+
Binary file
@@ -0,0 +1,125 @@
1
+ require 'digest'
2
+ require 'open-uri'
3
+ require 'pathname'
4
+ require 'tempfile'
5
+
6
+ module BEL
7
+
8
+ def self.read_all(reference)
9
+ if self.cached? reference
10
+ self.read_cached reference do |cf|
11
+ return cf.read
12
+ end
13
+ end
14
+
15
+ self.multi_open(reference) do |f|
16
+ content = f.read
17
+ self.write_cached reference, content
18
+ return content
19
+ end
20
+ end
21
+
22
+ def self.read_lines(reference)
23
+ if self.cached? reference
24
+ self.read_cached reference do |cf|
25
+ return cf.readlines
26
+ end
27
+ end
28
+
29
+ self.multi_open(reference) do |f|
30
+ content = f.read
31
+ self.write_cached reference, content
32
+ f.rewind
33
+ return f.readlines
34
+ end
35
+ end
36
+
37
+ private
38
+
39
+ def self.multi_open(reference)
40
+ if self.cached? reference
41
+ self.read_cached reference do |cf|
42
+ if block_given?
43
+ yield cf
44
+ else
45
+ return cf
46
+ end
47
+ end
48
+ return
49
+ end
50
+
51
+ if File.exists? reference
52
+ File.open(reference) do |f|
53
+ if block_given?
54
+ yield f
55
+ else
56
+ return f
57
+ end
58
+ end
59
+ elsif reference.start_with? 'file:'
60
+ File.open(URI(reference).path) do |f|
61
+ if block_given?
62
+ yield f
63
+ else
64
+ return f
65
+ end
66
+ end
67
+ else
68
+ open(reference) do |f|
69
+ if block_given?
70
+ yield f
71
+ else
72
+ return f
73
+ end
74
+ end
75
+ end
76
+ end
77
+
78
+ def self.cached?(identifier, options = {})
79
+ options = {
80
+ temp_dir: Dir::tmpdir
81
+ }.merge(options)
82
+ cached_name = cached_filename_for identifier
83
+ path = Pathname(options[:temp_dir]) + cached_name
84
+ File.exist? path
85
+ end
86
+
87
+ def self.read_cached(identifier, options = {})
88
+ options = {
89
+ temp_dir: Dir::tmpdir
90
+ }.merge(options)
91
+ cached_name = cached_filename_for identifier
92
+ path = Pathname(options[:temp_dir]) + cached_name
93
+ File.open(path, "r") do |f|
94
+ if block_given?
95
+ yield f
96
+ else
97
+ return f.read
98
+ end
99
+ end
100
+ path.to_s
101
+ end
102
+
103
+ def self.write_cached(identifier, data = '', options = {})
104
+ options = {
105
+ temp_dir: Dir::tmpdir
106
+ }.merge(options)
107
+ cached_name = cached_filename_for identifier
108
+ path = Pathname(options[:temp_dir]) + cached_name
109
+ File.open(path, "w") do |f|
110
+ if block_given?
111
+ yield f
112
+ else
113
+ f.write(data)
114
+ end
115
+ end
116
+ path.to_s
117
+ end
118
+
119
+ def self.cached_filename_for(identifier)
120
+ return nil unless identifier
121
+ "#{self.to_s}_#{Digest::SHA256.hexdigest identifier}"
122
+ end
123
+ end
124
+ # vim: ts=2 sw=2
125
+ # encoding: utf-8
metadata ADDED
@@ -0,0 +1,269 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bel
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0.beta1
5
+ prerelease: 6
6
+ platform: x64-mingw32
7
+ authors:
8
+ - Anthony Bargnesi
9
+ - Natalie Catlett
10
+ - Nick Bargnesi
11
+ - William Hayes
12
+ autorequire:
13
+ bindir: bin
14
+ cert_chain: []
15
+ date: 2015-03-14 00:00:00.000000000 Z
16
+ dependencies:
17
+ - !ruby/object:Gem::Dependency
18
+ name: ffi
19
+ requirement: !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ~>
23
+ - !ruby/object:Gem::Version
24
+ version: '1.9'
25
+ type: :runtime
26
+ prerelease: false
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: '1.9'
33
+ - !ruby/object:Gem::Dependency
34
+ name: uuid
35
+ requirement: !ruby/object:Gem::Requirement
36
+ none: false
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '2.3'
41
+ type: :development
42
+ prerelease: false
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ none: false
45
+ requirements:
46
+ - - ~>
47
+ - !ruby/object:Gem::Version
48
+ version: '2.3'
49
+ - !ruby/object:Gem::Dependency
50
+ name: addressable
51
+ requirement: !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: '2.3'
57
+ type: :development
58
+ prerelease: false
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ~>
63
+ - !ruby/object:Gem::Version
64
+ version: '2.3'
65
+ - !ruby/object:Gem::Dependency
66
+ name: rdf
67
+ requirement: !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ~>
71
+ - !ruby/object:Gem::Version
72
+ version: '1.1'
73
+ type: :development
74
+ prerelease: false
75
+ version_requirements: !ruby/object:Gem::Requirement
76
+ none: false
77
+ requirements:
78
+ - - ~>
79
+ - !ruby/object:Gem::Version
80
+ version: '1.1'
81
+ - !ruby/object:Gem::Dependency
82
+ name: bundler
83
+ requirement: !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ~>
87
+ - !ruby/object:Gem::Version
88
+ version: '1.7'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ none: false
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: '1.7'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ none: false
101
+ requirements:
102
+ - - ~>
103
+ - !ruby/object:Gem::Version
104
+ version: '10.4'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ none: false
109
+ requirements:
110
+ - - ~>
111
+ - !ruby/object:Gem::Version
112
+ version: '10.4'
113
+ - !ruby/object:Gem::Dependency
114
+ name: rake-compiler
115
+ requirement: !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ~>
119
+ - !ruby/object:Gem::Version
120
+ version: '0.9'
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: !ruby/object:Gem::Requirement
124
+ none: false
125
+ requirements:
126
+ - - ~>
127
+ - !ruby/object:Gem::Version
128
+ version: '0.9'
129
+ - !ruby/object:Gem::Dependency
130
+ name: rspec
131
+ requirement: !ruby/object:Gem::Requirement
132
+ none: false
133
+ requirements:
134
+ - - ~>
135
+ - !ruby/object:Gem::Version
136
+ version: '3.2'
137
+ type: :development
138
+ prerelease: false
139
+ version_requirements: !ruby/object:Gem::Requirement
140
+ none: false
141
+ requirements:
142
+ - - ~>
143
+ - !ruby/object:Gem::Version
144
+ version: '3.2'
145
+ - !ruby/object:Gem::Dependency
146
+ name: yard
147
+ requirement: !ruby/object:Gem::Requirement
148
+ none: false
149
+ requirements:
150
+ - - ~>
151
+ - !ruby/object:Gem::Version
152
+ version: '0.8'
153
+ type: :development
154
+ prerelease: false
155
+ version_requirements: !ruby/object:Gem::Requirement
156
+ none: false
157
+ requirements:
158
+ - - ~>
159
+ - !ruby/object:Gem::Version
160
+ version: '0.8'
161
+ - !ruby/object:Gem::Dependency
162
+ name: rdoc
163
+ requirement: !ruby/object:Gem::Requirement
164
+ none: false
165
+ requirements:
166
+ - - ~>
167
+ - !ruby/object:Gem::Version
168
+ version: '4.2'
169
+ type: :development
170
+ prerelease: false
171
+ version_requirements: !ruby/object:Gem::Requirement
172
+ none: false
173
+ requirements:
174
+ - - ~>
175
+ - !ruby/object:Gem::Version
176
+ version: '4.2'
177
+ description: ! ' The BEL gem allows the reading, writing, and processing of BEL (Biological
178
+ Expression Language) with a natural DSL. '
179
+ email:
180
+ - abargnesi@selventa.com
181
+ - ncatlett@selventa.com
182
+ - nbargnesi@selventa.com
183
+ - whayes@selventa.com
184
+ executables:
185
+ - bel_summarize
186
+ - bel_rdfschema
187
+ - bel_upgrade_term
188
+ - bel2rdf
189
+ - bel_parse
190
+ - bel_compare
191
+ - bel_upgrade
192
+ extensions: []
193
+ extra_rdoc_files: []
194
+ files:
195
+ - lib/util.rb
196
+ - lib/libbel.rb
197
+ - lib/bel/quoting.rb
198
+ - lib/bel/rdf.rb
199
+ - lib/bel/completion.rb
200
+ - lib/bel/completion_rule.rb
201
+ - lib/bel/script.rb
202
+ - lib/bel/language.rb
203
+ - lib/bel/namespace.rb
204
+ - lib/features.rb
205
+ - lib/bel.rb
206
+ - ext/mri/bel-token.c
207
+ - ext/mri/bel-ast.c
208
+ - ext/mri/bel-tokenize-term.c
209
+ - ext/mri/libbel.c
210
+ - ext/mri/bel-parser.c
211
+ - ext/mri/bel-parse-statement.c
212
+ - ext/mri/bel-parse-term.c
213
+ - ext/mri/bel-node-stack.c
214
+ - ext/mri/bel-token.h
215
+ - ext/mri/bel-node-stack.h
216
+ - ext/mri/bel-parser.h
217
+ - ext/mri/bel-ast.h
218
+ - ext/mri/libbel.def
219
+ - bel.gemspec
220
+ - LICENSE
221
+ - INSTALL.md
222
+ - INSTALL_RUBY.md
223
+ - README.md
224
+ - bin/bel_summarize
225
+ - bin/bel_rdfschema
226
+ - bin/bel_upgrade_term
227
+ - bin/bel2rdf
228
+ - bin/bel_parse
229
+ - bin/bel_compare
230
+ - bin/bel_upgrade
231
+ - ext/mri/extconf.rb
232
+ - lib/libbel.so
233
+ homepage: https://github.com/OpenBEL/bel.rb
234
+ licenses:
235
+ - Apache-2.0
236
+ post_install_message:
237
+ rdoc_options:
238
+ - --title
239
+ - BEL Ruby Documentation
240
+ - --main
241
+ - README.md
242
+ - --line-numbers
243
+ - --exclude
244
+ - lib/bel/script.rb
245
+ - README.md
246
+ - INSTALL.md
247
+ - INSTALL_RUBY.md
248
+ - LICENSE
249
+ require_paths:
250
+ - lib
251
+ required_ruby_version: !ruby/object:Gem::Requirement
252
+ none: false
253
+ requirements:
254
+ - - ! '>='
255
+ - !ruby/object:Gem::Version
256
+ version: 1.9.2
257
+ required_rubygems_version: !ruby/object:Gem::Requirement
258
+ none: false
259
+ requirements:
260
+ - - ! '>'
261
+ - !ruby/object:Gem::Version
262
+ version: 1.3.1
263
+ requirements: []
264
+ rubyforge_project:
265
+ rubygems_version: 1.8.23.2
266
+ signing_key:
267
+ specification_version: 3
268
+ summary: Process BEL with ruby.
269
+ test_files: []