From 87b6e79952b90daddae5078581af971c9ca839a7 Mon Sep 17 00:00:00 2001 From: Alex Ling Date: Tue, 21 Jul 2020 12:33:50 +0000 Subject: [PATCH] Use macro to DRY the `self.default` method --- src/library/library.cr | 7 +------ src/logger.cr | 7 +------ src/mangadex/api.cr | 7 +------ src/mangadex/downloader.cr | 7 +------ src/plugin/downloader.cr | 8 +------- src/queue.cr | 7 +------ src/server.cr | 7 +------ src/storage.cr | 7 +------ src/util/util.cr | 9 +++++++++ 9 files changed, 17 insertions(+), 49 deletions(-) diff --git a/src/library/library.cr b/src/library/library.cr index a062105..cba0421 100644 --- a/src/library/library.cr +++ b/src/library/library.cr @@ -2,12 +2,7 @@ class Library property dir : String, title_ids : Array(String), scan_interval : Int32, title_hash : Hash(String, Title) - def self.default : self - unless @@default - @@default = new - end - @@default.not_nil! - end + use_default def initialize register_mime_types diff --git a/src/logger.cr b/src/logger.cr index 8c049ed..3777e9c 100644 --- a/src/logger.cr +++ b/src/logger.cr @@ -8,12 +8,7 @@ class Logger @@severity : Log::Severity = :info - def self.default : self - unless @@default - @@default = new - end - @@default.not_nil! - end + use_default def initialize level = Config.current.log_level diff --git a/src/mangadex/api.cr b/src/mangadex/api.cr index 30e5c69..fd7b06e 100644 --- a/src/mangadex/api.cr +++ b/src/mangadex/api.cr @@ -131,12 +131,7 @@ module MangaDex end class API - def self.default : self - unless @@default - @@default = new - end - @@default.not_nil! - end + use_default def initialize @base_url = Config.current.mangadex["api_url"].to_s || diff --git a/src/mangadex/downloader.cr b/src/mangadex/downloader.cr index 9b0f232..3541d51 100644 --- a/src/mangadex/downloader.cr +++ b/src/mangadex/downloader.cr @@ -7,12 +7,7 @@ module MangaDex .to_i32 @retries : Int32 = Config.current.mangadex["download_retries"].to_i32 - def self.default : self - unless @@default - @@default = new - end - @@default.not_nil! - end + use_default def initialize super diff --git a/src/plugin/downloader.cr b/src/plugin/downloader.cr index 9b55fd4..25dca6d 100644 --- a/src/plugin/downloader.cr +++ b/src/plugin/downloader.cr @@ -1,12 +1,6 @@ class Plugin class Downloader < Queue::Downloader - - def self.default : self - unless @@default - @@default = new - end - @@default.not_nil! - end + use_default def initialize super diff --git a/src/queue.cr b/src/queue.cr index 3235fc3..a4dbcb2 100644 --- a/src/queue.cr +++ b/src/queue.cr @@ -92,12 +92,7 @@ class Queue @downloaders = [] of Downloader @paused = false - def self.default : self - unless @@default - @@default = new - end - @@default.not_nil! - end + use_default def initialize(db_path : String? = nil) @path = db_path || Config.current.mangadex["download_queue_db_path"].to_s diff --git a/src/server.cr b/src/server.cr index fc4f7ae..380f4b3 100644 --- a/src/server.cr +++ b/src/server.cr @@ -10,12 +10,7 @@ class Context property storage : Storage property queue : Queue - def self.default : self - unless @@default - @@default = new - end - @@default.not_nil! - end + use_default def initialize @storage = Storage.default diff --git a/src/storage.cr b/src/storage.cr index a9fb144..2c42719 100644 --- a/src/storage.cr +++ b/src/storage.cr @@ -21,12 +21,7 @@ class Storage id: String, is_title: Bool) - def self.default : self - unless @@default - @@default = new - end - @@default.not_nil! - end + use_default def initialize(db_path : String? = nil, init_user = true, *, @auto_close = true) diff --git a/src/util/util.cr b/src/util/util.cr index 26e0750..b26979a 100644 --- a/src/util/util.cr +++ b/src/util/util.cr @@ -45,3 +45,12 @@ struct Nil other end end + +macro use_default + def self.default : self + unless @@default + @@default = new + end + @@default.not_nil! + end +end