bakeConv 1.1.1

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: de0d62b2e4b4cb0a0d2031a14bd2d7b06c2e1021
4
+ data.tar.gz: 355d0d8980667abe73f3796a29f8984ae5182259
5
+ SHA512:
6
+ metadata.gz: f2bd923915408545869109aaa1474f3e31726b07ba1e0ee5c313d82fc69cd687ecfb455c6ca8e2fdcaee5ac3fb327089196a9672bc13a8c41247d042ed259c04
7
+ data.tar.gz: 85000592bd3b112b6648bbb87ccc588c9696d3a0d636d8eb2d43b202f5a749ca46b8e60474c1d0d00372b52f4a7d1d8d588e18e8396fb92336680a2384e6e8de
data/bin/bakeConv ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # BakeConverter
4
+ # Author: Frauke Blossey
5
+ # 12.03.2015
6
+
7
+ require_relative '../lib/bakeConverter'
data/doc/doc.html ADDED
@@ -0,0 +1,44 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Documentation of bakeConv</title>
5
+ <style type="text/css">
6
+ #rundrum {
7
+ border-width:1px;
8
+ border-style:dashed;
9
+ border-color:blue;
10
+ padding:0.2cm;
11
+ text-align:justify; }
12
+ </style>
13
+ </head>
14
+
15
+ <body>
16
+
17
+ <h1>bakeConv</h1>
18
+ bake converter is used to convert from bake to some other file, e.g. CMake file, which depends on your template file.
19
+
20
+ <h2>GuideLines</h2>
21
+ <h3>Concepts</h3>
22
+ <ul>
23
+ <li><a href="concepts/configfile.html">The configuration file Converter.config</a>
24
+ <li><a href="concepts/templatefile.html">The template file</a>
25
+ </ul>
26
+
27
+ <h3>Command Line</h3>
28
+ <ul>
29
+ <li><a href="cmd/install.html">How to install bake converter</a>
30
+ <li><a href="cmd/usecmd.html">How to use bake converter on command line</a>
31
+ </ul>
32
+
33
+ <h3>Further readings</h3>
34
+ <ul>
35
+ <li><a href="further/change.html">Changelog</a>
36
+ </ul>
37
+
38
+ <p>
39
+ <hr>
40
+ <table width="100%" border="0"><tr><td align="left">Described bakeConv version: 1.0.2</td><td align="right">June 11, 2015</td></tr></table>
41
+
42
+
43
+ </body>
44
+ </html>
data/lib/Bake.rb ADDED
@@ -0,0 +1,101 @@
1
+ # Class Bake
2
+ # Author: Frauke Blossey
3
+ # 24.03.2015
4
+
5
+ require_relative 'Converter'
6
+
7
+ module BConv
8
+
9
+ # class ParserException < Exception
10
+ # end
11
+
12
+ class Bake
13
+
14
+ #enums
15
+ START_INFO = 1
16
+ END_INFO = 2
17
+ BEFORE_INFO = 3
18
+ VAR = 4
19
+
20
+ def initialize(map, setMock, configFile)
21
+ @map = map
22
+ @setMock = setMock
23
+ @configFile = configFile
24
+ end
25
+
26
+ def run
27
+ bakeLines = ''
28
+ cmd = @setMock ? ['ruby','C:/_dev/projects/bakeMock/bakeMock/bakeMock.rb'] : ['bake']
29
+ cmd << '-b' << @map['BuildConfig']
30
+ cmd << '-m' << @map['MainProj']
31
+ cmd << '-p' << @map['Proj2Convert']
32
+ cmd << '--conversion_info'
33
+ Util.strToArray('Workspace', @map).each { |w| cmd << '-w' << w }
34
+
35
+ Dir.chdir(File.dirname(@configFile)) do
36
+ bakeLines = `#{cmd.join(' ')}`
37
+ end
38
+
39
+ abort "Error while trying to call bake!" unless $?.success?
40
+ return bakeLines
41
+ end
42
+
43
+ def getHash(bakeLines)
44
+ b_hash = {}
45
+ key = ""
46
+ value = []
47
+ state = Bake::BEFORE_INFO
48
+
49
+ bakeLines.each_line do |line|
50
+ if line.start_with?(" ") && line[2] != " "
51
+ if state == Bake::VAR
52
+ value << line.strip if value != nil
53
+ value = line.strip if value == nil
54
+ b_hash.store(key,value)
55
+
56
+ end
57
+ elsif line.start_with?(" ") && line[1] != " "
58
+ if state == Bake::START_INFO || state == Bake::VAR
59
+ key = ""
60
+ value = []
61
+ key = line.strip
62
+ b_hash.store(key,value)
63
+
64
+ # if key != "BAKE_INCLUDES" && key != "BAKE_SOURCES" && key != "BAKE_DEFINES"
65
+ # state = Bake::START_INFO
66
+ # else
67
+ state = VAR
68
+ #end
69
+ end
70
+ #elsif line.start_with?("") && !line.match("START_INFO") && !line.match("END_INFO")
71
+ # puts "Error: Nothing else than START_INFO and END_INFO starting without blanks!"
72
+ else
73
+ if line.match("START_INFO") && line[0] != " "
74
+ # if state != Bake::BEFORE_INFO
75
+ # abort "Error!"
76
+ # end
77
+ state = Bake::START_INFO
78
+ elsif line.match("END_INFO")
79
+ state = Bake::END_INFO
80
+ end
81
+ end
82
+ end
83
+
84
+ if state != Bake::END_INFO
85
+ puts "Error: There is a problem with END_INFO. No output file could be generated!"
86
+ return nil
87
+ #raise ParseException.new("END_INFO missing")
88
+ end
89
+
90
+ # begin
91
+ # ...
92
+ # rescue ParseException
93
+ # exit(-1)
94
+ # end
95
+
96
+ return b_hash
97
+ end
98
+
99
+ end
100
+
101
+ end
@@ -0,0 +1,86 @@
1
+ # Class ConfigParser
2
+ # Author: Frauke Blossey
3
+ # 23.03.2015
4
+
5
+ module BConv
6
+
7
+ class ConfigParser
8
+
9
+ def initialize(filename, projToConvert)
10
+ @filename = filename
11
+ @projToConvert = projToConvert
12
+ end
13
+
14
+ def readConfig
15
+ begin
16
+ File.open(@filename) do |l|
17
+ mappings = []
18
+ mapForProj = {}
19
+ while(line = l.gets) != nil
20
+ mapping = {}
21
+ ar = []
22
+ setEndLabel = false
23
+ if line.match(/^Mapping/)
24
+ lineNumber = l.lineno
25
+ while(line = l.gets) != nil
26
+ line.gsub!('\\','/')
27
+ ar = line.split("=")
28
+ if (ar.length == 2)
29
+ comPos = ar[1].index("#")
30
+ ar[1] = ar[1][0..comPos-1] if comPos != nil
31
+ mapping.store(ar[0].strip,ar[1].strip)
32
+ elsif ar[1] == ""
33
+ mapping.store(ar[0].strip,"")
34
+ end
35
+
36
+ if line.match(/^}$/)
37
+ raise "Error: Workspace parameter from Mapping in line #{lineNumber} is missing!" if mapping.has_key?('Workspace') == false
38
+ raise "Error: MainProj parameter from Mapping in line #{lineNumber} is missing!" if mapping.has_key?('MainProj') == false
39
+ raise "Error: BuildConfig parameter from Mapping in line #{lineNumber} is missing!" if mapping.has_key?('BuildConfig') == false
40
+ raise "Error: Proj2Convert parameter from Mapping in line #{lineNumber} is missing!" if mapping.has_key?('Proj2Convert') == false
41
+ raise "Error: OutputFileName parameter from Mapping in line #{lineNumber} is missing!" if mapping.has_key?('OutputFileName') == false
42
+ raise "Error: TemplateFile parameter from Mapping in line #{lineNumber} is missing!" if mapping.has_key?('TemplateFile') == false
43
+
44
+ if @projToConvert != "" && @projToConvert != mapping['Proj2Convert']
45
+ mapping = {}
46
+ else
47
+ mappings << mapping
48
+ end
49
+
50
+ # if @projToConvert.length != 0
51
+ # @projToConvert.each do |val|
52
+ # if val == mapping['Proj2Convert']
53
+ # mappings << mapping
54
+ # end
55
+ # end
56
+ # else
57
+ # mappings << mapping
58
+ # end
59
+
60
+ setEndLabel = true
61
+ break
62
+ elsif line.include?("Mapping")
63
+ raise "Error: end label } from Mapping in line #{lineNumber} is missing!"
64
+ end
65
+ end
66
+ raise "Error: end label } from Mapping in line #{lineNumber} is missing!" if setEndLabel == false
67
+ elsif line.match(/^( *)Workspace/)
68
+ lineNumber = l.lineno
69
+ raise "Error: Mapping keyword in front of line #{lineNumber} is missing?"
70
+ end
71
+ end
72
+ return mappings
73
+ end
74
+ rescue Exception => e
75
+ puts e.message
76
+ #puts e.back_trace #for debug mode
77
+ abort
78
+ end
79
+ end
80
+
81
+ end
82
+
83
+ end
84
+
85
+
86
+
data/lib/Converter.rb ADDED
@@ -0,0 +1,123 @@
1
+ # Class Converter
2
+ # Author: Frauke Blossey
3
+ # 24.03.2015
4
+
5
+ require_relative 'Util'
6
+
7
+ module BConv
8
+
9
+ class Converter
10
+
11
+ def initialize(map, configFile)
12
+ @configFile = configFile
13
+ @map = map
14
+ end
15
+
16
+ def convert
17
+ outputfilename = Util.makeAbsolute(@map['OutputFileName'], @configFile)
18
+ templatefilename = Util.makeAbsolute(@map['TemplateFile'], @configFile)
19
+
20
+ lineIdx = 0
21
+ tmpLineIdx = 0
22
+ set = true
23
+ begin
24
+ File.open(outputfilename, 'w') do |fout|
25
+ File.open(templatefilename) do |fread|
26
+ File.readlines(fread).each do |line|
27
+ lineIdx += 1
28
+ wroteLine = false
29
+ @map.keys.each do |key|
30
+
31
+ if line.include?(key.to_s) && @map[key].include?(".txt")
32
+ preAndPostfix = line.scan(/(.*)\$\$\(#{key}\)(.*)/)
33
+ if preAndPostfix.length == 1
34
+ prefix = preAndPostfix[0][0]
35
+ postfix = preAndPostfix[0][1]
36
+ end
37
+
38
+ filename = Util.makeAbsolute(@map[key], @configFile)
39
+ raise "Error: Template file #{File.basename(filename)} is empty!" if File.zero?(filename)
40
+ raise "Error: File #{File.basename(filename)} does not exist!" if !File.exist?(filename)
41
+
42
+ File.open(filename) do |fr|
43
+ File.readlines(fr).each do |l|
44
+ tmpLineIdx += 1
45
+ @map.keys.each do |k|
46
+ wroteLine = findAndReplace(k, l, fout, prefix, postfix)
47
+ break if wroteLine == true
48
+ end
49
+ if wroteLine == false
50
+ l.strip!
51
+ l = prefix + l + postfix + "\n"
52
+ m = l.match(/\$\$\((.*)\)/)
53
+ if m
54
+ puts "Info: Key $$(#{m[1]}) in #{File.basename(filename)}, line #{tmpLineIdx.to_s} wasn\'t replaced!" if m
55
+ end
56
+ puts l
57
+ fout.write(l)
58
+ set = false
59
+ end
60
+ end
61
+ end
62
+ elsif (@map[key][0] == "[") && (@map[key][-1] == "]")
63
+ @map.store(key,Util.strToArray(key, @map))
64
+ wroteLine = findAndReplace(key, line, fout, "", "")
65
+ break
66
+ elsif line.match(/#{key.to_s}/)
67
+ wroteLine = findAndReplace(key, line, fout, "", "")
68
+ break
69
+ end
70
+ end
71
+
72
+ if wroteLine == false
73
+ if set == true
74
+ m = line.match(/\$\$\((.*)\)/)
75
+ if m
76
+ puts "Info: Key $$(#{m[1]}) in #{File.basename(templatefilename)}, line #{lineIdx.to_s} wasn\'t replaced!"
77
+ end
78
+ fout.write(line)
79
+ end
80
+ set = true
81
+ end
82
+ end
83
+ end
84
+ end
85
+ raise "Error: Output file #{File.basename(outputfilename)} is empty!" if File.zero?(outputfilename)
86
+ raise "Error: Template file #{File.basename(templatefilename)} is empty!" if File.zero?(templatefilename)
87
+ rescue Exception => e
88
+ puts e.message
89
+ puts e.backtrace
90
+ abort
91
+ end
92
+ end
93
+
94
+ def findAndReplace(key, line, fout, prefix, postfix)
95
+ wroteLine = false
96
+ found = line.scan(/(.*)\$\$\(#{key}\)(.*)/)
97
+
98
+ if found.length == 1
99
+ pre = found[0][0]
100
+ post = found[0][1]
101
+
102
+ if @map[key].kind_of?(Array)
103
+ @map[key].each do |val|
104
+ line = prefix + pre + val.to_s + post + postfix + "\n"
105
+ fout.write(line)
106
+ end
107
+ wroteLine = true
108
+ else
109
+ line = prefix + pre + @map[key] + post + postfix + "\n"
110
+ fout.write(line)
111
+ wroteLine = true
112
+ end
113
+ elsif line.include?("/\$\$\(#{key}\)/") && found.length == 0
114
+ line.gsub!(/\$\$\(#{key}\)/, @map[key].to_s)
115
+ fout.write(line)
116
+ wroteLine = true
117
+ end
118
+ return wroteLine
119
+ end
120
+
121
+ end
122
+
123
+ end
data/lib/File_ext.rb ADDED
@@ -0,0 +1,11 @@
1
+ # Class File (extended with 'isAbsolute' method)
2
+ # Author: Frauke Blossey
3
+ # 14.04.2015
4
+
5
+ class File
6
+
7
+ def self.isAbsolute?(filename)
8
+ File.expand_path(filename) == filename
9
+ end
10
+
11
+ end
data/lib/Help.rb ADDED
@@ -0,0 +1,22 @@
1
+ module BConv
2
+
3
+ require_relative 'Version'
4
+
5
+ class Help
6
+
7
+ def self.printHelp
8
+
9
+ puts "bakeConv #{BConv::Version.number}\n\n"
10
+ puts "Usage: bakeConv [options]"
11
+ puts "-f, --file <configFile> Config name for your conversion."
12
+ puts "[-p, --project] <projName> Project to convert (default are all projects mentioned in the config file).\n\n"
13
+ puts "-v, --version Print version."
14
+ puts "-h, --help Print this help."
15
+ puts "--show_doc Open documentation."
16
+ puts "--show_license Print the license."
17
+
18
+ end
19
+
20
+ end
21
+
22
+ end
data/lib/Util.rb ADDED
@@ -0,0 +1,21 @@
1
+ # Class Util (contains utility methods)
2
+ # Author: Frauke Blossey
3
+ # 15.04.2015
4
+
5
+ require_relative 'File_ext'
6
+
7
+ class Util
8
+
9
+ def self.makeAbsolute(file, configFile)
10
+ if File.isAbsolute?(file)
11
+ outputfilename = file
12
+ else
13
+ outputfilename = File.dirname(configFile) + "/" + file
14
+ end
15
+ end
16
+
17
+ def self.strToArray(key, map)
18
+ map[key][1..-2].split(",").map {|elem| elem.strip}
19
+ end
20
+
21
+ end
data/lib/Version.rb ADDED
@@ -0,0 +1,9 @@
1
+ module BConv
2
+
3
+ class Version
4
+ def self.number
5
+ "1.1.1"
6
+ end
7
+ end
8
+
9
+ end
@@ -0,0 +1,146 @@
1
+ # BakeConverter
2
+ # Author: Frauke Blossey
3
+ # 12.03.2015
4
+
5
+ require 'rubygems'
6
+ require 'launchy'
7
+ require_relative 'ConfigParser'
8
+ require_relative 'Bake'
9
+ require_relative 'Converter'
10
+ require_relative 'Version'
11
+ require_relative 'Help'
12
+
13
+ def main
14
+ #-------------------------------------------------------
15
+ # Get command line arguments:
16
+ #-------------------------------------------------------
17
+ converterConfigFile = ""
18
+ projToConvert = ""
19
+ setMock = false
20
+
21
+ begin
22
+ args = ARGV.select.each_with_index{|str, i| i.even? && str[0] == "-"}
23
+ opts = ARGV.select.each_with_index{|str, i| i.odd? && str[0] != "-"}
24
+
25
+ #puts Hash[(args.zip opts)]
26
+
27
+ if ARGV[0] != "--help" && ARGV[0] != "-h" && ARGV[0] != "--show_doc" && ARGV[0] != "--version" && ARGV[0] != "-v" && ARGV[0] != "--show_license" && ARGV[0] != "--mock"
28
+ if (!ARGV.include?("-f") && !ARGV.include?("--file")) && ARGV.length != 0
29
+ puts "Error: \'-f\' is missing! (try --help)"
30
+ exit(-1)
31
+ end
32
+ end
33
+
34
+ if ARGV.length == 1 && ARGV[0] != "--help" && ARGV[0] != "-h" && ARGV[0] != "--show_doc" && ARGV[0] != "--version" && ARGV[0] != "-v" && ARGV[0] != "--show_license" && ARGV[0] != "--mock"
35
+ puts "Error: Too less arguments! (try --help)"
36
+ puts "Config file is missing!" if opts[0] == nil
37
+ exit(-1)
38
+ elsif ARGV.length == 0 || (ARGV.length == 1 && ARGV[0] == "--mock")
39
+ puts "Error: Too less arguments! (try --help)"
40
+ exit(-1)
41
+ end
42
+
43
+ Hash[(args.zip opts)].each do |k,v|
44
+ case k
45
+ when "-f"
46
+ converterConfigFile = v
47
+ abort "Error: Config file is missing!" if converterConfigFile == nil
48
+ when "--file"
49
+ converterConfigFile = v
50
+ abort "Error: Config file is missing!" if converterConfigFile == nil
51
+ when "-p"
52
+ projToConvert = v
53
+ abort "Error: project is missing!" if projToConvert == nil
54
+ when "--project"
55
+ projToConvert = v
56
+ abort "Error: project is missing!" if projToConvert == nil
57
+ when "--mock"
58
+ setMock = true
59
+ when "--version"
60
+ puts "bakeConverter #{BConv::Version.number}"
61
+ exit(0)
62
+ when "-v"
63
+ puts "bakeConverter #{BConv::Version.number}"
64
+ exit(0)
65
+ when "--help"
66
+ BConv::Help.printHelp
67
+ exit(0)
68
+ when "-h"
69
+ BConv::Help.printHelp
70
+ exit(0)
71
+ when "--show_doc"
72
+ Launchy.open(File.expand_path("../doc/doc.html", File.dirname(__FILE__)))
73
+ exit(0)
74
+ when "--show_license"
75
+ puts
76
+ File.open(File.expand_path("../license.txt", File.dirname(__FILE__))) do |l|
77
+ while(line = l.gets) != nil
78
+ puts line
79
+ end
80
+ end
81
+ exit(0)
82
+ else
83
+ puts "Error: don't know '#{k}'! (try --help)"
84
+ exit(-1)
85
+ end
86
+ end
87
+
88
+ rescue => e
89
+ puts "Error in arguments!"
90
+ #puts e.to_s #for debug mode
91
+ exit(-1)
92
+ end
93
+
94
+ configFile = converterConfigFile.gsub('\\','/')
95
+
96
+ #-------------------------------------------------------
97
+ # Starting converting process:
98
+ #-------------------------------------------------------
99
+ cp = BConv::ConfigParser.new(configFile, projToConvert)
100
+
101
+ puts "Reading config..."
102
+ mappings = cp.readConfig
103
+
104
+ abort "Error: Config file is empty OR the requested project(s) is commented out!" if mappings.length == 0
105
+ puts "Converting #{mappings.length} projects..."
106
+
107
+ idxCnt = 0
108
+
109
+ mappings.each do |map|
110
+ idxCnt += 1
111
+ puts "Convert #{idxCnt} from #{mappings.length}: #{map['Proj2Convert']} (#{map['BuildConfig']})"
112
+ puts "Call Bake..."
113
+ bake = BConv::Bake.new(map, setMock, configFile)
114
+ bakeLines = bake.run
115
+ bhash = bake.getHash(bakeLines)
116
+ if bhash != nil
117
+ bhash.each {|k,v| map[k] = v unless map.has_key?k}
118
+ #map.merge!(bhash)
119
+ conv = BConv::Converter.new(map, configFile)
120
+ puts "Convert..."
121
+ conv.convert
122
+ end
123
+ end
124
+
125
+ puts "Done"
126
+ end
127
+
128
+ #-------------------------------------------------------
129
+ # Call the bakeConverter:
130
+ #-------------------------------------------------------
131
+ main
132
+
133
+
134
+
135
+
136
+
137
+
138
+
139
+
140
+
141
+
142
+
143
+
144
+
145
+
146
+
data/license.txt ADDED
@@ -0,0 +1,21 @@
1
+ bakeConverter License:
2
+
3
+ Copyright (c) 2015 E.S.R. Labs AG
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
metadata ADDED
@@ -0,0 +1,72 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bakeConv
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Frauke Blossey
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-06-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: launchy
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 2.4.3
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 2.4.3
27
+ description: bake converter is used to convert from bake to some other file, e.g.
28
+ CMake file, which depends on your template file.
29
+ email: frauke.blossey@esrlabs.com
30
+ executables:
31
+ - bakeConv
32
+ extensions: []
33
+ extra_rdoc_files: []
34
+ files:
35
+ - lib/Bake.rb
36
+ - lib/ConfigParser.rb
37
+ - lib/Converter.rb
38
+ - lib/File_ext.rb
39
+ - lib/Help.rb
40
+ - lib/Util.rb
41
+ - lib/Version.rb
42
+ - lib/bakeConverter.rb
43
+ - doc/doc.html
44
+ - license.txt
45
+ - bin/bakeConv
46
+ homepage:
47
+ licenses:
48
+ - MIT
49
+ metadata: {}
50
+ post_install_message:
51
+ rdoc_options:
52
+ - -x
53
+ - doc
54
+ require_paths:
55
+ - lib
56
+ required_ruby_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - '>='
59
+ - !ruby/object:Gem::Version
60
+ version: '1.9'
61
+ required_rubygems_version: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ requirements: []
67
+ rubyforge_project:
68
+ rubygems_version: 2.0.15
69
+ signing_key:
70
+ specification_version: 4
71
+ summary: tbd
72
+ test_files: []