Class: Cfp_Translate

Inherits:
Object
  • Object
show all
Defined in:
lib/libcfenjin/cfp_translate.rb

Instance Method Summary collapse

Constructor Details

#initialize(cf, parser = nil) ⇒ Cfp_Translate

Returns a new instance of Cfp_Translate.



13
14
15
16
17
# File 'lib/libcfenjin/cfp_translate.rb', line 13

def initialize cf,parser=nil
  @cf = cf
  @parser = parser
  @parser = Cfruby::Parser.new(@cf) if @parser == nil
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(methId, line) ⇒ Object

This method is reached when an action does not exist (e.g. myshellcommands) - in this implementation it sends out a warning and comments out the code - so it will compile



94
95
96
97
# File 'lib/libcfenjin/cfp_translate.rb', line 94

def method_missing(methId,line)
   Cfruby.controller.inform('verbose', "Warning: undefined user action #{methId} - #{line}") if line.strip != ''
  '# Not recognised: '+line
end

Instance Method Details

#conditionals(code) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/libcfenjin/cfp_translate.rb', line 67

def conditionals code
  r = []
  blocklist = []  # ---- Tracks blocks for inserting 'end'
  code.each do | line, num |
    if @parser.conditional? line
      blocklist.push [ r.size, line.strip ] # ---- note position for end of block
      line = @parser.form_conditional line
    end
    r.push line
  end

  # ---- Insert block ends
  relpos = 0
  if blocklist.size > 0
    tmp,first = blocklist.shift # --- Shift off first block start
    blocklist.each do | num, s |
      r.insert(num+relpos,'  end # ---- '+s)
      relpos += 1
    end
    r.push 'end # ---- '+first
  end
  r
end

#control(line) ⇒ Object



34
35
36
# File 'lib/libcfenjin/cfp_translate.rb', line 34

def control line
  @parser.form_control line
end

#copy(line) ⇒ Object



46
47
48
# File 'lib/libcfenjin/cfp_translate.rb', line 46

def copy line
  @parser.form_copy line
end

#directories(line) ⇒ Object



58
59
60
# File 'lib/libcfenjin/cfp_translate.rb', line 58

def directories line
  @parser.form_directories line
end

#do_translate(action, line) ⇒ Object

Each executable Cfruby line comes through this method for parsing - returns the translated version - as related to the action



22
23
24
25
26
27
28
# File 'lib/libcfenjin/cfp_translate.rb', line 22

def do_translate action,line
  if action != 'initialize'
    send(action,line)
  else
    line
  end
end

#editfiles(line) ⇒ Object



54
55
56
# File 'lib/libcfenjin/cfp_translate.rb', line 54

def editfiles line
  @parser.form_editfiles line
end

#files(line) ⇒ Object



38
39
40
# File 'lib/libcfenjin/cfp_translate.rb', line 38

def files line
  @parser.form_files line
end

#groups(line) ⇒ Object



30
31
32
# File 'lib/libcfenjin/cfp_translate.rb', line 30

def groups line
  @parser.form_groups line
end


42
43
44
# File 'lib/libcfenjin/cfp_translate.rb', line 42

def links line
  @parser.form_links line
end

#shellcommands(line) ⇒ Object



62
63
64
65
# File 'lib/libcfenjin/cfp_translate.rb', line 62

def shellcommands line
  # Cfruby.controller.inform('debug', "shell command: #{line}") if line.strip != ''
  @parser.form_shellcommands line
end

#tidy(line) ⇒ Object



50
51
52
# File 'lib/libcfenjin/cfp_translate.rb', line 50

def tidy line
  @parser.form_tidy line
end