Class: CompositeCode

Inherits:
Code
  • Object
show all
Defined in:
lib/compositecode.rb

Instance Attribute Summary collapse

Attributes inherited from Code

#replace_values, #target_file_name, #template_file_name

Instance Method Summary collapse

Methods inherited from Code

#generate_code, #replace_template

Constructor Details

#initialize(command) ⇒ CompositeCode

Returns a new instance of CompositeCode.



10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/compositecode.rb', line 10

def initialize(command)
  @template_dir  = command.template_dir
  @classes     = command.classes
  @operations  = command.operations
  @target_dir  = command.target_dir
  @base_name   = command.base_name
  
  @template_files = Array.new
  @template_replace_keys = Array.new
  
  @codes = []
end

Instance Attribute Details

#codesObject

Returns the value of attribute codes.



8
9
10
# File 'lib/compositecode.rb', line 8

def codes
  @codes
end

Instance Method Details

#classes_to_codesObject



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/compositecode.rb', line 26

def classes_to_codes
  @classes = @classes || @default_classes
  default_replace_values   = get_default_replace_values
  operations         = @operations[0]
  operations_template  = File.open(File.join(@template_dir,"operations")).readlines.join
  x = 0
  
  @classes.each do |template_classes|
    template   = @template_files[x] || template
    key    = @template_replace_keys[x] || key
    operations = @operations[x] || operations
    x+=1
    
    template_classes.each do |class_name|
     replace_values = default_replace_values.clone
     replace_values["#{key}"] = class_name
     replace_values["lc_#{key}"] = class_name.downcase
     replace_values["operations"] = ""
      operations.each do |operation|
       replace_values["operations"] << operations_template.gsub("#operation#",operation) unless operation == " "
      end
      
      @codes << Code.new( template,
               File.join(@target_dir,"#{class_name.downcase}#{File.extname(template)}"),
               replace_values )
    end
  end
  return @codes
end

#default(*classes_name) ⇒ Object



70
71
72
73
74
75
# File 'lib/compositecode.rb', line 70

def default(*classes_name)
  @default_classes = [] 
  classes_name.each do |class_name|
    @default_classes << [class_name]
  end
end

#executeObject



76
77
78
79
80
# File 'lib/compositecode.rb', line 76

def execute
  load_readme
  classes_to_codes
  @codes.each { |code| code.execute }
end

#get_default_replace_valuesObject



56
57
58
59
60
61
62
63
64
# File 'lib/compositecode.rb', line 56

def get_default_replace_values
  x = -1
  default_replace_values = Hash.new
  @template_replace_keys.each do |key|
    default_replace_values["#{key}"] = @classes[x+=1][0]
    default_replace_values["lc_#{key}"] = @classes[x][0].downcase
  end
  return default_replace_values
end

#load_readmeObject



22
23
24
# File 'lib/compositecode.rb', line 22

def load_readme
  eval(File.read( File.join(@template_dir,"readme") ))
end

#template(template_name, replace_key) ⇒ Object



66
67
68
69
# File 'lib/compositecode.rb', line 66

def template(template_name,replace_key)
  @template_files << File.join(@template_dir,template_name)
  @template_replace_keys << replace_key
end