Sha256: 7dff53e9c51185bbcf37b3d123274850ebc00671bf8f66fbcd6f75ba3a71b8c0

Contents?: true

Size: 982 Bytes

Versions: 2

Compression:

Stored size: 982 Bytes

Contents

# Ruby stlib
require 'kconv'
require 'matrix'
require 'singleton'
require 'yaml'

# Q core
require 'qlang/lexer'
require 'qlang/parser'
require 'qlang/utils/ruby_ext'
require "qlang/version"

module Qlang
  # $meta_info indicate what and how to do.
  class MetaInfo
    include Singleton
    attr_accessor :lang, :opts, :mode

    LANGS_HASH = YAML.load_file("./lib/qlang/utils/langs.yml")['langs']

    def _load
      # compiles into R as default.
      lang = :r
    end

    def langs_hash
      LANGS_HASH
    end

    def lang_str
      LANGS_HASH[@lang.to_s]
    end
  end
  $meta_info = MetaInfo.instance

  class << self
    def compile(str)
      lexed = Lexer.execute(str)
      Kconv.tosjis(Parser.execute(lexed))
    end

    $meta_info.langs_hash.keys.each do |lang_name|
      define_method("to_#{lang_name}") do |*opts|
        $meta_info.lang = lang_name.to_sym
        $meta_info.opts = opts
        Qlang
      end
    end

  end
end

# Make alias as Q
Q = Qlang

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
qlang-0.0.27182110 lib/qlang.rb
qlang-0.0.27182100 lib/qlang.rb