Sha256: 6948274d880ef876cbf885aebe2d0dceb21d17022348db9d1b64854803e85280

Contents?: true

Size: 1.41 KB

Versions: 5

Compression:

Stored size: 1.41 KB

Contents

module Qlang
  module Exec
    class Compiler
      def initialize(args)
        @args = args
      end

      def output!
        ch_compile_type(@args.first)
        parse_string = parse(@args[1])
        write!(@args[2], parse_string)

      rescue Exception => e
        raise e if @options[:trace] || e.is_a?(SystemExit)

        print "#{e.class}: " unless e.class == RuntimeError
        puts "#{e.message}"
        puts "  Use --trace for backtrace."
        exit 1
      ensure
        exit 0
      end

      private

        def ch_compile_type(lang)
          case lang
          when '-rb'
            Qlang.to_ruby
          when '-r'
            Qlang.to_r
          when '-py'
            Qlang.to_python
          else
            print 'Q support only Ruby and R now.'
          end
        end

        def parse(file_path)
          file = open_file(file_path)
          input_string = read_file(file)
          file.close
          input_string.gsub(/(.*)I love mathematics\.(.*)Q\.E\.D(.*)/m) {
            "#{$1}#{Kconv.tosjis(Qlang.compile($2))}#{$3}"
          }
        end

        def write!(output_path, string)
          open(output_path, 'w') do |f|
            f.puts string
          end
        end

        def open_file(filename, flag = 'r')
          return if filename.nil?
          File.open(filename, flag)
        end

        def read_file(file)
          file.read
        end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
qlang-0.0.27182123 lib/qlang/exec.rb
qlang-0.0.27182122 lib/qlang/exec.rb
qlang-0.0.27182121 lib/qlang/exec.rb
qlang-0.0.27182120 lib/qlang/exec.rb
qlang-0.0.27182110 lib/qlang/exec.rb