Class: MetaCommit::Extension::MarkdownSupport::Diffs::AnchorDeletion

Inherits:
Diff
  • Object
show all
Defined in:
lib/meta_commit_markdown_support/diffs/anchor_deletion.rb

Constant Summary

Constants inherited from Diff

Diff::SUPPORTED_PARSERS

Constants included from ContextualAstAccessor

ContextualAstAccessor::ELEMENT_TYPE_ANCHOR, ContextualAstAccessor::ELEMENT_TYPE_CODE, ContextualAstAccessor::ELEMENT_TYPE_HEADER, ContextualAstAccessor::ELEMENT_TYPE_IMAGE, ContextualAstAccessor::ELEMENT_TYPE_LISTS, ContextualAstAccessor::ELEMENT_TYPE_LIST_ITEM, ContextualAstAccessor::ELEMENT_TYPE_PARAGRAPH, ContextualAstAccessor::ELEMENT_TYPE_TEXT

Instance Method Summary collapse

Methods inherited from Diff

#inspect, #supports_parser?, #to_s, #type_addition?, #type_deletion?, #type_replace?

Methods included from ContextualAstAccessor

#anchor?, #anchor_context?, #anchor_target, #anchor_title, #closest_header_of_list, #code?, #code_context?, #code_first_line, #context_node_neighbours, #context_nodes_on_line, #contextual_ast_has_target_node, #element_closest_to, #elements_of_type_on_line, #header?, #header_content, #image?, #list?, #list_context?, #list_item?, #nested_list_context?, #paragraph?, #paragraph_context?, #parent_list_item_title, #starts_on_line?, #string_content, #text?, #text_context?

Instance Method Details

#string_representationString

Returns:

  • (String)


12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/meta_commit_markdown_support/diffs/anchor_deletion.rb', line 12

def string_representation
  parent_anchor = change_context.old_contextual_ast.context_nodes.find {|node| anchor?(node)}

  if !parent_anchor.children.first.nil? && text?(parent_anchor.children.first)
    new_anchor_title = parent_anchor.element.first_child.string_content
    parent_anchor.element.first_child.string_content
    return "delete #{new_anchor_title} link"
  end

  if !parent_anchor.children.first.nil? && image?(parent_anchor.children.first)
    new_anchor_title = parent_anchor.element.first_child.first_child.string_content
    parent_anchor.element.first_child.first_child.string_content
    return "delete #{new_anchor_title}"
  end

  anchor_target = anchor_target(change_context.old_contextual_ast)
  "delete #{anchor_target} link"
end

#supports_change(context) ⇒ Boolean

Parameters:

  • context (MetaCommit::Contracts::ChangeContext)

Returns:

  • (Boolean)


5
6
7
8
9
# File 'lib/meta_commit_markdown_support/diffs/anchor_deletion.rb', line 5

def supports_change(context)
  context.type == TYPE_DELETION &&
      contextual_ast_has_target_node(context.old_contextual_ast) &&
      anchor_context?(context.old_contextual_ast)
end