ALD 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/lib/ALD.rb ADDED
@@ -0,0 +1,8 @@
1
+ require 'ALD/package'
2
+ require 'ALD/package_generator'
3
+ require 'ALD/definition'
4
+ require 'ALD/definition_generator.rb'
5
+ require 'ALD/exceptions'
6
+
7
+ module ALD
8
+ end
@@ -0,0 +1,70 @@
1
+ require 'nokogiri'
2
+ require 'ALD/exceptions'
3
+
4
+ module ALD
5
+ class Definition
6
+ SCHEMA_FILE = "#{File.dirname(__FILE__)}/schema.xsd"
7
+
8
+ XML_NAMESPACE = 'ald://package/schema/2014'
9
+
10
+ def self.schema
11
+ @schema ||= Nokogiri::XML::Schema(File.read(SCHEMA_FILE))
12
+ end
13
+
14
+ TOPLEVEL_ATTRIBUTES = %w[
15
+ id
16
+ name
17
+ version
18
+ type
19
+ summary
20
+ ]
21
+
22
+ TOPLEVEL_ATTRIBUTES.each do |attr|
23
+ define_method attr.to_sym do
24
+ @document.xpath("//@ald:#{attr}", 'ald' => XML_NAMESPACE)[0].value
25
+ end
26
+ end
27
+
28
+ def initialize(source)
29
+ if source.is_a? Nokogiri::XML::Document
30
+ @document = source
31
+ else
32
+ @document = Nokogiri::XML(source) { |config| config.nonet }
33
+ end
34
+
35
+ raise InvalidDefinitionError unless valid?
36
+ end
37
+
38
+ def description
39
+ @document.xpath("//ald:description", 'ald' => XML_NAMESPACE)[0].text
40
+ end
41
+
42
+ def tags
43
+ @document.xpath("//ald:tags/ald:tag/@ald:name", 'ald' => XML_NAMESPACE).map { |tag| tag.value }
44
+ end
45
+
46
+ def authors
47
+ attribute_hash '//ald:authors/ald:author', %w[name user-name homepage email]
48
+ end
49
+
50
+ def links
51
+ attribute_hash '//ald:links/ald:link', %w[name description href]
52
+ end
53
+
54
+ def valid?
55
+ Definition.schema.valid?(@document)
56
+ end
57
+
58
+ def to_s
59
+ @document.to_s
60
+ end
61
+
62
+ private
63
+
64
+ def attribute_hash(xpath, keys)
65
+ @document.xpath(xpath, 'ald' => XML_NAMESPACE).map do |e|
66
+ Hash[keys.map { |k| e.attribute_with_ns(k, XML_NAMESPACE) }.reject(&:nil?).map { |a| [a.node_name, a.value] }]
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,11 @@
1
+ module ALD
2
+ class Definition
3
+ class Generator
4
+ def generate!
5
+ end
6
+
7
+ def valid?
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,10 @@
1
+ module ALD
2
+ class InvalidPackageError < StandardError
3
+ end
4
+
5
+ class NoDefinitionError < InvalidPackageError
6
+ end
7
+
8
+ class InvalidDefinitionError < StandardError
9
+ end
10
+ end
@@ -0,0 +1,56 @@
1
+ require 'zip'
2
+ require 'ALD/definition'
3
+ require 'ALD/exceptions'
4
+
5
+ module ALD
6
+ # Represents an ALD package file containing an app or library and its definition
7
+ class Package
8
+
9
+ # The rubyzip Zip::File object containing the data
10
+ attr_reader :archive
11
+
12
+ # The ALD::Definition instance representing the definition contained in the package
13
+ attr_reader :definition
14
+
15
+ # Opens a new ALD package file
16
+ #
17
+ # file - a Zip::File instance or the path to the file
18
+ #
19
+ # Returns a new ALD::Package instance representing the package file
20
+ def initialize(file)
21
+ if file.is_a? Zip::File
22
+ @archive = file
23
+ else
24
+ @archive = Zip::File.open(file)
25
+ end
26
+
27
+ def_entry = @archive.find_entry('definition.ald')
28
+ raise NoDefinitionError if def_entry.nil?
29
+
30
+ @definition = Definition.new(def_entry.get_input_stream)
31
+ raise InvalidPackageError, 'The given ZIP file is not a valid ALD archive!' unless Package.valid?(@archive, @definition)
32
+
33
+ # file access
34
+ end
35
+
36
+ # Closes a no longer required package
37
+ def close
38
+ @archive.close
39
+ end
40
+
41
+ # Alias for new
42
+ def self.open(file)
43
+ new(file)
44
+ end
45
+
46
+ # Tests if a given archive is a valid ALD package
47
+ #
48
+ # file - a Zip::File instance for the package
49
+ # definition - an ALD::Definition instance the package must meet
50
+ #
51
+ # Returns true if it is valid, false otherwise
52
+ def self.valid?(file, definition)
53
+ true
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,54 @@
1
+ require 'ALD/definition'
2
+ require 'ALD/definition_generator'
3
+ require 'ALD/package'
4
+ require 'ALD/exceptions'
5
+
6
+ module ALD
7
+ class Package
8
+ class Generator
9
+ attr_writer :definition
10
+
11
+ def definition
12
+ if @definition.is_a? ALD::Definition
13
+ @definition
14
+ elsif @definition.is_a? ALD::Definition::Generator
15
+ @definition.generate!
16
+ end
17
+ end
18
+
19
+ def valid?
20
+ true && @definition.valid?
21
+ end
22
+
23
+ # Creates a new package file from the given data
24
+ #
25
+ # generator - an ALD::Package::Generator instance to create the package from
26
+ # path - the path where to create the package. This file must not yet exist.
27
+ #
28
+ # Returns a new ALD::Package instance representing the newly created file
29
+ def generate!(path)
30
+ if File.exists? path
31
+ raise IOError, "Destination '#{path}' already exists!"
32
+ end
33
+
34
+ raise InvalidPackageError unless valid?
35
+
36
+ archive = Zip::File.open(path, Zip::File::CREATE)
37
+
38
+ archive.get_output_stream('definition.ald') do |s|
39
+ s << definition.to_s
40
+ end
41
+
42
+ files.each do |path, src|
43
+ archive.add(path, src)
44
+ end
45
+
46
+ Package.new(file)
47
+ end
48
+
49
+ def self.from_package(package)
50
+ nil
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,340 @@
1
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
2
+ xmlns:ald="ald://package/schema/2014"
3
+ attributeFormDefault="qualified" elementFormDefault="qualified"
4
+ targetNamespace="ald://package/schema/2014">
5
+
6
+ <xsd:simpleType name="guid-type"> <!-- defines the type of a GUID -->
7
+ <xsd:restriction base="xsd:string">
8
+ <xsd:pattern value="[a-fA-F0-9]{32}"/> <!-- update: do not use any format, just the raw number -->
9
+ </xsd:restriction>
10
+ </xsd:simpleType>
11
+
12
+ <xsd:simpleType name="internetURL">
13
+ <xsd:restriction base="xsd:anyURI">
14
+ <xsd:pattern value="https?://.*"/>
15
+ </xsd:restriction>
16
+ </xsd:simpleType>
17
+
18
+ <xsd:simpleType name="schemaURL">
19
+ <xsd:restriction base="xsd:anyURI">
20
+ <xsd:pattern value="(https?|ald)://.*"/>
21
+ </xsd:restriction>
22
+ </xsd:simpleType>
23
+
24
+ <xsd:simpleType name="word-string">
25
+ <xsd:restriction base="xsd:string">
26
+ <xsd:pattern value="(\w|_)+"/>
27
+ </xsd:restriction>
28
+ </xsd:simpleType>
29
+
30
+ <xsd:simpleType name="architecture">
31
+ <xsd:restriction base="xsd:string">
32
+ <xsd:enumeration value="x32"/>
33
+ <xsd:enumeration value="x64"/>
34
+ <xsd:enumeration value="x128"/>
35
+ </xsd:restriction>
36
+ </xsd:simpleType>
37
+
38
+ <xsd:simpleType name="encoding">
39
+ <xsd:restriction base="xsd:string">
40
+ <xsd:enumeration value="ANSI"/>
41
+ <xsd:enumeration value="Unicode"/>
42
+ </xsd:restriction>
43
+ </xsd:simpleType>
44
+
45
+ <xsd:simpleType name="access">
46
+ <xsd:restriction base="xsd:string">
47
+ <xsd:enumeration value="read"/>
48
+ <xsd:enumeration value="write"/>
49
+ <xsd:enumeration value="read+write"/>
50
+ </xsd:restriction>
51
+ </xsd:simpleType>
52
+
53
+ <!-- I. VERSIONING -->
54
+ <!-- a. semantic versioning -->
55
+ <xsd:simpleType name="semverType">
56
+ <xsd:restriction base="xsd:string">
57
+ <xsd:pattern value="(\d+)\.(\d+)\.(\d+)(\-([0-9A-Za-z\-]+\.)*([0-9A-Za-z\-]+))?(\+([0-9A-Za-z\-]+\.)*([0-9A-Za-z\-]+))?"/>
58
+ </xsd:restriction>
59
+ </xsd:simpleType>
60
+
61
+ <xsd:complexType name="semanticVersion"> <!-- defines a version of a dependency -->
62
+ <xsd:sequence>
63
+ <xsd:element name="customdata" type="ald:customDataType" minOccurs="0" maxOccurs="unbounded"/>
64
+ </xsd:sequence>
65
+
66
+ <xsd:attribute use="required" name="value" type="ald:semverType"/>
67
+ </xsd:complexType>
68
+
69
+ <xsd:group name="semantic-version-switch"> <!-- defines several ways to validate a version -->
70
+ <xsd:choice>
71
+ <xsd:element name="version" type="ald:semanticVersion"/> <!-- the only accepted version number -->
72
+ <xsd:element name="version-list"> <!-- a list of accepted version numbers -->
73
+ <xsd:complexType>
74
+ <xsd:sequence>
75
+ <xsd:element name="version" type="ald:semanticVersion" minOccurs="1" maxOccurs="unbounded"/>
76
+ </xsd:sequence>
77
+ </xsd:complexType>
78
+ </xsd:element>
79
+ <xsd:element name="version-range"> <!-- a range of accepted version numbers -->
80
+ <xsd:complexType>
81
+ <xsd:sequence>
82
+ <xsd:element name="customdata" type="ald:customDataType" minOccurs="0" maxOccurs="unbounded"/>
83
+ </xsd:sequence>
84
+
85
+ <xsd:attribute use="required" type="ald:semverType" name="min-version"/> <!-- the lower bound of a range of accepted version numbers for the item. -->
86
+ <xsd:attribute use="required" type="ald:semverType" name="max-version"/> <!-- the upper bound of a range of accepted version numbers for the item. -->
87
+ </xsd:complexType>
88
+ </xsd:element>
89
+ </xsd:choice>
90
+ </xsd:group>
91
+
92
+ <!-- b. lax versioning -->
93
+ <!-- defines a version of a requirement -->
94
+ <xsd:complexType name="laxVersion">
95
+ <xsd:sequence>
96
+ <xsd:element name="customdata" type="ald:customDataType" minOccurs="0" maxOccurs="unbounded"/>
97
+ </xsd:sequence>
98
+
99
+ <xsd:attribute use="required" type="xsd:string" name="value"/> <!-- carries the version number -->
100
+ </xsd:complexType>
101
+
102
+ <xsd:group name="version-switch"> <!-- defines several ways to validate a version -->
103
+ <xsd:choice>
104
+ <xsd:element name="version" type="ald:laxVersion"/> <!-- the only accepted version number -->
105
+ <xsd:element name="version-list"> <!-- a list of accepted version numbers -->
106
+ <xsd:complexType>
107
+ <xsd:sequence>
108
+ <xsd:element name="version" type="ald:laxVersion" minOccurs="1" maxOccurs="unbounded"/>
109
+ </xsd:sequence>
110
+ </xsd:complexType>
111
+ </xsd:element>
112
+ <xsd:element name="version-range"> <!-- a range of accepted version numbers -->
113
+ <xsd:complexType>
114
+ <xsd:sequence>
115
+ <xsd:element name="customdata" type="ald:customDataType" minOccurs="0" maxOccurs="unbounded"/>
116
+ </xsd:sequence>
117
+
118
+ <xsd:attribute use="required" type="xsd:string" name="min-version"/> <!-- the lower bound of a range of accepted version numbers for the item. -->
119
+ <xsd:attribute use="required" type="xsd:string" name="max-version"/> <!-- the upper bound of a range of accepted version numbers for the item. -->
120
+ </xsd:complexType>
121
+ </xsd:element>
122
+ </xsd:choice>
123
+ </xsd:group>
124
+ <!-- END OF VERSIONING -->
125
+
126
+ <!-- defines data of an author who wrote this item -->
127
+ <xsd:complexType name="authorType">
128
+ <xsd:sequence>
129
+ <xsd:element name="customdata" type="ald:customDataType" minOccurs="0" maxOccurs="unbounded"/>
130
+ </xsd:sequence>
131
+
132
+ <xsd:attribute use="required" type="xsd:string" name="name"/> <!-- the name to identify the author. Can be same as user-name -->
133
+ <xsd:attribute use="optional" type="xsd:string" name="user-name"/> <!-- the AHK forums user name -->
134
+ <xsd:attribute use="optional" type="ald:internetURL" name="homepage"/> <!-- an URL to a homepage of the author -->
135
+ <xsd:attribute use="optional" type="xsd:string" name="email"/> <!-- an email address of the author -->
136
+ <xsd:anyAttribute/>
137
+ </xsd:complexType>
138
+
139
+ <!-- defines a library required for this item to work -->
140
+ <xsd:complexType name="dependencyType">
141
+ <xsd:sequence>
142
+ <xsd:group ref="ald:semantic-version-switch" minOccurs="1" maxOccurs="1"/> <!-- defines the version(s) of this dependency that are accepted -->
143
+ </xsd:sequence>
144
+
145
+ <xsd:attribute use="required" type="xsd:string" name="name"/> <!-- the name of the required item -->
146
+ <xsd:anyAttribute/>
147
+ </xsd:complexType>
148
+
149
+ <!-- specifies that the item can run on the given system -->
150
+ <xsd:complexType name="targetType">
151
+ <xsd:sequence>
152
+ <xsd:element name="language-version" minOccurs="0" maxOccurs="1">
153
+ <xsd:complexType>
154
+ <xsd:group ref="ald:version-switch" minOccurs="1" maxOccurs="1"/>
155
+ </xsd:complexType>
156
+ </xsd:element>
157
+ <xsd:element name="target" type="ald:targetType" minOccurs="0" maxOccurs="unbounded"/>
158
+ </xsd:sequence>
159
+
160
+ <xsd:attribute use="optional" type="xsd:string" name="message"/>
161
+ <xsd:attribute use="optional" type="xsd:NCName" name="id"/>
162
+
163
+ <xsd:attribute use="optional" type="ald:architecture" name="language-architecture"/>
164
+ <xsd:attribute use="optional" type="ald:encoding" name="language-encoding"/>
165
+ <xsd:attribute use="optional" type="ald:architecture" name="system-architecture"/>
166
+ <xsd:attribute use="optional" type="xsd:string" name="system-version"/>
167
+ <xsd:attribute use="optional" type="xsd:string" name="system-type"/>
168
+
169
+ <xsd:anyAttribute/>
170
+ </xsd:complexType>
171
+
172
+ <!-- specifies different files for different platforms -->
173
+ <xsd:complexType name="fileSetType">
174
+ <xsd:sequence>
175
+ <xsd:choice minOccurs="1" maxOccurs="unbounded">
176
+ <xsd:element name="file" type="ald:fileType"/>
177
+ <xsd:element name="file-set" type="ald:fileSetType"/>
178
+ </xsd:choice>
179
+ <xsd:element name="target" minOccurs="0" maxOccurs="unbounded">
180
+ <xsd:complexType>
181
+ <xsd:attribute use="required" type="xsd:NCName" name="ref"/>
182
+ </xsd:complexType>
183
+ </xsd:element>
184
+ </xsd:sequence>
185
+
186
+ <xsd:attribute use="required" type="xsd:string" name="src"/>
187
+ <xsd:anyAttribute/>
188
+ </xsd:complexType>
189
+
190
+ <!-- defines a file being included -->
191
+ <xsd:complexType name="fileType">
192
+ <xsd:sequence>
193
+ <xsd:element name="customdata" type="ald:customDataType" minOccurs="0" maxOccurs="unbounded"/>
194
+ </xsd:sequence>
195
+
196
+ <xsd:attribute name="path" use="required" type="xsd:string"/> <!-- the (internal) path to the file -->
197
+ <xsd:anyAttribute/>
198
+ </xsd:complexType>
199
+
200
+ <!-- defines a tag for the package -->
201
+ <xsd:complexType name="tagType">
202
+ <xsd:sequence>
203
+ <xsd:element name="customdata" type="ald:customDataType" minOccurs="0" maxOccurs="unbounded"/>
204
+ </xsd:sequence>
205
+
206
+ <xsd:attribute name="name" use="required" type="ald:word-string"/> <!-- the name of the tag -->
207
+ <xsd:anyAttribute/>
208
+ </xsd:complexType>
209
+
210
+ <!-- defines a link related to the package -->
211
+ <xsd:complexType name="linkType">
212
+ <xsd:sequence>
213
+ <xsd:element name="customdata" type="ald:customDataType" minOccurs="0" maxOccurs="unbounded"/>
214
+ </xsd:sequence>
215
+
216
+ <xsd:attribute use="required" type="xsd:string" name="name"/> <!-- a short name for what the link points to -->
217
+ <xsd:attribute use="required" type="xsd:string" name="description"/> <!-- a description of what the link points to -->
218
+ <xsd:attribute use="required" type="ald:internetURL" name="href"/> <!-- the URL the link points to -->
219
+ <xsd:anyAttribute/>
220
+ </xsd:complexType>
221
+
222
+ <!-- allows users to include custom data in the package which can be read by ALD clients -->
223
+ <xsd:complexType name="customDataType" mixed="true">
224
+ <xsd:sequence>
225
+ <xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
226
+ </xsd:sequence>
227
+
228
+ <xsd:attribute use="required" type="xsd:string" name="namespace"/> <!-- a string identifying the client using this or the usage for the included data -->
229
+ <xsd:attribute use="optional" type="ald:schemaURL" name="schema"/> <!-- an optional schema URL which can be used for checking the content -->
230
+ <xsd:anyAttribute/>
231
+ </xsd:complexType>
232
+
233
+ <xsd:complexType name="file-list-type">
234
+ <xsd:sequence minOccurs="0" maxOccurs="unbounded">
235
+ <xsd:choice>
236
+ <xsd:element name="file" type="ald:fileType"/>
237
+ <xsd:element name="file-set" type="ald:fileSetType"/>
238
+ </xsd:choice>
239
+ </xsd:sequence>
240
+ </xsd:complexType>
241
+
242
+ <xsd:complexType name="repositoryType">
243
+ <xsd:sequence minOccurs="1" maxOccurs="unbounded">
244
+ <xsd:element name="url">
245
+ <xsd:complexType>
246
+ <xsd:simpleContent>
247
+ <xsd:extension base="xsd:anyURI">
248
+ <xsd:attribute use="required" type="ald:access" name="access"/>
249
+ </xsd:extension>
250
+ </xsd:simpleContent>
251
+ </xsd:complexType>
252
+ </xsd:element>
253
+ </xsd:sequence>
254
+ <xsd:attribute use="required" type="xsd:string" name="type"/>
255
+ <xsd:attribute use="required" type="ald:internetURL" name="view-url"/>
256
+ </xsd:complexType>
257
+
258
+ <!-- root -->
259
+ <xsd:element name="package">
260
+ <xsd:complexType>
261
+ <xsd:sequence>
262
+ <xsd:element name="description" minOccurs="1" maxOccurs="1" type="xsd:string"/>
263
+ <xsd:element name="authors" minOccurs="1" maxOccurs="1"> <!-- the list of authors being involved in this item -->
264
+ <xsd:complexType>
265
+ <xsd:sequence>
266
+ <xsd:element name="author" type="ald:authorType" minOccurs="1" maxOccurs="unbounded"/>
267
+ </xsd:sequence>
268
+ </xsd:complexType>
269
+ </xsd:element>
270
+ <xsd:element name="dependencies" minOccurs="0" maxOccurs="1"> <!-- the list of dependencies this package has -->
271
+ <xsd:complexType>
272
+ <xsd:sequence>
273
+ <xsd:element name="dependency" type="ald:dependencyType" minOccurs="0" maxOccurs="unbounded"/>
274
+ </xsd:sequence>
275
+ </xsd:complexType>
276
+ </xsd:element>
277
+ <xsd:element name="targets" minOccurs="1" maxOccurs="1">
278
+ <xsd:complexType>
279
+ <xsd:sequence>
280
+ <xsd:element name="target" type="ald:targetType" minOccurs="0" maxOccurs="unbounded"/>
281
+ </xsd:sequence>
282
+ </xsd:complexType>
283
+
284
+ <xsd:unique name="targetID">
285
+ <xsd:selector xpath=".//ald:target"/>
286
+ <xsd:field xpath="@ald:id"/>
287
+ </xsd:unique>
288
+ </xsd:element>
289
+ <xsd:element name="files" minOccurs="1" maxOccurs="1"> <!-- holds the lists of files to include -->
290
+ <xsd:complexType>
291
+ <xsd:sequence>
292
+ <xsd:element name="doc" type="ald:file-list-type" minOccurs="1" maxOccurs="1"/> <!-- the list of documentation files -->
293
+ <xsd:element name="src" type="ald:file-list-type" minOccurs="1" maxOccurs="1"/> <!-- the list of source files -->
294
+ </xsd:sequence>
295
+ </xsd:complexType>
296
+ </xsd:element>
297
+ <xsd:element name="development" minOccurs="0" maxOccurs="1">
298
+ <xsd:complexType>
299
+ <xsd:sequence>
300
+ <xsd:element name="repository" type="ald:repositoryType" minOccurs="1" maxOccurs="unbounded"/>
301
+ </xsd:sequence>
302
+ </xsd:complexType>
303
+ </xsd:element>
304
+ <xsd:element name="tags" minOccurs="0" maxOccurs="1"> <!-- the list of tags for the package -->
305
+ <xsd:complexType>
306
+ <xsd:sequence>
307
+ <xsd:element name="tag" type="ald:tagType" minOccurs="1" maxOccurs="unbounded"/>
308
+ </xsd:sequence>
309
+ </xsd:complexType>
310
+ </xsd:element>
311
+ <!-- todo: triggers
312
+ Triggers can be run after installation, before and after update and before uninstall.
313
+ They consist of a command line to execute.
314
+ -->
315
+ <xsd:element name="links" minOccurs="1" maxOccurs="1"> <!-- the list of related links -->
316
+ <xsd:complexType>
317
+ <xsd:sequence>
318
+ <xsd:element name="link" type="ald:linkType" minOccurs="0" maxOccurs="unbounded"/>
319
+ </xsd:sequence>
320
+ </xsd:complexType>
321
+ </xsd:element>
322
+ <xsd:any minOccurs="0"/>
323
+ </xsd:sequence>
324
+
325
+ <xsd:attribute use="required" type="ald:guid-type" name="id"/> <!-- the unique ID of the package -->
326
+ <xsd:attribute use="required" type="xsd:string" name="type"/> <!-- the type of the package -->
327
+ <xsd:attribute use="required" type="xsd:string" name="summary"/>
328
+ <xsd:attribute use="required" type="xsd:string" name="name"/> <!-- the name of the package -->
329
+ <xsd:attribute use="required" type="ald:semverType" name="version"/> <!-- the current version of the package -->
330
+ <xsd:attribute use="optional" type="xsd:string" name="logo-image"/> <!-- the relative path to a logo image, if one is included -->
331
+ <xsd:attribute use="optional" type="ald:internetURL" name="homepage"/>
332
+ <xsd:anyAttribute/>
333
+ </xsd:complexType>
334
+
335
+ <xsd:keyref name="target-ref" refer="ald:targetID">
336
+ <xsd:selector xpath=".//ald:file-set/ald:target"/>
337
+ <xsd:field xpath="@ald:ref"/>
338
+ </xsd:keyref>
339
+ </xsd:element>
340
+ </xsd:schema>
metadata ADDED
@@ -0,0 +1,101 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ALD
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - maul.esel
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-03-17 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rubyzip
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.1'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '1.1'
30
+ - !ruby/object:Gem::Dependency
31
+ name: nokogiri
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '1.6'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '1.6'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rake
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ description: A gem containing helpers for the ALD API, the ALD package format and
63
+ ALD package definitions.
64
+ email:
65
+ executables: []
66
+ extensions: []
67
+ extra_rdoc_files: []
68
+ files:
69
+ - lib/ALD.rb
70
+ - lib/ALD/package.rb
71
+ - lib/ALD/definition.rb
72
+ - lib/ALD/package_generator.rb
73
+ - lib/ALD/definition_generator.rb
74
+ - lib/ALD/exceptions.rb
75
+ - lib/ALD/schema.xsd
76
+ homepage: https://github.com/Library-Distribution/ALD.rb
77
+ licenses:
78
+ - MIT
79
+ post_install_message:
80
+ rdoc_options: []
81
+ require_paths:
82
+ - lib
83
+ required_ruby_version: !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ required_rubygems_version: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ requirements: []
96
+ rubyforge_project:
97
+ rubygems_version: 1.8.25
98
+ signing_key:
99
+ specification_version: 3
100
+ summary: Utility gem for the ALD protocol
101
+ test_files: []