Class: Banzai::Filter::References::DesignReferenceFilter
- Inherits:
-
AbstractReferenceFilter
- Object
- HTML::Pipeline::Filter
- ReferenceFilter
- AbstractReferenceFilter
- Banzai::Filter::References::DesignReferenceFilter
- Defined in:
- lib/banzai/filter/references/design_reference_filter.rb
Defined Under Namespace
Classes: Identifier
Constant Summary
Constants included from Concerns::TimeoutFilterHandler
Concerns::TimeoutFilterHandler::COMPLEX_MARKDOWN_MESSAGE, Concerns::TimeoutFilterHandler::RENDER_TIMEOUT, Concerns::TimeoutFilterHandler::SANITIZATION_RENDER_TIMEOUT
Constants included from Concerns::PipelineTimingCheck
Concerns::PipelineTimingCheck::MAX_PIPELINE_SECONDS
Constants inherited from ReferenceFilter
ReferenceFilter::REFERENCE_TYPE_ATTRIBUTE, ReferenceFilter::REFERENCE_TYPE_DATA_ATTRIBUTE_NAME
Constants included from Concerns::TextReplacer
Concerns::TextReplacer::REFERENCE_PLACEHOLDER, Concerns::TextReplacer::REFERENCE_PLACEHOLDER_PATTERN
Instance Method Summary collapse
- #data_attributes_for(_original, _project, design, **_kwargs) ⇒ Object
- #find_object(project, identifier) ⇒ Object
- #object_sym ⇒ Object
- #parent_records(parent, identifiers) ⇒ Object
- #parse_symbol(raw, match_data) ⇒ Object
- #record_identifier(design) ⇒ Object
- #relation_for_paths(paths) ⇒ Object
- #url_for_object(design, project) ⇒ Object
Methods inherited from AbstractReferenceFilter
#call, #find_object_cached, #find_object_from_link, #find_object_from_link_cached, #from_ref_cached, #identifier, #initialize, #object_link_content_html, #object_link_content_html_extras, #object_link_filter, #object_link_title, #parent, #parent_type, #references_in, #symbol_from_match_data, #url_for_object_cached, #wrap_link
Methods included from CrossProjectReference
Methods included from Concerns::TimeoutFilterHandler
Methods included from Concerns::PipelineTimingCheck
#call, #exceeded_pipeline_max?
Methods inherited from ReferenceFilter
call, #call, #call_and_update_nodes, #each_node, #group, #initialize, #nodes, #nodes?, #object_class, #project, #references_in, #requires_unescaping?
Methods included from Concerns::TextReplacer
#replace_references_in_text_with_html
Methods included from Concerns::HtmlWriter
Methods included from Concerns::OutputSafety
Methods included from RequestStoreReferenceCache
#cached_call, #get_or_set_cache
Constructor Details
This class inherits a constructor from Banzai::Filter::References::AbstractReferenceFilter
Instance Method Details
#data_attributes_for(_original, _project, design, **_kwargs) ⇒ Object
69 70 71 |
# File 'lib/banzai/filter/references/design_reference_filter.rb', line 69 def data_attributes_for(_original, _project, design, **_kwargs) super.merge(issue: design.issue_id) end |
#find_object(project, identifier) ⇒ Object
39 40 41 |
# File 'lib/banzai/filter/references/design_reference_filter.rb', line 39 def find_object(project, identifier) reference_cache.records_per_parent[project][identifier] end |
#object_sym ⇒ Object
73 74 75 |
# File 'lib/banzai/filter/references/design_reference_filter.rb', line 73 def object_sym :design end |
#parent_records(parent, identifiers) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/banzai/filter/references/design_reference_filter.rb', line 43 def parent_records(parent, identifiers) return DesignManagement::Design.none unless parent.is_a?(Project) return DesignManagement::Design.none unless parent.design_management_enabled? iids = identifiers.map(&:issue_iid).to_set issues = parent.issues.iid_in(iids).includes(:project, :namespace) id_for_iid = issues.index_by(&:iid).transform_values(&:id) issue_by_id = issues.index_by(&:id) designs(identifiers, id_for_iid).each do |d| issue = issue_by_id[d.issue_id] # optimisation: assign values we have already fetched d.project = parent d.issue = issue end end |
#parse_symbol(raw, match_data) ⇒ Object
77 78 79 80 81 |
# File 'lib/banzai/filter/references/design_reference_filter.rb', line 77 def parse_symbol(raw, match_data) filename = match_data[:url_filename] iid = match_data[:issue].to_i Identifier.new(filename: CGI.unescape(filename), issue_iid: iid) end |
#record_identifier(design) ⇒ Object
83 84 85 |
# File 'lib/banzai/filter/references/design_reference_filter.rb', line 83 def record_identifier(design) Identifier.new(filename: design.filename, issue_iid: design.issue.iid) end |
#relation_for_paths(paths) ⇒ Object
60 61 62 |
# File 'lib/banzai/filter/references/design_reference_filter.rb', line 60 def relation_for_paths(paths) super.includes(:route, :namespace, :group) end |
#url_for_object(design, project) ⇒ Object
64 65 66 67 |
# File 'lib/banzai/filter/references/design_reference_filter.rb', line 64 def url_for_object(design, project) = { vueroute: design.filename } Gitlab::Routing.url_helpers.designs_project_issue_path(project, design.issue, ) end |