Sha256: 6e8cbdfe942362d28e3e08c3a6b2793ab2edf1a848c561459831324db0f1fe5e
Contents?: true
Size: 1.91 KB
Versions: 1
Compression:
Stored size: 1.91 KB
Contents
# frozen_string_literal: true require 'yaml' module DiverDown class Web class ModuleStore BLANK_ARRAY = [].freeze BLANK_MEMO = '' BLANK_RE = /\A\s*\z/ private_constant(:BLANK_RE) def initialize(path) @path = path @store = load end # @param source_name [String] # @param module_names [Array<String>] def set_modules(source_name, module_names) source = (@store[source_name] ||= {}) source[:modules] = module_names.dup.reject do BLANK_RE.match?(_1) end.freeze end # @param source_name [String] # @return [Array<Module>] def get_modules(source_name) return BLANK_ARRAY unless @store.key?(source_name) @store[source_name][:modules] || BLANK_ARRAY end # @param source_name [String] # @param memo [String] # @return [void] def set_memo(source_name, memo) source = (@store[source_name] ||= {}) source[:memo] = memo.strip end # @param source_name [String] # @return [String] def get_memo(source_name) return BLANK_MEMO unless @store.key?(source_name) @store[source_name][:memo] || BLANK_MEMO end # @param source_name [String] # @return [Boolean] def classified?(source_name) get_modules(source_name).any? end # @return [Hash] def to_h sorted_store = {} @store.keys.sort.each do |key| sorted_store[key] = @store[key] end sorted_store end # Write store to file # @return [void] def flush File.write(@path, to_h.to_yaml) end private def load store = {} begin loaded = YAML.load_file(@path) store.merge!(loaded) if loaded rescue StandardError # Ignore error end store end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
diver_down-0.0.1.alpha13 | lib/diver_down/web/module_store.rb |