class Brainstem::ApiDocs::Presenter
Attributes
atlas[RW]
const[RW]
document_empty_associations[RW]
document_empty_associations?[RW]
document_empty_filters[RW]
document_empty_filters?[RW]
filename_link_pattern[W]
filename_pattern[W]
include_internal[RW]
target_class[RW]
Public Class Methods
new(atlas, options = {}) { |self| ... }
click to toggle source
Calls superclass method
Brainstem::Concerns::Optional::new
# File lib/brainstem/api_docs/presenter.rb, line 41 def initialize(atlas, options = {}) self.atlas = atlas self.document_empty_associations = Brainstem::ApiDocs.document_empty_presenter_associations self.document_empty_filters = Brainstem::ApiDocs.document_empty_presenter_filters super options yield self if block_given? end
Public Instance Methods
brainstem_keys()
click to toggle source
# File lib/brainstem/api_docs/presenter.rb, line 87 def brainstem_keys const.possible_brainstem_keys.to_a.sort end
conditionals()
click to toggle source
# File lib/brainstem/api_docs/presenter.rb, line 180 def conditionals configuration[:conditionals] end
contextual_documentation(key)
click to toggle source
Returns a key if it exists and is documentable.
# File lib/brainstem/api_docs/presenter.rb, line 199 def contextual_documentation(key) configuration.has_key?(key) && !nodoc_for?(configuration[key]) && configuration[key][:info] end
default_sort_direction()
click to toggle source
# File lib/brainstem/api_docs/presenter.rb, line 192 def default_sort_direction @default_sort_direction ||= (default_sort_order.split(":")[1] || nil) end
default_sort_field()
click to toggle source
# File lib/brainstem/api_docs/presenter.rb, line 188 def default_sort_field @default_sort_field ||= (default_sort_order.split(":")[0] || nil) end
default_sort_order()
click to toggle source
# File lib/brainstem/api_docs/presenter.rb, line 184 def default_sort_order configuration[:default_sort_order] || "" end
description()
click to toggle source
# File lib/brainstem/api_docs/presenter.rb, line 91 def description contextual_documentation(:description) || "" end
documentable_association?(_, association)
click to toggle source
Returns whether this association should be documented based on nodoc and empty description.
@return [Bool] document this association?
# File lib/brainstem/api_docs/presenter.rb, line 172 def documentable_association?(_, association) !nodoc_for?(association.options) && # not marked nodoc and ( document_empty_associations? || # document empty associations or !(association.description.nil? || association.description.empty?) # has description ) end
documentable_filter?(_, filter)
click to toggle source
# File lib/brainstem/api_docs/presenter.rb, line 135 def documentable_filter?(_, filter) !nodoc_for?(filter) && ( document_empty_filters? || # document empty filters or !(filter[:info] || "").empty? # has info string ) end
extension()
click to toggle source
# File lib/brainstem/api_docs/presenter.rb, line 64 def extension @extension ||= Brainstem::ApiDocs.output_extension end
filename_link_pattern()
click to toggle source
# File lib/brainstem/api_docs/presenter.rb, line 72 def filename_link_pattern @filename_link_pattern ||= Brainstem::ApiDocs.presenter_filename_link_pattern end
filename_pattern()
click to toggle source
# File lib/brainstem/api_docs/presenter.rb, line 68 def filename_pattern @filename_pattern ||= Brainstem::ApiDocs.presenter_filename_pattern end
invalid_field?(field)
click to toggle source
# File lib/brainstem/api_docs/presenter.rb, line 102 def invalid_field?(field) nodoc_for?(field.options) end
link_for_association(association)
click to toggle source
# File lib/brainstem/api_docs/presenter.rb, line 157 def link_for_association(association) if (associated_presenter = find_by_class(association.target_class)) && !associated_presenter.nodoc? relative_path_to_presenter(associated_presenter, :markdown) else nil end end
nested_field?(field)
click to toggle source
# File lib/brainstem/api_docs/presenter.rb, line 106 def nested_field?(field) field.respond_to?(:configuration) end
nodoc?()
click to toggle source
# File lib/brainstem/api_docs/presenter.rb, line 79 def nodoc? nodoc_for?(configuration) end
optional_field?(field)
click to toggle source
# File lib/brainstem/api_docs/presenter.rb, line 110 def optional_field?(field) field.options[:optional] end
optional_field_names(fields = configuration[:fields], buffer = [])
click to toggle source
# File lib/brainstem/api_docs/presenter.rb, line 114 def optional_field_names(fields = configuration[:fields], buffer = []) fields.to_h.each do |field_name, field_config| next if invalid_field?(field_config) if optional_field?(field_config) buffer << field_name elsif nested_field?(field_config) optional_field_names_in(field_config.configuration, buffer) end end buffer end
Also aliased as: optional_field_names_in
optional_field_names_in(fields = configuration[:fields], buffer = [])
Alias for: optional_field_names
relative_path_to_presenter(presenter, format)
click to toggle source
Returns the relative path between this presenter and another given presenter.
# File lib/brainstem/api_docs/presenter.rb, line 209 def relative_path_to_presenter(presenter, format) my_path = Pathname.new(File.dirname(suggested_filename_link(format))) presenter_path = Pathname.new(presenter.suggested_filename_link(format)) presenter_path.relative_path_from(my_path).to_s end
searchable?()
click to toggle source
# File lib/brainstem/api_docs/presenter.rb, line 143 def searchable? configuration[:search].present? end
suggested_filename(format)
click to toggle source
# File lib/brainstem/api_docs/presenter.rb, line 50 def suggested_filename(format) filename_pattern .gsub('{{name}}', target_class.to_s.underscore) .gsub('{{extension}}', extension) end
suggested_filename_link(format)
click to toggle source
# File lib/brainstem/api_docs/presenter.rb, line 56 def suggested_filename_link(format) filename_link_pattern .gsub('{{name}}', target_class.to_s.underscore) .gsub('{{extension}}', extension) end
title()
click to toggle source
# File lib/brainstem/api_docs/presenter.rb, line 83 def title contextual_documentation(:title) || const.to_s.demodulize end
valid_associations()
click to toggle source
# File lib/brainstem/api_docs/presenter.rb, line 151 def valid_associations configuration[:associations] .to_h .keep_if(&method(:documentable_association?)) end
valid_fields(fields = configuration[:fields])
click to toggle source
# File lib/brainstem/api_docs/presenter.rb, line 95 def valid_fields(fields = configuration[:fields]) fields.to_h.reject do |_, field| invalid_field?(field) || (nested_field?(field) && valid_fields_in(field).none?) end end
Also aliased as: valid_fields_in
valid_filters()
click to toggle source
# File lib/brainstem/api_docs/presenter.rb, line 129 def valid_filters configuration[:filters] .to_h .keep_if(&method(:documentable_filter?)) end
valid_options()
click to toggle source
Calls superclass method
Brainstem::Concerns::Formattable#valid_options
# File lib/brainstem/api_docs/presenter.rb, line 17 def valid_options super | [ :const, :target_class, :filename_pattern, :filename_link_pattern, :document_empty_associations, :document_empty_filters, :include_internal ] end
valid_sort_orders()
click to toggle source
# File lib/brainstem/api_docs/presenter.rb, line 147 def valid_sort_orders configuration[:sort_orders].to_h.reject {|_k, v| nodoc_for?(v) } end
Private Instance Methods
nodoc_for?(config)
click to toggle source
# File lib/brainstem/api_docs/presenter.rb, line 218 def nodoc_for?(config) !!(config[:nodoc] || (config[:internal] && !include_internal)) end