tgf 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. checksums.yaml +7 -0
  2. data/.gemtest +0 -0
  3. data/Rakefile +8 -0
  4. data/lib/tgf.rb +43 -0
  5. data/test/test_tgf.rb +53 -0
  6. metadata +62 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 778b65f8f590c0ee1d45862fe2087033e450227c
4
+ data.tar.gz: b114f6d6fdf8dfbf56bec05d18927c3a1c154756
5
+ SHA512:
6
+ metadata.gz: ccafbf74c3dcb2af553044a5d5e43007100b062fedeb0f7effba37c262ca85c274ff0fc3ec609fbf59e279a168ffff1dd8e0f0f9ba496fe568b1b8fb85cc5a91
7
+ data.tar.gz: e8e5a7082ceff72e218d1621b3bfa807b35763c7f7594070c6376212dcb0a319f4be330fd448cb4b8a6da2137e715fe3dc20741698544dd395bbff60956ccafa
File without changes
@@ -0,0 +1,8 @@
1
+ require 'rake/testtask'
2
+
3
+ Rake::TestTask.new do |t|
4
+ t.libs << 'test'
5
+ end
6
+
7
+ desc "Run tests"
8
+ task :default => :test
@@ -0,0 +1,43 @@
1
+
2
+ ##
3
+ # A module to read the Trivial Graph Format
4
+
5
+ module TGF
6
+
7
+ class Node
8
+ def initialize line
9
+ match = /^(\S+)(?:\s+(.*))?$/.match line
10
+ @id, @label = match[1], match[2]
11
+ end
12
+ attr_reader :id, :label
13
+ end
14
+
15
+ class Edge
16
+ def initialize line
17
+ match = /^(\S+)\s+(\S+)(?:\s+(.*))?$/.match line
18
+ @from, @to, @label = match[1], match[2], match[3]
19
+ end
20
+ attr_reader :from, :to, :label
21
+ end
22
+
23
+ ##
24
+ # Parses a file using +each_line+ returning two values; an
25
+ # +Array+ of +TGF::Node+s and an +Array+ of +TGF::Edge+s.
26
+
27
+ def self.parse file, sep = $/
28
+ parsing_nodes, nodes, edges = true, [], []
29
+
30
+ file.each_line(sep) do |line|
31
+ line.chomp! sep
32
+ if line.strip == '#'
33
+ parsing_nodes = false
34
+ elsif parsing_nodes
35
+ nodes << Node.new(line)
36
+ else
37
+ edges << Edge.new(line)
38
+ end
39
+ end
40
+
41
+ return nodes, edges
42
+ end
43
+ end
@@ -0,0 +1,53 @@
1
+ require 'minitest/autorun'
2
+ require 'tgf'
3
+
4
+ class TGFTest < Minitest::Test
5
+ def test_simple
6
+ nodes, edges = TGF.parse "1\n2\n#\n1 2\n"
7
+ assert_equal 2, nodes.size
8
+ assert_equal 1, edges.size
9
+
10
+ assert_equal '1', nodes[0].id
11
+ assert_nil nodes[0].label
12
+
13
+ assert_equal '2', nodes[1].id
14
+ assert_nil nodes[1].label
15
+
16
+ assert_equal '1', edges[0].from
17
+ assert_equal '2', edges[0].to
18
+ assert_nil edges[0].label
19
+ end
20
+
21
+ def test_custom_separator
22
+ nodes, edges = TGF.parse '1;2;#;1 2;', ';'
23
+ assert_equal 2, nodes.size
24
+ assert_equal 1, edges.size
25
+
26
+ assert_equal '1', nodes[0].id
27
+ assert_nil nodes[0].label
28
+
29
+ assert_equal '2', nodes[1].id
30
+ assert_nil nodes[1].label
31
+
32
+ assert_equal '1', edges[0].from
33
+ assert_equal '2', edges[0].to
34
+ assert_nil edges[0].label
35
+ end
36
+
37
+ def test_node_label
38
+ nodes, edges = TGF.parse "1 hat\n"
39
+ assert_equal 1, nodes.size
40
+
41
+ assert_equal '1', nodes[0].id
42
+ assert_equal 'hat', nodes[0].label
43
+ end
44
+
45
+ def test_edge_label
46
+ nodes, edges = TGF.parse "#\n1 2 hat\n"
47
+ assert_equal 1, edges.size
48
+
49
+ assert_equal '1', edges[0].from
50
+ assert_equal '2', edges[0].to
51
+ assert_equal 'hat', edges[0].label
52
+ end
53
+ end
metadata ADDED
@@ -0,0 +1,62 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tgf
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Remis
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-04-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.9'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.9'
27
+ description: A gem for parsing Trivial Graph Format files or strings
28
+ email: remis.thoughts@gmail.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - ".gemtest"
34
+ - Rakefile
35
+ - lib/tgf.rb
36
+ - test/test_tgf.rb
37
+ homepage: https://github.com/remis-thoughts/tgf
38
+ licenses:
39
+ - Apache-2.0
40
+ metadata: {}
41
+ post_install_message:
42
+ rdoc_options: []
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ required_rubygems_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ requirements: []
56
+ rubyforge_project:
57
+ rubygems_version: 2.2.2
58
+ signing_key:
59
+ specification_version: 4
60
+ summary: Trivial Graph Format (TGF)
61
+ test_files:
62
+ - test/test_tgf.rb