shalmaneser-lib 1.2.rc5 → 1.2.rc6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 925773238e9b659fbfec8c118b4a22f4f2fb909b
4
- data.tar.gz: da6bbfc8e3b8d33cc45ec17cd8c9c39044db86e2
3
+ metadata.gz: f300c7da721047a8cae71a1b9a9a4d42b9d25d5b
4
+ data.tar.gz: ed1cdf9daaa109828b6c6d04873748d79bacb026
5
5
  SHA512:
6
- metadata.gz: abeebd6acb3c45fe07bb13e5e281b711b30c296b0d4546fad9b8d0ce11dbc4617241efffaf56066b3bc49ac8216bf6ccae6f8a3bc12ad788129f111d63e609d2
7
- data.tar.gz: 1d1e18b0bd144fe5aaa3058fed3e6fe5e5d80648c43e6d3e175daaf97d1ce491dbf80e7aceec9be387a65d2d6dade1d6b5d7407302442446d46a7f9afb473c61
6
+ metadata.gz: 398654afcbd1a630e9465b652fe7714c8439f89603838e41b3770cbbff83eaf1887e4cd7fd54bec9c5426fe7289d549a9e33c34da8d924ce97bec6e4bdc02734
7
+ data.tar.gz: 8ff8af846f337aff5a32b474b5c112a462878ecfc65a20bad81483d176922d8cd826a136116a117a4ab31675bd85bf277d3ad2fec94b42011a3e056de3f860c5
@@ -2,18 +2,18 @@ module Shalmaneser
2
2
  LICENSE = 'GPL-2.0'
3
3
  module Frappe
4
4
  PROGRAM_NAME = 'Frappe'
5
- VERSION = '1.2.rc5'
5
+ VERSION = '1.2.rc6'
6
6
  end
7
7
  module Fred
8
8
  PROGRAM_NAME = 'Fred'
9
- VERSION = '1.2.rc5'
9
+ VERSION = '1.2.rc6'
10
10
  end
11
11
  module Rosy
12
12
  PROGRAM_NAME = 'Rosy'
13
- VERSION = '1.2.rc5'
13
+ VERSION = '1.2.rc6'
14
14
  end
15
15
  module Shalmaneser
16
16
  PROGRAM_NAME = 'Shalmaneser'
17
- VERSION = '1.2.rc5'
17
+ VERSION = '1.2.rc6'
18
18
  end
19
19
  end
@@ -1,347 +1,348 @@
1
1
  module STXML
2
- # GraphNode: describes one node in a graph.
3
- #
4
- # A node may have an arbitrary number of parents (sources of incoming edges)
5
- # and an arbitrary number of children (targets of outgoing edges)
6
- #
7
- # All edges are labeled and directed
8
- #
9
- # The add_parent, add_child, remove_parent, remove_child methods
10
- # take care of both ends of an edge
11
- # (i.e. n1.add_child(n2, label) also adds n1 as parent of n2 with edge label 'label'
12
- #
13
- # It is possible to create a 'pointer' rather than an edge:
14
- # n1.add_child(n2, label, pointer_insteadof_edge => true)
15
- # will create an edge from n1 to n2 labeled 'label' that is
16
- # listed under the outgoing edges of n1, but not among
17
- # the incoming edges of n2
18
- # The same option is available for add_parent, remove_parent, remove_child.
19
-
20
- class GraphNode
21
-
22
- def initialize(id)
23
- @id = id
24
- @children = []
25
- @parents = []
26
- @features = {}
27
- end
2
+ # GraphNode: describes one node in a graph.
3
+ #
4
+ # A node may have an arbitrary number of parents (sources of incoming edges)
5
+ # and an arbitrary number of children (targets of outgoing edges)
6
+ #
7
+ # All edges are labeled and directed
8
+ #
9
+ # The add_parent, add_child, remove_parent, remove_child methods
10
+ # take care of both ends of an edge
11
+ # (i.e. n1.add_child(n2, label) also adds n1 as parent of n2 with edge label 'label'
12
+ #
13
+ # It is possible to create a 'pointer' rather than an edge:
14
+ # n1.add_child(n2, label, pointer_insteadof_edge => true)
15
+ # will create an edge from n1 to n2 labeled 'label' that is
16
+ # listed under the outgoing edges of n1, but not among
17
+ # the incoming edges of n2
18
+ # The same option is available for add_parent, remove_parent, remove_child.
19
+ # @note AB: This class is used only for subclassing.
20
+ # @abstract
21
+ class GraphNode
22
+
23
+ def initialize(id)
24
+ @id = id
25
+ @children = []
26
+ @parents = []
27
+ @features = {}
28
+ end
28
29
 
