obo_parser 0.1.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.
- data/.document +5 -0
- data/.gitignore +21 -0
- data/LICENSE +20 -0
- data/README +13 -0
- data/README.rdoc +17 -0
- data/Rakefile +53 -0
- data/VERSION +1 -0
- data/init.rb +1 -0
- data/install.rb +1 -0
- data/lib/lexer.rb +59 -0
- data/lib/obo_file.rb +106 -0
- data/lib/parser.rb +53 -0
- data/lib/tokens.rb +160 -0
- data/obo_parser.gemspec +61 -0
- data/tasks/obo_parser_tasks.rake +4 -0
- data/test/cell.obo +5867 -0
- data/test/obo_1.0_test.txt +12582 -0
- data/test/obo_1.0_test_wo_typedefs.txt +12561 -0
- data/test/test_obo_parser.rb +109 -0
- data/uninstall.rb +1 -0
- metadata +83 -0
@@ -0,0 +1,109 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'rubygems'
|
3
|
+
require 'ruby-debug'
|
4
|
+
|
5
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '../lib/obo_file'))
|
6
|
+
|
7
|
+
class OboParserTest < Test::Unit::TestCase
|
8
|
+
def test_truth
|
9
|
+
assert true
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class Test_OboFileBuilder < Test::Unit::TestCase
|
14
|
+
def test_builder
|
15
|
+
b = OboFile::OboFileBuilder.new
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
class Test_Regex < Test::Unit::TestCase
|
21
|
+
|
22
|
+
def test_comment_stripping
|
23
|
+
# hackish, likely will fail with complex combinations of "!"
|
24
|
+
txt = "line without note\nBegin taxa; ! comment\n! not this line\n'this ok!'\n\"this too!!\""
|
25
|
+
r2 = Regexp.new(/(\s*?![^!'"]*?\n)/i)
|
26
|
+
assert_equal "line without note\nBegin taxa;\n\n'this ok!'\n\"this too!!\"" , txt.gsub(r2, "\n")
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
class Test_Lexer < Test::Unit::TestCase
|
31
|
+
|
32
|
+
def test_term
|
33
|
+
lexer = OboFile::Lexer.new("[Term]")
|
34
|
+
assert lexer.pop(OboFile::Tokens::Term)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_end_of_file
|
38
|
+
lexer = OboFile::Lexer.new(" \n\n")
|
39
|
+
assert lexer.pop(OboFile::Tokens::EndOfFile)
|
40
|
+
|
41
|
+
lexer = OboFile::Lexer.new("\n")
|
42
|
+
assert lexer.pop(OboFile::Tokens::EndOfFile)
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_parse_term_stanza
|
46
|
+
input = '
|
47
|
+
id: PATO:0000015
|
48
|
+
name: color hue
|
49
|
+
def: "A chromatic scalar-circular quality inhering in an object that manifests in an observer by virtue of the dominant wavelength of the visible light; may be subject to fiat divisions, typically into 7 or 8 spectra." [PATOC:cjm]
|
50
|
+
subset: attribute_slim
|
51
|
+
is_a: PATO:0001301'
|
52
|
+
lexer = OboFile::Lexer.new(input)
|
53
|
+
assert t = lexer.pop(OboFile::Tokens::TagValuePair)
|
54
|
+
assert_equal 'id', t.tag
|
55
|
+
assert_equal 'PATO:0000015', t.value
|
56
|
+
|
57
|
+
assert t = lexer.pop(OboFile::Tokens::TagValuePair)
|
58
|
+
assert_equal 'name', t.tag
|
59
|
+
assert_equal 'color hue', t.value
|
60
|
+
|
61
|
+
assert t = lexer.pop(OboFile::Tokens::TagValuePair)
|
62
|
+
assert_equal 'def', t.tag
|
63
|
+
assert_equal '"A chromatic scalar-circular quality inhering in an object that manifests in an observer by virtue of the dominant wavelength of the visible light; may be subject to fiat divisions, typically into 7 or 8 spectra." [PATOC:cjm]', t.value
|
64
|
+
|
65
|
+
assert t = lexer.pop(OboFile::Tokens::TagValuePair)
|
66
|
+
assert_equal 'subset', t.tag
|
67
|
+
assert_equal 'attribute_slim', t.value
|
68
|
+
|
69
|
+
assert t = lexer.pop(OboFile::Tokens::TagValuePair)
|
70
|
+
assert_equal 'is_a', t.tag
|
71
|
+
assert_equal 'PATO:0001301', t.value
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
def test_parse_term
|
76
|
+
lexer = OboFile::Lexer.new("[Term]")
|
77
|
+
assert lexer.pop(OboFile::Tokens::Term)
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_tagvaluepair
|
81
|
+
lexer = OboFile::Lexer.new("id: PATO:0000179")
|
82
|
+
assert lexer.pop(OboFile::Tokens::TagValuePair)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
class Test_Parser < Test::Unit::TestCase
|
87
|
+
def setup
|
88
|
+
@of = File.read(File.expand_path(File.join(File.dirname(__FILE__), '../test/obo_1.0_test.txt')) )
|
89
|
+
end
|
90
|
+
|
91
|
+
def test_file_parsing
|
92
|
+
foo = parse_obo_file(@of)
|
93
|
+
assert_equal 'pato', foo.terms[0].name
|
94
|
+
assert_equal 'quality', foo.terms[1].name
|
95
|
+
assert_equal 'part_of', foo.typedefs.last.name
|
96
|
+
assert_equal 'OBO_REL:part_of', foo.typedefs.last.id
|
97
|
+
end
|
98
|
+
|
99
|
+
def teardown
|
100
|
+
@of = nil
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_file_completes_without_typedefs
|
104
|
+
@of2 = File.read(File.expand_path(File.join(File.dirname(__FILE__), '../test/obo_1.0_test_wo_typedefs.txt')) )
|
105
|
+
assert foo = parse_obo_file(@of2)
|
106
|
+
end
|
107
|
+
|
108
|
+
end
|
109
|
+
|
data/uninstall.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
# Uninstall hook code here
|
metadata
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: obo_parser
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 1
|
8
|
+
- 0
|
9
|
+
version: 0.1.0
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- mjy
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-03-17 00:00:00 -04:00
|
18
|
+
default_executable:
|
19
|
+
dependencies: []
|
20
|
+
|
21
|
+
description: "Provides all-in-one object containing the contents of an OBO formatted file. OBO version 1.2 is targeted, though this should work for 1.0. "
|
22
|
+
email: diapriid@gmail.com
|
23
|
+
executables: []
|
24
|
+
|
25
|
+
extensions: []
|
26
|
+
|
27
|
+
extra_rdoc_files:
|
28
|
+
- LICENSE
|
29
|
+
- README
|
30
|
+
- README.rdoc
|
31
|
+
files:
|
32
|
+
- .document
|
33
|
+
- .gitignore
|
34
|
+
- LICENSE
|
35
|
+
- README
|
36
|
+
- README.rdoc
|
37
|
+
- Rakefile
|
38
|
+
- VERSION
|
39
|
+
- init.rb
|
40
|
+
- install.rb
|
41
|
+
- lib/lexer.rb
|
42
|
+
- lib/obo_file.rb
|
43
|
+
- lib/parser.rb
|
44
|
+
- lib/tokens.rb
|
45
|
+
- obo_parser.gemspec
|
46
|
+
- tasks/obo_parser_tasks.rake
|
47
|
+
- test/cell.obo
|
48
|
+
- test/obo_1.0_test.txt
|
49
|
+
- test/obo_1.0_test_wo_typedefs.txt
|
50
|
+
- test/test_obo_parser.rb
|
51
|
+
- uninstall.rb
|
52
|
+
has_rdoc: true
|
53
|
+
homepage: http://github.com/mjy/obo_parser
|
54
|
+
licenses: []
|
55
|
+
|
56
|
+
post_install_message:
|
57
|
+
rdoc_options:
|
58
|
+
- --charset=UTF-8
|
59
|
+
require_paths:
|
60
|
+
- lib
|
61
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
segments:
|
66
|
+
- 0
|
67
|
+
version: "0"
|
68
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
segments:
|
73
|
+
- 0
|
74
|
+
version: "0"
|
75
|
+
requirements: []
|
76
|
+
|
77
|
+
rubyforge_project:
|
78
|
+
rubygems_version: 1.3.6
|
79
|
+
signing_key:
|
80
|
+
specification_version: 3
|
81
|
+
summary: A simple OBO file handler.
|
82
|
+
test_files:
|
83
|
+
- test/test_obo_parser.rb
|