Sha256: 1bacec805e8ef5b4a1d8bf47493a0dbf2b67daeb118a82738b0ac984edda886b

Contents?: true

Size: 1.15 KB

Versions: 6

Compression:

Stored size: 1.15 KB

Contents

# frozen_string_literal: true

module Icarus
  module Mod
    module Tools
      # Sync methods
      class Modinfo
        attr_reader :data, :id, :created_at, :updated_at

        HASHKEYS = %i[name author version compatibility description fileType fileURL].freeze

        def initialize(data, id: nil, created: nil, updated: nil)
          @id = id
          @created_at = created
          @updated_at = updated
          read(data)
        end

        def read(data)
          @data = data.is_a?(String) ? JSON.parse(data, symbolize_names: true) : data
        end

        def to_json(*args)
          JSON.generate(@data, *args)
        end

        def to_h
          @data || {}
        end

        def to_s
          format(
            "%-<name>30s %-<author>20s v%-<version>10s %<description>s",
            name:, author:, version: (version || "None"), description:
          )
        end

        def method_missing(method_name, *_args, &)
          to_h[method_name.to_sym]&.strip
        end

        def respond_to_missing?(method_name, include_private = false)
          @data&.key?(method_name.to_sym) || super
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
Icarus-Mod-Tools-1.3.5 lib/icarus/mod/tools/modinfo.rb
Icarus-Mod-Tools-1.3.4 lib/icarus/mod/tools/modinfo.rb
Icarus-Mod-Tools-1.3.3 lib/icarus/mod/tools/modinfo.rb
Icarus-Mod-Tools-1.3.2 lib/icarus/mod/tools/modinfo.rb
Icarus-Mod-Tools-1.3.1 lib/icarus/mod/tools/modinfo.rb
Icarus-Mod-Tools-1.3.0 lib/icarus/mod/tools/modinfo.rb