Aldeia RPG

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Suporte no desenvolvimento de jogos


    Leitor de arquivos INI

    Valentine
    Valentine
    Administrador
    Administrador

    Medalhas : Leitor de arquivos INI ZgLkiRU
    Mensagens : 5232
    Créditos : 1149

    Leitor de arquivos INI Empty Leitor de arquivos INI

    Mensagem por Valentine Dom Fev 07, 2021 2:48 pm

    Sobre:
    Lê dados de arquivos INI de forma simples e rápida. Este script lê tanto números inteiros e caracteres com codificação UTF-8, quanto boleanos e números decimais.

    Script:
    Código:
    #==============================================================================
    # ** INI
    #------------------------------------------------------------------------------
    #  Este script lida com arquivos INI.
    #------------------------------------------------------------------------------
    #  Autor: Valentine
    #==============================================================================

    class INI
     
      def initialize(filename)
        @data = {}
        create_properties(filename)
      end

      def self.load_file(filename)
        new(filename)
      end
     
      def create_properties(filename)
        file = File.open(filename, 'r:bom|UTF-8', &:read)
        key = nil
        # Divide file em substrings com base apenas na quebra
        #de linha, e não nos espaços em branco
        file.split("\n").each do |line|
          if line.start_with?('[')
            key = line[1...line.size - 1]
            @data[key] = {}
          # Se não for uma linha em branco ou comentário
          elsif !line.strip.empty? && !line.include?(';')
            name, value = line.split('=')
            @data[key][name.rstrip] = parse(value.lstrip)
          end
        end
      end
     
      def [](key)
        @data[key]
      end
     
      def each(&block)
        @data.each { |key, property| yield(key, property) }
      end
     
      def parse(value)
        if value =~ /^([\d_]+)$/
          return value.to_i
        elsif value =~ /^([\d_]*\.\d+)$/
          return value.to_f
        elsif value =~ /true|false/i
          return value.downcase == 'true'
        else
          # O gsub, em vez de delete, remove aspas simples e duplas e evita
          #que o caractere \ seja removido do restante do texto
          return value.gsub(/\"|'/, '')
        end
      end
     
    end

    Exemplo:
    Código:
    filename = 'Settings.ini'
    ini = INI.load_file(filename)
    ini['Settings']['Number']
    ini['Settings']['String']
    ini['Settings']['Bool']

    Créditos:
    Valentine


    _________________
    Leitor de arquivos INI Logof5

    DevWithCoffee gosta desta mensagem


      Data/hora atual: Qua Jul 28, 2021 4:40 am