dtk-dsl 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.byebug_history +70 -0
- data/.gitignore +2 -0
- data/Gemfile +2 -0
- data/README.md +2 -0
- data/dtk-dsl.gemspec +16 -0
- data/lib/dsl/directory_generator.rb +27 -0
- data/lib/dsl/directory_parser/path_info.rb +62 -0
- data/lib/dsl/directory_parser.rb +33 -0
- data/lib/dsl/dsl_version.rb +36 -0
- data/lib/dsl/error/subclasses.rb +38 -0
- data/lib/dsl/error.rb +24 -0
- data/lib/dsl/file_generator/content_input/array.rb +31 -0
- data/lib/dsl/file_generator/content_input/hash.rb +53 -0
- data/lib/dsl/file_generator/content_input/mixin.rb +68 -0
- data/lib/dsl/file_generator/content_input/string.rb +31 -0
- data/lib/dsl/file_generator/content_input/tags.rb +87 -0
- data/lib/dsl/file_generator/content_input.rb +29 -0
- data/lib/dsl/file_generator/yaml_object.rb +24 -0
- data/lib/dsl/file_generator.rb +39 -0
- data/lib/dsl/file_obj.rb +119 -0
- data/lib/dsl/file_parser/input/array.rb +27 -0
- data/lib/dsl/file_parser/input/hash.rb +40 -0
- data/lib/dsl/file_parser/input.rb +29 -0
- data/lib/dsl/file_parser/output.rb +24 -0
- data/lib/dsl/file_parser.rb +71 -0
- data/lib/dsl/file_type.rb +79 -0
- data/lib/dsl/input_output_common/array.rb +43 -0
- data/lib/dsl/input_output_common/canonical/array.rb +27 -0
- data/lib/dsl/input_output_common/canonical/hash.rb +69 -0
- data/lib/dsl/input_output_common/canonical/hash_key.rb +54 -0
- data/lib/dsl/input_output_common/canonical.rb +28 -0
- data/lib/dsl/input_output_common/hash.rb +44 -0
- data/lib/dsl/input_output_common/output_class_mixin.rb +34 -0
- data/lib/dsl/input_output_common/semantic_parse/hash.rb +33 -0
- data/lib/dsl/input_output_common/semantic_parse/mixin.rb +44 -0
- data/lib/dsl/input_output_common/semantic_parse.rb +26 -0
- data/lib/dsl/input_output_common.rb +60 -0
- data/lib/dsl/qualified_key.rb +55 -0
- data/lib/dsl/template/constant_class_mixin.rb +91 -0
- data/lib/dsl/template/generation/class_mixin.rb +40 -0
- data/lib/dsl/template/generation/mixin.rb +134 -0
- data/lib/dsl/template/generation.rb +26 -0
- data/lib/dsl/template/loader.rb +66 -0
- data/lib/dsl/template/parsing/class_mixin.rb +67 -0
- data/lib/dsl/template/parsing/mixin.rb +214 -0
- data/lib/dsl/template/parsing/parent_key.rb +82 -0
- data/lib/dsl/template/parsing/parsing_error/subclasses.rb +62 -0
- data/lib/dsl/template/parsing/parsing_error.rb +52 -0
- data/lib/dsl/template/parsing.rb +29 -0
- data/lib/dsl/template/v1/assembly.rb +82 -0
- data/lib/dsl/template/v1/attribute/semantic_parse.rb +26 -0
- data/lib/dsl/template/v1/attribute.rb +75 -0
- data/lib/dsl/template/v1/common_module.rb +38 -0
- data/lib/dsl/template/v1/common_module_summary.rb +42 -0
- data/lib/dsl/template/v1/component/semantic_parse.rb +26 -0
- data/lib/dsl/template/v1/component.rb +121 -0
- data/lib/dsl/template/v1/dependency.rb +63 -0
- data/lib/dsl/template/v1/module_ref.rb +62 -0
- data/lib/dsl/template/v1/node/semantic_parse.rb +62 -0
- data/lib/dsl/template/v1/node.rb +72 -0
- data/lib/dsl/template/v1/node_attribute/semantic_parse.rb +26 -0
- data/lib/dsl/template/v1/node_attribute.rb +25 -0
- data/lib/dsl/template/v1/service_instance.rb +50 -0
- data/lib/dsl/template/v1/service_module_summary.rb +37 -0
- data/lib/dsl/template/v1/workflow/semantic_parse.rb +26 -0
- data/lib/dsl/template/v1/workflow.rb +65 -0
- data/lib/dsl/template/v1.rb +43 -0
- data/lib/dsl/template.rb +110 -0
- data/lib/dsl/version.rb +6 -0
- data/lib/dsl/yaml_helper.rb +56 -0
- data/lib/dtk_dsl.rb +36 -0
- metadata +114 -0
@@ -0,0 +1,65 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (C) 2010-2016 dtk contributors
|
3
|
+
#
|
4
|
+
# This file is part of the dtk project.
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
class DTK::DSL::Template
|
19
|
+
class V1
|
20
|
+
class Workflow < self
|
21
|
+
require_relative('workflow/semantic_parse')
|
22
|
+
|
23
|
+
module Constant
|
24
|
+
module Variations
|
25
|
+
end
|
26
|
+
|
27
|
+
extend ClassMixin::Constant
|
28
|
+
end
|
29
|
+
|
30
|
+
def parser_output_type
|
31
|
+
:hash
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.parse_elements(input_hash, parent_info)
|
35
|
+
input_hash.inject(file_parser_output_hash) do |h, (name, workflow)|
|
36
|
+
h.merge(name => parse_element(workflow, parent_info, :index => name))
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def parse!
|
41
|
+
merge parse_workflow(input_hash)
|
42
|
+
end
|
43
|
+
|
44
|
+
### For generation
|
45
|
+
def self.generate_elements(workflows_content, parent)
|
46
|
+
workflows_content.inject({}) do |h, (name, workflow)|
|
47
|
+
h.merge(name => generate_element(workflow, parent))
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def generate!
|
52
|
+
merge(@content)
|
53
|
+
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
def parse_workflow(workflow_hash)
|
58
|
+
# TODO: put in fine grain parsing of workflow_hash
|
59
|
+
workflow_hash
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
@@ -0,0 +1,43 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (C) 2010-2016 dtk contributors
|
3
|
+
#
|
4
|
+
# This file is part of the dtk project.
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
module DTK::DSL
|
19
|
+
class Template
|
20
|
+
class V1 < self
|
21
|
+
require_relative('v1/service_module_summary')
|
22
|
+
require_relative('v1/common_module_summary')
|
23
|
+
# common_module_summary must be before common_module
|
24
|
+
require_relative('v1/common_module')
|
25
|
+
require_relative('v1/service_instance')
|
26
|
+
require_relative('v1/module_ref')
|
27
|
+
require_relative('v1/assembly')
|
28
|
+
require_relative('v1/attribute')
|
29
|
+
# attribute must go before node_attribute
|
30
|
+
require_relative('v1/node_attribute')
|
31
|
+
require_relative('v1/node')
|
32
|
+
require_relative('v1/component')
|
33
|
+
require_relative('v1/workflow')
|
34
|
+
require_relative('v1/dependency')
|
35
|
+
|
36
|
+
VERSION = 1
|
37
|
+
def template_version
|
38
|
+
VERSION
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
data/lib/dsl/template.rb
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (C) 2010-2016 dtk contributors
|
3
|
+
#
|
4
|
+
# This file is part of the dtk project.
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
module DTK::DSL
|
19
|
+
class Template
|
20
|
+
require_relative('template/constant_class_mixin')
|
21
|
+
require_relative('template/parsing')
|
22
|
+
require_relative('template/generation')
|
23
|
+
require_relative('template/loader')
|
24
|
+
|
25
|
+
include Parsing::Mixin
|
26
|
+
extend Parsing::ClassMixin
|
27
|
+
include Generation::Mixin
|
28
|
+
extend Generation::ClassMixin
|
29
|
+
|
30
|
+
# opts can have keys
|
31
|
+
# :file_obj
|
32
|
+
# :parent_key
|
33
|
+
def self.create_for_parsing(raw_input, opts = {})
|
34
|
+
new(:parsing, opts.merge(:raw_input => raw_input))
|
35
|
+
end
|
36
|
+
|
37
|
+
# Content is of type InputOutput::Canonical Array or Hash
|
38
|
+
# opts can have keys
|
39
|
+
# :filter
|
40
|
+
def self.create_for_generation(content, opts = {})
|
41
|
+
new(:generation, opts.merge(:content => content))
|
42
|
+
end
|
43
|
+
|
44
|
+
def initialize(type, opts = {})
|
45
|
+
case @type = type
|
46
|
+
when :parsing then parsing_initialize(opts)
|
47
|
+
when :generation then generation_initialize(opts)
|
48
|
+
else raise Error, "Illegal type '#{type}'"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def set(constant, val)
|
53
|
+
case @type
|
54
|
+
when :parsing then parsing_set(constant, val)
|
55
|
+
when :generation then generation_set(constant, val)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def req(key)
|
60
|
+
case @type
|
61
|
+
when :generation then generation_req(key)
|
62
|
+
else fail(Error,"Method 'req' undefined for type '#{@type}'")
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def val(key)
|
67
|
+
case @type
|
68
|
+
when :generation then generation_val(key)
|
69
|
+
else fail(Error,"Method 'val' undefined for type '#{@type}'")
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def set?(constant, val)
|
74
|
+
set(constant, val) unless val.nil?
|
75
|
+
end
|
76
|
+
|
77
|
+
def merge(hash)
|
78
|
+
case @type
|
79
|
+
when :parsing then parsing_merge(hash)
|
80
|
+
when :generation then generation_merge(hash)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def add(array_element)
|
85
|
+
case @type
|
86
|
+
when :parsing then parsing_add(array_element)
|
87
|
+
when :generation then generation_add(array_element)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
private
|
92
|
+
|
93
|
+
def self.template_class(parse_template_type, dsl_version)
|
94
|
+
Loader.template_class(parse_template_type, :dsl_version => dsl_version)
|
95
|
+
end
|
96
|
+
|
97
|
+
def template_class(parse_template_type)
|
98
|
+
self.class.template_class(parse_template_type, template_version)
|
99
|
+
end
|
100
|
+
|
101
|
+
def canonical_key(constant)
|
102
|
+
constant_class.canonical_value(constant)
|
103
|
+
end
|
104
|
+
|
105
|
+
def constant_class
|
106
|
+
self.class::Constant
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
data/lib/dsl/version.rb
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (C) 2010-2016 dtk contributors
|
3
|
+
#
|
4
|
+
# This file is part of the dtk project.
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
require 'yaml'
|
19
|
+
module DTK::DSL
|
20
|
+
module YamlHelper
|
21
|
+
# Returns hash if succsefully parse; otherwise raises error
|
22
|
+
def self.parse(file_obj)
|
23
|
+
begin
|
24
|
+
::YAML.load(file_obj.content)
|
25
|
+
rescue Exception => e
|
26
|
+
raise Error::Usage, yaml_parsing_error_msg(e, file_obj)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.generate(yaml_object)
|
31
|
+
::YAML.dump(convert_for_yaml_dump(yaml_object))
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def self.yaml_parsing_error_msg(e, file_obj)
|
37
|
+
file_ref = FileParser.file_ref_in_error(file_obj)
|
38
|
+
yaml_err_msg = e.message.gsub(/\(<unknown>\): /,'').capitalize
|
39
|
+
"YAML parsing error#{file_ref}:\n#{yaml_err_msg}"
|
40
|
+
end
|
41
|
+
|
42
|
+
# this method converts embedded hash and array objects to be ::Hash and ::Array objects
|
43
|
+
# so YAML rendering does not have objects in it
|
44
|
+
def self.convert_for_yaml_dump(yaml_object)
|
45
|
+
if yaml_object.kind_of?(::Array)
|
46
|
+
ret = []
|
47
|
+
yaml_object.each { |el| ret << convert_for_yaml_dump(el) }
|
48
|
+
ret
|
49
|
+
elsif yaml_object.kind_of?(::Hash)
|
50
|
+
yaml_object.inject({}) { |h, (k, v)| h.merge(k => convert_for_yaml_dump(v)) }
|
51
|
+
else
|
52
|
+
yaml_object
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
data/lib/dtk_dsl.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (C) 2010-2016 dtk contributors
|
3
|
+
#
|
4
|
+
# This file is part of the dtk project.
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
module DTK
|
20
|
+
module DSL
|
21
|
+
require_relative('dsl/error')
|
22
|
+
require_relative('dsl/dsl_version')
|
23
|
+
require_relative('dsl/file_type')
|
24
|
+
require_relative('dsl/file_obj')
|
25
|
+
require_relative('dsl/yaml_helper')
|
26
|
+
require_relative('dsl/directory_parser')
|
27
|
+
require_relative('dsl/directory_generator')
|
28
|
+
require_relative('dsl/qualified_key')
|
29
|
+
require_relative('dsl/input_output_common')
|
30
|
+
# input_output_common must be before file_parser and file_generator
|
31
|
+
require_relative('dsl/file_parser')
|
32
|
+
require_relative('dsl/file_generator')
|
33
|
+
require_relative('dsl/template')
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
metadata
ADDED
@@ -0,0 +1,114 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dtk-dsl
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Reactor8
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-09-16 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Library for parsing DT DSL files.
|
14
|
+
email: support@reactor8.com
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- ".byebug_history"
|
20
|
+
- ".gitignore"
|
21
|
+
- Gemfile
|
22
|
+
- README.md
|
23
|
+
- dtk-dsl.gemspec
|
24
|
+
- lib/dsl/directory_generator.rb
|
25
|
+
- lib/dsl/directory_parser.rb
|
26
|
+
- lib/dsl/directory_parser/path_info.rb
|
27
|
+
- lib/dsl/dsl_version.rb
|
28
|
+
- lib/dsl/error.rb
|
29
|
+
- lib/dsl/error/subclasses.rb
|
30
|
+
- lib/dsl/file_generator.rb
|
31
|
+
- lib/dsl/file_generator/content_input.rb
|
32
|
+
- lib/dsl/file_generator/content_input/array.rb
|
33
|
+
- lib/dsl/file_generator/content_input/hash.rb
|
34
|
+
- lib/dsl/file_generator/content_input/mixin.rb
|
35
|
+
- lib/dsl/file_generator/content_input/string.rb
|
36
|
+
- lib/dsl/file_generator/content_input/tags.rb
|
37
|
+
- lib/dsl/file_generator/yaml_object.rb
|
38
|
+
- lib/dsl/file_obj.rb
|
39
|
+
- lib/dsl/file_parser.rb
|
40
|
+
- lib/dsl/file_parser/input.rb
|
41
|
+
- lib/dsl/file_parser/input/array.rb
|
42
|
+
- lib/dsl/file_parser/input/hash.rb
|
43
|
+
- lib/dsl/file_parser/output.rb
|
44
|
+
- lib/dsl/file_type.rb
|
45
|
+
- lib/dsl/input_output_common.rb
|
46
|
+
- lib/dsl/input_output_common/array.rb
|
47
|
+
- lib/dsl/input_output_common/canonical.rb
|
48
|
+
- lib/dsl/input_output_common/canonical/array.rb
|
49
|
+
- lib/dsl/input_output_common/canonical/hash.rb
|
50
|
+
- lib/dsl/input_output_common/canonical/hash_key.rb
|
51
|
+
- lib/dsl/input_output_common/hash.rb
|
52
|
+
- lib/dsl/input_output_common/output_class_mixin.rb
|
53
|
+
- lib/dsl/input_output_common/semantic_parse.rb
|
54
|
+
- lib/dsl/input_output_common/semantic_parse/hash.rb
|
55
|
+
- lib/dsl/input_output_common/semantic_parse/mixin.rb
|
56
|
+
- lib/dsl/qualified_key.rb
|
57
|
+
- lib/dsl/template.rb
|
58
|
+
- lib/dsl/template/constant_class_mixin.rb
|
59
|
+
- lib/dsl/template/generation.rb
|
60
|
+
- lib/dsl/template/generation/class_mixin.rb
|
61
|
+
- lib/dsl/template/generation/mixin.rb
|
62
|
+
- lib/dsl/template/loader.rb
|
63
|
+
- lib/dsl/template/parsing.rb
|
64
|
+
- lib/dsl/template/parsing/class_mixin.rb
|
65
|
+
- lib/dsl/template/parsing/mixin.rb
|
66
|
+
- lib/dsl/template/parsing/parent_key.rb
|
67
|
+
- lib/dsl/template/parsing/parsing_error.rb
|
68
|
+
- lib/dsl/template/parsing/parsing_error/subclasses.rb
|
69
|
+
- lib/dsl/template/v1.rb
|
70
|
+
- lib/dsl/template/v1/assembly.rb
|
71
|
+
- lib/dsl/template/v1/attribute.rb
|
72
|
+
- lib/dsl/template/v1/attribute/semantic_parse.rb
|
73
|
+
- lib/dsl/template/v1/common_module.rb
|
74
|
+
- lib/dsl/template/v1/common_module_summary.rb
|
75
|
+
- lib/dsl/template/v1/component.rb
|
76
|
+
- lib/dsl/template/v1/component/semantic_parse.rb
|
77
|
+
- lib/dsl/template/v1/dependency.rb
|
78
|
+
- lib/dsl/template/v1/module_ref.rb
|
79
|
+
- lib/dsl/template/v1/node.rb
|
80
|
+
- lib/dsl/template/v1/node/semantic_parse.rb
|
81
|
+
- lib/dsl/template/v1/node_attribute.rb
|
82
|
+
- lib/dsl/template/v1/node_attribute/semantic_parse.rb
|
83
|
+
- lib/dsl/template/v1/service_instance.rb
|
84
|
+
- lib/dsl/template/v1/service_module_summary.rb
|
85
|
+
- lib/dsl/template/v1/workflow.rb
|
86
|
+
- lib/dsl/template/v1/workflow/semantic_parse.rb
|
87
|
+
- lib/dsl/version.rb
|
88
|
+
- lib/dsl/yaml_helper.rb
|
89
|
+
- lib/dtk_dsl.rb
|
90
|
+
homepage:
|
91
|
+
licenses:
|
92
|
+
- Apache 2.0
|
93
|
+
metadata: {}
|
94
|
+
post_install_message:
|
95
|
+
rdoc_options: []
|
96
|
+
require_paths:
|
97
|
+
- lib
|
98
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 1.9.3
|
103
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- - ">="
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: '0'
|
108
|
+
requirements: []
|
109
|
+
rubyforge_project:
|
110
|
+
rubygems_version: 2.4.1
|
111
|
+
signing_key:
|
112
|
+
specification_version: 4
|
113
|
+
summary: Library for parsing DT DSL files.
|
114
|
+
test_files: []
|