diff --git a/CHANGELOG.md b/CHANGELOG.md index 1125654..4f51825 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## [1.1.0] — UNRELEASED + + ## [1.0.0] — 2024-11-23 This release marks the gem to be stable enough. diff --git a/lib/magic/presenter/authors.rb b/lib/magic/presenter/authors.rb index 50d81d9..9dba446 100644 --- a/lib/magic/presenter/authors.rb +++ b/lib/magic/presenter/authors.rb @@ -1,27 +1,25 @@ # frozen_string_literal: true -Gem::Author ||= Struct.new( - :name, - :email, - :github, -) do - def github_url = github && "https://github.com/#{github}" +begin + require 'rubygems/author' +rescue LoadError # HACK: install magic-support + `gem install magic-support --no-lock --ignore-dependencies --no-document` + .scan(/^Successfully installed (?.*)$/) + .first[:full_name] + .then { Bundler.bundle_path.join 'gems', *_1, 'lib' } + .then { $LOAD_PATH << _1 } + + require 'rubygems/author' # retry end module Magic - module Presenter # :nodoc: - AUTHORS = [ # rubocop:disable Style/MutableConstant - Gem::Author.new( - name: 'Alexander Senko', - email: 'Alexander.Senko@gmail.com', - github: 'Alexander-Senko', - ), - ] - - class << AUTHORS - def names = filter_map &:name - def emails = filter_map &:email - def github_url = filter_map(&:github_url).first + module Presenter + class Author < Gem::Author # :nodoc: + new( + name: 'Alexander Senko', + email: 'Alexander.Senko@gmail.com', + github: 'Alexander-Senko', + ) end end end diff --git a/lib/magic/presenter/version.rb b/lib/magic/presenter/version.rb index 573d1fb..a3335af 100644 --- a/lib/magic/presenter/version.rb +++ b/lib/magic/presenter/version.rb @@ -2,6 +2,6 @@ module Magic module Presenter - VERSION = '1.0.0' + VERSION = '1.1.0.alpha' end end diff --git a/magic-presenter.gemspec b/magic-presenter.gemspec index c9fefa8..9868418 100644 --- a/magic-presenter.gemspec +++ b/magic-presenter.gemspec @@ -6,9 +6,9 @@ require_relative 'lib/magic/presenter/authors' Gem::Specification.new do |spec| spec.name = 'magic-presenter' spec.version = Magic::Presenter::VERSION - spec.authors = Magic::Presenter::AUTHORS.names - spec.email = Magic::Presenter::AUTHORS.emails - spec.homepage = "#{Magic::Presenter::AUTHORS.github_url}/#{spec.name}" + spec.authors = Magic::Presenter::Author.names + spec.email = Magic::Presenter::Author.emails + spec.homepage = "#{Magic::Presenter::Author.github_url}/#{spec.name}" spec.summary = 'Presentation layer for Rails models' spec.description = 'Based on Magic Decorator, it’s meant to replace Draper.' spec.license = 'MIT' diff --git a/sig/magic/presenter/author.rbs b/sig/magic/presenter/author.rbs new file mode 100644 index 0000000..fd32665 --- /dev/null +++ b/sig/magic/presenter/author.rbs @@ -0,0 +1,9 @@ +module Magic + module Presenter + class Author < Gem::Author + extend Gem::Author::ClassMethods + + attr_reader self.all: Array[self] + end + end +end