Class: Gapic::Presenters::PackagePresenter

Inherits:
Object
  • Object
show all
Includes:
Helpers::FilepathHelper, Helpers::NamespaceHelper
Defined in:
lib/gapic/presenters/package_presenter.rb

Overview

A presenter for proto packages.

Instance Method Summary collapse

Methods included from Helpers::NamespaceHelper

#fix_namespace, #ruby_namespace, #ruby_namespace_for_address

Methods included from Helpers::FilepathHelper

#fix_file_path, #ruby_file_path, #ruby_file_path_for_namespace

Constructor Details

#initialize(api, package) ⇒ PackagePresenter

Returns a new instance of PackagePresenter.



30
31
32
33
# File 'lib/gapic/presenters/package_presenter.rb', line 30

def initialize api, package
  @api = api
  @package = package
end

Instance Method Details

#address ⇒ Object



55
56
57
# File 'lib/gapic/presenters/package_presenter.rb', line 55

def address
  @package.split "."
end

#empty? ⇒ Boolean

Returns:

  • (Boolean)


67
68
69
# File 'lib/gapic/presenters/package_presenter.rb', line 67

def empty?
  services.empty?
end

#gem ⇒ Object



35
36
37
# File 'lib/gapic/presenters/package_presenter.rb', line 35

def gem
  GemPresenter.new @api
end

#name ⇒ Object



39
40
41
# File 'lib/gapic/presenters/package_presenter.rb', line 39

def name
  @package
end

#namespace ⇒ Object



43
44
45
46
# File 'lib/gapic/presenters/package_presenter.rb', line 43

def namespace
  return services.first&.namespace if services.first&.namespace
  ruby_namespace_for_address address
end

#package_file_path ⇒ Object



63
64
65
# File 'lib/gapic/presenters/package_presenter.rb', line 63

def package_file_path
  package_require + ".rb"
end

#package_require ⇒ Object



59
60
61
# File 'lib/gapic/presenters/package_presenter.rb', line 59

def package_require
  ruby_file_path @api, namespace
end

#services ⇒ Object



48
49
50
51
52
53
# File 'lib/gapic/presenters/package_presenter.rb', line 48

def services
  @services ||= begin
    files = @api.generate_files.select { |f| f.package == @package }
    files.map(&:services).flatten.map { |s| ServicePresenter.new @api, s }
  end
end