Sha256: 5c03227f0e3260694480abca831e4fda397233a3cf5d636b54b5f6f11375c3d5
Contents?: true
Size: 1.8 KB
Versions: 2
Compression:
Stored size: 1.8 KB
Contents
# frozen_string_literal: true module DiverDown class Web class Metadata require 'diver_down/web/metadata/source_metadata' require 'diver_down/web/metadata/source_alias' attr_reader :source_alias # @param path [String] def initialize(path) @path = path load end # @param source_name [String] # @return [DiverDown::Web::Metadata::SourceMetadata] def source(source_name) @source_map[source_name] end # @return [Hash] def to_h source_names = @source_map.keys.sort sources = source_names.filter_map { h = source(_1).to_h [_1, h] unless h.empty? }.to_h { sources:, source_alias: @source_alias.to_h, } end # Write store to file # @return [void] def flush File.write(@path, to_h.to_yaml) end private def load @source_map = Hash.new { |h, source_name| h[source_name] = DiverDown::Web::Metadata::SourceMetadata.new } @source_alias = DiverDown::Web::Metadata::SourceAlias.new loaded = YAML.load_file(@path) return if loaded.nil? # NOTE: This is for backward compatibility. It will be removed in the future. (loaded[:sources] || loaded || []).each do |source_name, source_hash| source(source_name).memo = source_hash[:memo] if source_hash[:memo] if source_hash[:modules].is_a?(Array) source(source_name).module = source_hash[:modules][0] elsif source_hash[:module] source(source_name).module = source_hash[:module] end end loaded[:source_alias]&.each do |alias_name, source_names| @source_alias.update_alias(alias_name, source_names) end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
diver_down-0.0.1.alpha16 | lib/diver_down/web/metadata.rb |
diver_down-0.0.1.alpha15 | lib/diver_down/web/metadata.rb |