module LANGScript

Constants

LNG_BEGIN
LNG_END
LNG_TAGS
MAJOR
MINOR
TAG_BEGIN
TAG_LINE
TAG_NAME
TAG_TEXT

Public Instance Methods

load(tag, lang) click to toggle source
# File lang-script.rb, line 67
def load(tag, lang)
  load_files unless LANGUAGES.keys.include? lang
  if LANGUAGES[lang]
    if LANGUAGES[lang][tag]
      return LANGUAGES[lang][tag]
    else
      puts "Failed to load tag '#{tag}': Could not find tag"
    end
  else
    puts "Failed to load tag '#{tag}': Could not find language"
  end
  return ''
end
load_files() click to toggle source
# File lang-script.rb, line 16
def load_files
  Dir.entries(FOLDER).each do |entry|
    next unless FileTest.file?(FOLDER + '/' + entry)
    txt   = File.open(FOLDER + '/' + entry, 'rb') {|f| f.read}
    major = txt[0].unpack('U').first
    minor = txt[1].unpack('U').first

    if major > MAJOR || (major >= MAJOR && minor > MINOR)
      puts "LANG Script version not compatible"
      return ''
    end

    enc   = txt[2].unpack('U').first > 1
    txt   = txt[3..-1]
    txt.split(LNG_END).each do |l|
      langname = enc ? decrypt(l[LNG_BEGIN.size...l.index(LNG_TAGS)]) : l[LNG_BEGIN.size...l.index(LNG_TAGS)]
      unless l[0...LNG_BEGIN.size] == LNG_BEGIN
        puts "Invalid language file"
        return ''
      end
      l[(l.index(LNG_TAGS) + LNG_TAGS.size)..-1].split("\n").each do |t|
        unless t[0...TAG_BEGIN.size] == TAG_BEGIN
          puts "Invalid language file"
          return ''
        end
        unless t[TAG_BEGIN.size..(TAG_NAME.size+1)] == TAG_NAME
          puts "Invalid language file"
          return ''
        end
        i = t.index(TAG_TEXT)
        unless i
          puts "Invalid language file"
          return ''
        end
        name = enc ? decrypt(t[(TAG_BEGIN.size + TAG_NAME.size)...i]) : t[(TAG_BEGIN.size + TAG_NAME.size)...i].force_encoding('UTF-8')
        text = enc ? decrypt(t[(i+TAG_TEXT.size)...t.size]) : t[(i+TAG_TEXT.size)...t.size].force_encoding('UTF-8')
        begin
          LANGUAGES[langname] ||= {}
          LANGUAGES[langname][name] = text.gsub(TAG_LINE.force_encoding('UTF-8'), "\n")
        rescue
          puts "Invalid language file"
          return ''
        end
      end
    end
  end
end