Class: Purple::Script

Inherits:
Object
  • Object
show all
Defined in:
lib/purple/script.rb

Defined Under Namespace

Classes: PackageScript

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeScript

Returns a new instance of Script.



53
54
55
56
# File 'lib/purple/script.rb', line 53

def initialize
    @cabinet = PurpleCabinet.new
    @package_scripts = Array.new
end

Instance Attribute Details

#cabinetObject (readonly)

Returns the value of attribute cabinet.



57
58
59
# File 'lib/purple/script.rb', line 57

def cabinet
  @cabinet
end

Class Method Details

.dump(cabinet) ⇒ Object



101
102
103
# File 'lib/purple/script.rb', line 101

def self.dump cabinet
    PURPLE_SCRIPT_TEMPLATE.call cabinet
end

.open(filename) ⇒ Object



41
42
43
# File 'lib/purple/script.rb', line 41

def self.open filename
    parse File.open(filename).read
end

.parse(string) ⇒ Object



45
46
47
48
49
50
51
# File 'lib/purple/script.rb', line 45

def self.parse string
    script = self.new
    puts "DEBUG Purple::Script##parse: script_string=#{string}" if $DEBUG
    script.instance_eval string
    puts "DEBUG Purple::Script##parse: cabinet=#{script.cabinet}" if $DEBUG
    script.cabinet
end

.write(cabinet, filename) ⇒ Object



96
97
98
99
100
# File 'lib/purple/script.rb', line 96

def self.write cabinet, filename
    File.open filename, 'w' do |f|
        f.write dump(cabinet)
    end
end

Instance Method Details

#inferObject



79
80
81
82
83
84
85
86
# File 'lib/purple/script.rb', line 79

def infer
    if not @cabinet.long_name
        @cabinet.long_name = @cabinet.packages[0].long_name
    end
    if not @cabinet.name
        @cabinet.name = @cabinet.packages[0].name
    end
end

#infer_allObject



88
89
90
91
92
93
94
# File 'lib/purple/script.rb', line 88

def infer_all
    @package_scripts.each { |pkg|
        puts "DEBUG PurpleScript#infer_all" if $DEBUG
        pkg.infer
    }
    infer
end

#long_name(name) ⇒ Object



63
64
65
# File 'lib/purple/script.rb', line 63

def long_name name
    @cabinet.long_name = name
end

#name(name) ⇒ Object



59
60
61
# File 'lib/purple/script.rb', line 59

def name name
    @cabinet.name = name
end

#package(name = nil) {|package| ... } ⇒ Object

Yields:



71
72
73
74
75
76
77
# File 'lib/purple/script.rb', line 71

def package name=nil
    puts "> #package(#{name.inspect})" if $DEBUG
    package = PackageScript.new @cabinet
    @package_scripts << package
    package.name name
    yield package if block_given?
end

#url(url) ⇒ Object



67
68
69
# File 'lib/purple/script.rb', line 67

def url url
    @cabinet.add_url url
end