Class: Guff::JavaSource::SourceFile

Inherits:
Object
  • Object
show all
Defined in:
lib/guff/java_source.rb

Instance Method Summary collapse

Constructor Details

#initializeSourceFile

Returns a new instance of SourceFile.



530
531
532
533
534
# File 'lib/guff/java_source.rb', line 530

def initialize
    @package = 'set the package'
    @classes = []
    @imports = []
end

Instance Method Details

#begin_class(name) {|result| ... } ⇒ Object

Yields:

  • (result)


566
567
568
569
570
571
572
# File 'lib/guff/java_source.rb', line 566

def begin_class(name)
    @name = name
    result = Class.new(name, @package, self)
    @classes << result
    yield result if block_given?
    self
end

#import(i) ⇒ Object



550
551
552
553
554
555
# File 'lib/guff/java_source.rb', line 550

def import(i)
    if (!@imports.include?(i))
        @imports << i
    end
    self
end

#package(p) ⇒ Object



561
562
563
564
# File 'lib/guff/java_source.rb', line 561

def package(p)
    @package=p
    self
end

#package_as_directoryObject



557
558
559
# File 'lib/guff/java_source.rb', line 557

def package_as_directory
    @package.split('.').join('/')
end

#package_defObject



588
589
590
# File 'lib/guff/java_source.rb', line 588

def package_def
    "package #{@package};"
end

#save_in(root) ⇒ Object



536
537
538
539
540
541
542
543
544
545
546
547
548
# File 'lib/guff/java_source.rb', line 536

def save_in(root)
    writer = Printer.new
    write_to(writer)
    directory = "#{root}/#{package_as_directory}"
    if (!FileTest.exist?(directory))
        FileUtils.mkdir_p(directory)
    end
    filename =  directory << "/" << @name << ".java"
    file = File.new(filename, "w")
    file.write(writer.contents)
    file.close
    filename
end

#write_to(writer) ⇒ Object



574
575
576
577
578
579
580
581
582
583
584
585
586
# File 'lib/guff/java_source.rb', line 574

def write_to(writer)
    writer.line(package_def).line
    @imports.each do |import|
        writer.line("import #{import};")
    end
    if (!@imports.empty?)
        writer.line
    end
    @classes.each {|c|
        c.write_to(writer)
    }
    writer
end