Class: Spider::App::AppSpec

Inherits:
Object show all
Defined in:
lib/spiderfw/app.rb

Constant Summary collapse

@@attributes =
[]

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.array_attribute(name, options = {}) ⇒ Object



253
254
255
256
257
258
259
260
261
262
263
# File 'lib/spiderfw/app.rb', line 253

def self.array_attribute(name, options={})
    @@attributes << name
    str = <<END_OF_EVAL
    def #{name}(*vals)
        @#{name} = vals unless vals.empty?
        @#{name} ||= []
        @#{name}
    end
END_OF_EVAL
    class_eval(str)
end

.attribute(name, options = {}) ⇒ Object



240
241
242
243
244
245
246
247
248
249
250
251
# File 'lib/spiderfw/app.rb', line 240

def self.attribute(name, options={})
    @@attributes << name
    str = <<END_OF_EVAL
    def #{name}(val=nil)
        @#{name} = val if val
        @#{name} ||= #{options[:default].inspect}
        @#{name}
    end
    alias :#{name}= :#{name}
END_OF_EVAL
    class_eval(str)
end

.eval(text, path = nil) ⇒ Object



309
310
311
# File 'lib/spiderfw/app.rb', line 309

def self.eval(text, path=nil)
    self.new.eval(text, path)
end

.load(spec_path) ⇒ Object



300
301
302
# File 'lib/spiderfw/app.rb', line 300

def self.load(spec_path)
    self.new.load(spec_path)
end

.parse_hash(h) ⇒ Object



325
326
327
328
329
330
331
332
333
334
335
# File 'lib/spiderfw/app.rb', line 325

def self.parse_hash(h)
    spec = self.new
    h.each do |key, value|
        if value.is_a?(Array)
            spec.send(:"#{key}", *value)
        else
            spec.send(:"#{key}", value)
        end
    end
    spec
end

Instance Method Details

#author(val = nil) ⇒ Object



289
290
291
292
293
# File 'lib/spiderfw/app.rb', line 289

def author(val = nil)
    @authors = [val] if val
    @authors ||= []
    @authors[0]
end

#eval(text, path = nil) ⇒ Object



304
305
306
307
# File 'lib/spiderfw/app.rb', line 304

def eval(text, path=nil)
    self.instance_eval(text)
    self
end

#id(val = nil) ⇒ Object



280
281
282
# File 'lib/spiderfw/app.rb', line 280

def id(val=nil)
    self.app_id(val)
end

#load(spec_path) ⇒ Object



295
296
297
298
# File 'lib/spiderfw/app.rb', line 295

def load(spec_path)
    self.eval(File.read(spec_path), spec_path)
    self
end

#load_after(*vals) ⇒ Object



337
338
339
340
341
342
# File 'lib/spiderfw/app.rb', line 337

def load_after(*vals)
    @load_after = vals unless vals.empty?
    unless @load_after
        return self.depends + self.depends_optional
    end
end

#to_hObject



313
314
315
316
317
318
319
# File 'lib/spiderfw/app.rb', line 313

def to_h
    h = {}
    @@attributes.each do |a|
        h[a] = send(a)
    end
    h
end

#to_json(opts = nil) ⇒ Object



321
322
323
# File 'lib/spiderfw/app.rb', line 321

def to_json(opts=nil)
    to_h.to_json
end

#version(val = nil) ⇒ Object



284
285
286
287
# File 'lib/spiderfw/app.rb', line 284

def version(val=nil)
    @version = Gem::Version.new(val) if val
    @version
end