tgf 1.0.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.
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