29
- # for Marshalling:
30
- # Dump just IDs instead of actual nodes from Parents and Children lists.
31
- # Otherwise the Marshaller will go crazy following
32
- # all the links to objects mentioned.
33
- # After loading: replace IDs by actual objects with a little help
34
- # from the caller.
35
- # @deprecated This method seams to be useless.
36
- def _dump(depth)
37
- @id.to_s +
38
- "QQSEPVALUESQQ" +
39
- Marshal.dump(@features) +
40
- "QQSEPVALUESQQ" +
41
- @children.map { |label_child|
30
+ # for Marshalling:
31
+ # Dump just IDs instead of actual nodes from Parents and Children lists.
32
+ # Otherwise the Marshaller will go crazy following
33
+ # all the links to objects mentioned.
34
+ # After loading: replace IDs by actual objects with a little help
35
+ # from the caller.
36
+ # @deprecated This method seams to be useless.
37
+ def _dump(depth)
38
+ @id.to_s +
39
+ "QQSEPVALUESQQ" +
40
+ Marshal.dump(@features) +
41
+ "QQSEPVALUESQQ" +
42
+ @children.map { |label_child|
42
43
  label_child[0] + "QQSEPQQ" + label_child[1].id
43
44
  }.join("QQPAIRQQ") +
44
- "QQSEPVALUESQQ" +
45
- @parents.map { |label_parent|
45
+ "QQSEPVALUESQQ" +
46
+ @parents.map { |label_parent|
46
47
  label_parent[0] + "QQSEPQQ" + label_parent[1].id
47
- }.join("QQPAIRQQ")
48
- end
48
+ }.join("QQPAIRQQ")
49
+ end
49
50
 
50
- def self._load(string)
51
- id, _features_s, _children_s, _parents_s = string.split("QQSEPVALUESQQ")
51
+ def self._load(string)
52
+ id, _features_s, _children_s, _parents_s = string.split("QQSEPVALUESQQ")
52
53
 
53
- result = GraphNode.new(id)
54
- result.fill_from_pickle(string)
54
+ result = GraphNode.new(id)
55
+ result.fill_from_pickle(string)
55
56
 
56
- result
57
- end
57
+ result
58
+ end
58
59
 
59
- def fill_from_pickle(string)
60
- _id, features_s, children_s, parents_s = string.split("QQSEPVALUESQQ")
60
+ def fill_from_pickle(string)
61
+ _id, features_s, children_s, parents_s = string.split("QQSEPVALUESQQ")
61
62
 
62
- @features = Marshal.load(features_s)
63
+ @features = Marshal.load(features_s)
63
64
 
64
- if children_s.nil? || children_s.empty?
65
- @children = []
66
- else
67
- @children = children_s.split("QQPAIRQQ").map do |pair|
68
- pair.split("QQSEPQQ")
65
+ if children_s.nil? || children_s.empty?
66
+ @children = []
67
+ else
68
+ @children = children_s.split("QQPAIRQQ").map do |pair|
69
+ pair.split("QQSEPQQ")
70
+ end
69
71
  end
70
- end
71
72
 
72
- if parents_s.nil? || parents_s.empty?
73
- @parents = []
74
- else
75
- @parents = parents_s.split("QQPAIRQQ").map { |pair|
76
- pair.split("QQSEPQQ")
77
- }
73
+ if parents_s.nil? || parents_s.empty?
74
+ @parents = []
75
+ else
76
+ @parents = parents_s.split("QQPAIRQQ").map { |pair|
77
+ pair.split("QQSEPQQ")
78
+ }
79
+ end
78
80
  end
79
- end
80
81
 
81
- def recover_from_dump(node_by_id)
82
- @children = @children.map { |label_id| [label_id[0], node_by_id.call(label_id[1])] }
83
- @parents = @parents.map { |label_id| [label_id[0], node_by_id.call(label_id[1])] }
84
- end
82
+ def recover_from_dump(node_by_id)
83
+ @children = @children.map { |label_id| [label_id[0], node_by_id.call(label_id[1])] }
84
+ @parents = @parents.map { |label_id| [label_id[0], node_by_id.call(label_id[1])] }
85
+ end
85
86
 
86
- # ID-related things
87
- def ==(other)
88
- if other.is_a?(GraphNode)
89
- @id == other.id
90
- else
91
- false
87
+ # ID-related things
88
+ def ==(other)
89
+ if other.is_a?(GraphNode)
90
+ @id == other.id
91
+ else
92
+ false
93
+ end
92
94
  end
93
- end
94
95
 
95
- def id
96
- @id
97
- end
96
+ def id
97
+ @id
98
+ end
98
99
 
99
- def chid(newid)
100
- @id = newid
101
- end
100
+ def chid(newid)
101
+ @id = newid
102
+ end
102
103
 
103
- # setting and retrieving features
104
+ # setting and retrieving features
104
105
 
105
- def get_f(feature)
106
- @features[feature]
107
- end
106
+ def get_f(feature)
107
+ @features[feature]
108
+ end
108
109
 
109
- def set_f(feature, value)
110
- @features[feature] = value
111
- end
110
+ def set_f(feature, value)
111
+ @features[feature] = value
112
+ end
112
113
 
113
- def add_f(feature, value)
114
- unless @features[feature].nil?
115
- raise "Feature " + feature + "already set."
114
+ def add_f(feature, value)
115
+ unless @features[feature].nil?
116
+ raise "Feature " + feature + "already set."
117
+ end
118
+ set_f(feature, value)
116
119
  end
117
- set_f(feature, value)
118
- end
119
120
 
120
- # ancestors
121
+ # ancestors
121
122
 
122
- def parents
123
- @parents.map { |label| label[1] }
124
- end
123
+ def parents
124
+ @parents.map { |label| label[1] }
125
+ end
125
126
 
126
- def parent_labels
127
- @parents.map { |label_parent| label_parent[0] }
128
- end
127
+ def parent_labels
128
+ @parents.map { |label_parent| label_parent[0] }
129
+ end
129
130
 
130
- def parent_label(parent)
131
- @parents.each do |label_parent|
132
- if label_parent[1] == parent
133
- return label_parent[0]
131
+ def parent_label(parent)
132
+ @parents.each do |label_parent|
133
+ if label_parent[1] == parent
134
+ return label_parent[0]
135
+ end
134
136
  end
135
- end
136
137
 
137
- nil
138
- end
138
+ nil
139
+ end
139
140
 
140
- def parents_with_edgelabel
141
- @parents
142
- end
141
+ def parents_with_edgelabel
142
+ @parents
143
+ end
143
144
 
144
- def each_parent
145
- @parents.each { |label_parent| yield label_parent[1] }
146
- end
145
+ def each_parent
146
+ @parents.each { |label_parent| yield label_parent[1] }
147
+ end
147
148
 
148
- def each_parent_with_edgelabel
149
- @parents.each { |label_parent| yield label_parent}
150
- end
149
+ def each_parent_with_edgelabel
150
+ @parents.each { |label_parent| yield label_parent}
151
+ end
151
152
 
152
- def parents_by_edgelabels(labels)
153
- @parents.select { |label_parent|
154
- labels.include? label_parent[0]
155
- }.map { |label_parent|
156
- label_parent[1]
157
- }
158
- end
153
+ def parents_by_edgelabels(labels)
154
+ @parents.select { |label_parent|
155
+ labels.include? label_parent[0]
156
+ }.map { |label_parent|
157
+ label_parent[1]
158
+ }
159
+ end
159
160
 
160
- def add_parent(parent, edgelabel, varhash = {})
161
- @parents << [edgelabel, parent]
161
+ def add_parent(parent, edgelabel, varhash = {})
162
+ @parents << [edgelabel, parent]
162
163
 
163
- # and vice versa: add self as child to parent
164
- unless varhash["pointer_insteadof_edge"]
165
- unless parent.children_with_edgelabel.include? [edgelabel, self]
166
- parent.add_child(self, edgelabel)
164
+ # and vice versa: add self as child to parent
165
+ unless varhash["pointer_insteadof_edge"]
166
+ unless parent.children_with_edgelabel.include? [edgelabel, self]
167
+ parent.add_child(self, edgelabel)
168
+ end
167
169
  end
168
170
  end
169
- end
170
171
 
171
- def remove_parent(parent, edgelabel, varhash={})
172
- @parents = @parents.reject { |label_child|
173
- label_child.first == edgelabel and
174
- label_child.last == parent
175
- }
172
+ def remove_parent(parent, edgelabel, varhash={})
173
+ @parents = @parents.reject { |label_child|
174
+ label_child.first == edgelabel and
175
+ label_child.last == parent
176
+ }
176
177
 
177
- # and vice versa: remove self as child from parent
178
- unless varhash["pointer_insteadof_edge"]
179
- if parent.children_with_edgelabel.include? [edgelabel, self]
180
- parent.remove_child(self, edgelabel)
178
+ # and vice versa: remove self as child from parent
179
+ unless varhash["pointer_insteadof_edge"]
180
+ if parent.children_with_edgelabel.include? [edgelabel, self]
181
+ parent.remove_child(self, edgelabel)
182
+ end
181
183
  end
182
184
  end
183
- end
184
185
 
185
- def indeg
186
- @parents.length
187
- end
186
+ def indeg
187
+ @parents.length
188
+ end
188
189
 
189
- def ancestors
190
- ancestors_noduplicates([], [])
191
- end
190
+ def ancestors
191
+ ancestors_noduplicates([], [])
192
+ end
192
193
 
193
- def ancestors_by_edgelabels(labels)
194
- ancestors_noduplicates([], labels)
195
- end
194
+ def ancestors_by_edgelabels(labels)
195
+ ancestors_noduplicates([], labels)
196
+ end
196
197
 
197
- # descendants
198
+ # descendants
198
199
 
199
- def children
200
- @children.map { |label_child| label_child[1] }
201
- end
200
+ def children
201
+ @children.map { |label_child| label_child[1] }
202
+ end
202
203
 
203
- def child_labels
204
- @children.map { |label_child| label_child[0] }
205
- end
204
+ def child_labels
205
+ @children.map { |label_child| label_child[0] }
206
+ end
206
207
 
207
- def child_label(child)
208
- @children.each { |label_child|
209
- if label_child[1] == child
210
- return label_child[0]
211
- end
212
- }
208
+ def child_label(child)
209
+ @children.each { |label_child|
210
+ if label_child[1] == child
211
+ return label_child[0]
212
+ end
213
+ }
213
214
 
214
- nil
215
- end
215
+ nil
216
+ end
216
217
 
217
- def children_with_edgelabel
218
- @children
219
- end
218
+ def children_with_edgelabel
219
+ @children
220
+ end
220
221
 
221
- def each_child
222
- @children.each { |label_child| yield label_child[1]}
223
- end
222
+ def each_child
223
+ @children.each { |label_child| yield label_child[1]}
224
+ end
224
225
 
225
- def each_child_with_edgelabel
226
- @children.each { |label_child| yield label_child }
227
- end
226
+ def each_child_with_edgelabel
227
+ @children.each { |label_child| yield label_child }
228
+ end
228
229
 
229
- def children_by_edgelabels(labels)
230
- return @children.select { |label_child|
231
- labels.include? label_child[0]
232
- }.map { |label_child|
233
- label_child[1]
234
- }
235
- end
230
+ def children_by_edgelabels(labels)
231
+ return @children.select { |label_child|
232
+ labels.include? label_child[0]
233
+ }.map { |label_child|
234
+ label_child[1]
235
+ }
236
+ end
236
237
 
237
- def add_child(child, edgelabel, varhash = {})
238
- @children << [edgelabel, child]
238
+ def add_child(child, edgelabel, varhash = {})
239
+ @children << [edgelabel, child]
239
240
 
240
- # and vice versa: add self as parent to child
241
- unless varhash["pointer_insteadof_edge"]
242
- unless child.parents_with_edgelabel.include? [edgelabel, self]
243
- child.add_parent(self, edgelabel)
241
+ # and vice versa: add self as parent to child
242
+ unless varhash["pointer_insteadof_edge"]
243
+ unless child.parents_with_edgelabel.include? [edgelabel, self]
244
+ child.add_parent(self, edgelabel)
245
+ end
244
246
  end
245
247
  end
246
- end
247
248
 
248
- def remove_child(child, edgelabel, varhash={})
249
- @children = @children.reject { |label_child|
250
- label_child.first == edgelabel and
251
- label_child.last == child
252
- }
249
+ def remove_child(child, edgelabel, varhash={})
250
+ @children = @children.reject { |label_child|
251
+ label_child.first == edgelabel and
252
+ label_child.last == child
253
+ }
253
254
 
254
- # and vice versa: remove self as parent from child
255
- unless varhash["pointer_insteadof_edge"]
256
- if child.parents_with_edgelabel.include? [edgelabel, self]
257
- child.remove_parent(self, edgelabel)
255
+ # and vice versa: remove self as parent from child
256
+ unless varhash["pointer_insteadof_edge"]
257
+ if child.parents_with_edgelabel.include? [edgelabel, self]
258
+ child.remove_parent(self, edgelabel)
259
+ end
258
260
  end
259
261
  end
260
- end
261
262
 
262
- def change_child_label(child, oldlabel, newlabel, varhash={})
263
- if @children.include? [oldlabel, child]
264
- remove_child(child,oldlabel, varhash)
265
- add_child(child, newlabel, varhash)
263
+ def change_child_label(child, oldlabel, newlabel, varhash={})
264
+ if @children.include? [oldlabel, child]
265
+ remove_child(child,oldlabel, varhash)
266
+ add_child(child, newlabel, varhash)
267
+ end
266
268
  end
267
- end
268
269
 
269
- def remove_all_children(varhash={})
270
- each_child_with_edgelabel { |label, child|
271
- remove_child(child, label, varhash)
272
- }
273
- end
274
-
275
- def set_children(list, varhash={})
276
- #### CAUTION: set_children must be called with an "internal format" list of parents:
277
- #### instead of using [node, edgelabel], use [edgelabel, node]
278
- remove_all_children(varhash)
270
+ def remove_all_children(varhash={})
271
+ each_child_with_edgelabel { |label, child|
272
+ remove_child(child, label, varhash)
273
+ }
274
+ end
279
275
 
280
- @children = list
281
- end
276
+ def set_children(list, varhash={})
277
+ #### CAUTION: set_children must be called with an "internal format" list of parents:
278
+ #### instead of using [node, edgelabel], use [edgelabel, node]
279
+ remove_all_children(varhash)
282
280
 
283
- def outdeg
284
- return @children.length
285
- end
281
+ @children = list
282
+ end
286
283
 
287
- def yield_nodes
288
- arr = []
289
- if outdeg == 0
290
- arr << self
284
+ def outdeg
285
+ return @children.length
291
286
  end
292
- each_child { |c|
293
- if c.outdeg == 0
294
- arr << c
295
- else
296
- arr.concat c.yield_nodes
287
+
288
+ def yield_nodes
289
+ arr = []
290
+ if outdeg == 0
291
+ arr << self
297
292
  end
298
- }
299
- return arr
300
- end
293
+ each_child { |c|
294
+ if c.outdeg == 0
295
+ arr << c
296
+ else
297
+ arr.concat c.yield_nodes
298
+ end
299
+ }
300
+ return arr
301
+ end
301
302
 
302
- def descendants
303
- descendants_noduplicates([], [])
304
- end
303
+ def descendants
304
+ descendants_noduplicates([], [])
305
+ end
305
306
 
306
- def descendants_by_edgelabels(labels)
307
- return descendants_noduplicates([], labels)
308
- end
307
+ def descendants_by_edgelabels(labels)
308
+ return descendants_noduplicates([], labels)
309
+ end
309
310
 
310
- protected
311
+ protected
311
312
 
312
- def descendants_noduplicates(nodes, labels)
313
- each_child_with_edgelabel { |l_c|
314
- if labels.empty? or labels.include? l_c[0]
315
- unless nodes.include? l_c[1]
316
- nodes = l_c[1].descendants_noduplicates(nodes << l_c[1], labels)
313
+ def descendants_noduplicates(nodes, labels)
314
+ each_child_with_edgelabel { |l_c|
315
+ if labels.empty? or labels.include? l_c[0]
316
+ unless nodes.include? l_c[1]
317
+ nodes = l_c[1].descendants_noduplicates(nodes << l_c[1], labels)
318
+ end
317
319
  end
318
- end
319
- }
320
- return nodes
321
- end
320
+ }
321
+ return nodes
322
+ end
322
323
 
323
- def ancestors_noduplicates(nodes, labels)
324
- each_parent_with_edgelabel { |l_p|
325
- if labels.empty? or labels.include? l_p[0]
326
- unless nodes.include? l_p[1]
327
- nodes = l_p[1].ancestors_noduplicates(nodes << l_p[1], labels)
324
+ def ancestors_noduplicates(nodes, labels)
325
+ each_parent_with_edgelabel { |l_p|
326
+ if labels.empty? or labels.include? l_p[0]
327
+ unless nodes.include? l_p[1]
328
+ nodes = l_p[1].ancestors_noduplicates(nodes << l_p[1], labels)
329
+ end
328
330
  end
329
- end
330
- }
331
- return nodes
332
- end
331
+ }
332
+ return nodes
333
+ end
333
334
 
334
- #### CAUTION: set_parents must be called with an "internal format" list of parents:
335
- #### instead of using [node, edgelabel], use [edgelabel, node]
335
+ #### CAUTION: set_parents must be called with an "internal format" list of parents:
336
+ #### instead of using [node, edgelabel], use [edgelabel, node]
336
337
 
337
- def set_parents(list, varhash={})
338
- each_parent_with_edgelabel { |label, parent|
339
- remove_parent(parent, label, varhash)
340
- }
338
+ def set_parents(list, varhash={})
339
+ each_parent_with_edgelabel { |label, parent|
340
+ remove_parent(parent, label, varhash)
341
+ }
341
342
 
342
- list.each { |label, parent|
343
- add_parent(label, parent)
344
- }
343
+ list.each { |label, parent|
344
+ add_parent(label, parent)
345
+ }
346
+ end
345
347
  end
346
348
  end
347
- end
@@ -5,11 +5,10 @@ module STXML
5
5
 
6
6
  # SalsaTigerRegXML: take control of the data structure, no underlying xml
7
7
  # representation anymore, re-generation of xml on demand
8
-
9
8
  class RegXML
10
-
11
- def initialize(string, # string representing a single XML element
12
- i_am_text = false) # boolean: xml element (false) or text (true)
9
+ # string representing a single XML element
10
+ # boolean: xml element (false) or text (true)
11
+ def initialize(string, i_am_text = false)
13
12
 
14
13
  unless string.class == String
15
14
  raise "First argument to RegXML.new must be string. I got #{string.class}"
@@ -96,12 +96,10 @@ module STXML
96
96
  # text: optional parameter, a string, arbitrary text commenting
97
97
  # on the flag, used mainly with INTERESTING
98
98
  class SalsaTigerSentence < XMLNode
99
- def self.empty_sentence(sentence_id) # string
99
+ # @param [String] sentence_id Identificator for a new sentence.
100
+ def self.empty_sentence(sentence_id)
100
101
  sentence_id = sentence_id.gsub(/'/, "&apos;")
101
- sent_string = "<s id=\'#{sentence_id}\'>\n" +
102
- "<graph/>\n" +
103
- "<sem/>\n" +
104
- "</s>"
102
+ sent_string = "<s id=\'#{sentence_id}\'>\n" + "<graph/>\n" + "<sem/>\n" + "</s>"
105
103
 
106
104
  SalsaTigerSentence.new(sent_string)
107
105
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shalmaneser-lib
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.rc5
4
+ version: 1.2.rc6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrei Beliankou
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-13 00:00:00.000000000 Z
11
+ date: 2016-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pastel
@@ -113,7 +113,7 @@ require_paths:
113
113
  - lib
114
114
  required_ruby_version: !ruby/object:Gem::Requirement
115
115
  requirements:
116
- - - '='
116
+ - - ">="
117
117
  - !ruby/object:Gem::Version
118
118
  version: '2.0'
119
119
  required_rubygems_version: !ruby/object:Gem::Requirement