Sha256: de98850327516c9be60d81a827147ae0abe93adaa7619e497543b49d0d5783f1

Contents?: true

Size: 1.69 KB

Versions: 5

Compression:

Stored size: 1.69 KB

Contents

# frozen_string_literal: true

require "yaml"
require "wb/note"
require "wb/filename"

module WB
  class Config
    attr_reader :path

    def initialize(config_path)
      @path = config_path
      @config = YAML.safe_load(IO.read(config_path))
    end

    def notes
      local_notes = Dir[File.join(WB.config.project_root, "*")]
      global_notes = [WB.config.personal_workbook, WB.config.work_workbook]

      [*local_notes, *global_notes].each_with_index.map do |note, index|
        WB::Note.new(note, index)
      end
    end

    def working_hours
      @working_hours ||= workbook.fetch("working_hours").split("-")
    end

    def personal_workbook
      @personal_workbook ||= workbook.fetch("personal")
    end

    def work_workbook
      @work_workbook ||= workbook.fetch("work")
    end

    def project_root
      @project_root ||= project.fetch("note_folder")
    end

    def project_date_format
      @project_date_format ||= begin
        date_format = fetch_config(key: "date_format", default: DEFAULT_DATE_FORMAT)
        Filename.generate(date_format)
      end
    end

    def extension
      @extension ||= begin
        fetch_config(key: "extension", default: DEFAULT_EXTENSION_FORMAT)
      end
    end

    private

    attr_reader :config

    DEFAULT_DATE_FORMAT = "%F"
    private_constant :DEFAULT_DATE_FORMAT

    DEFAULT_EXTENSION_FORMAT = "md"
    private_constant :DEFAULT_EXTENSION_FORMAT

    def workbook
      @_workbook ||= config.fetch("workbook")
    end

    def project
      @_project ||= workbook.fetch("project")
    end

    def fetch_config(key:, default:)
      project.fetch(key) do
        workbook.fetch(key) do
          default
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
wb-1.1.0 lib/wb/config.rb
wb-1.0.3 lib/wb/config.rb
wb-1.0.2 lib/wb/config.rb
wb-1.0.1 lib/wb/config.rb
wb-1.0.0 lib/wb/config.rb