Class: Protobuf::Generate::Language

Inherits:
Object
  • Object
show all
Defined in:
lib/protobuf/generate/language.rb,
lib/protobuf/generate/language/c.rb

Direct Known Subclasses

C

Defined Under Namespace

Modules: Helpers Classes: C

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ast) ⇒ Language

– TODO: AST tree should include name of .proto that generated it.



53
54
55
# File 'lib/protobuf/generate/language.rb', line 53

def initialize ast
  @ast = ast
end

Class Method Details

.find(language) ⇒ Object



43
44
45
# File 'lib/protobuf/generate/language.rb', line 43

def self.find language
  @@languages.find{|l| l.match(language.to_s)}
end

.inherited(klass) ⇒ Object



47
48
49
# File 'lib/protobuf/generate/language.rb', line 47

def self.inherited klass
  (@@languages ||= []) << klass
end

.match(language = nil) ⇒ Object



33
34
35
36
# File 'lib/protobuf/generate/language.rb', line 33

def self.match language = nil
  @language = language if language
  @language
end

.templates(templates = nil) ⇒ Object



38
39
40
41
# File 'lib/protobuf/generate/language.rb', line 38

def self.templates templates = nil
  @templates = templates if templates
  @templates
end

Instance Method Details

#generate(template, filename) ⇒ Object



61
62
63
64
65
66
67
# File 'lib/protobuf/generate/language.rb', line 61

def generate template, filename
  ast = @ast
  ast.extend(Helpers)
  ast.template = template
  ast.filename = filename
  Erubis::Eruby.new(File.read(template), filename: template).evaluate(ast)
end

#templatesObject



57
58
59
# File 'lib/protobuf/generate/language.rb', line 57

def templates
  self.class.templates
end