module Infoboxer::Navigation::Shortcuts::Node

`Shortcuts::Node` module provides some convenience methods for most used lookups. It's not a rocket science (as you can see from methods code), yet should make your code cleaner and more readable.

NB: as usual, {Tree::Nodes} class have synonyms for all of those methods, so you can call them fearlessly on any results of node lookup.

Public Instance Methods

bold?() click to toggle source

Returns true, if current node is inside bold.

# File lib/infoboxer/navigation/shortcuts.rb, line 86
def bold?
  parent?(Tree::Bold)
end
categories() click to toggle source

Returns all wikilinks in “categories namespace”.

NB: depending on your MediaWiki settings, name of categories namespace may vary. When you are using {MediaWiki#get}, Infoboxer tries to handle this transparently (by examining used wiki for category names), yet bad things may happen here.

@return {Tree::Nodes}

# File lib/infoboxer/navigation/shortcuts.rb, line 121
def categories
  lookup(Tree::Wikilink, namespace: /^#{ensure_traits.category_namespace.join('|')}$/)
end
heading?(level = nil) click to toggle source

Returns true, if current node is inside heading.

@param level optional concrete level to check

# File lib/infoboxer/navigation/shortcuts.rb, line 98
def heading?(level = nil)
  parent?(Tree::Heading, level: level)
end
headings(level = nil) click to toggle source

Returns all headings inside current node.

@param level headings level to return. @return {Tree::Nodes}

# File lib/infoboxer/navigation/shortcuts.rb, line 32
def headings(level = nil)
  lookup(Tree::Heading, level: level)
end
images(*selectors, &block) click to toggle source

Returns all images (media) inside current node.

@param selectors node selectors, as described at {Lookup::Node} @return {Tree::Nodes}

# File lib/infoboxer/navigation/shortcuts.rb, line 57
def images(*selectors, &block)
  lookup(Tree::Image, *selectors, &block)
end
infobox() click to toggle source

As users accustomed to have only one infobox on a page

# File lib/infoboxer/navigation/shortcuts.rb, line 126
def infobox
  infoboxes.first
end
infoboxes(*selectors, &block) click to toggle source

Returns all infoboxes inside current node.

Definition of what considered to be infobox depends on templates set used when parsing the page.

@param selectors node selectors, as described at {Lookup::Node} @return {Tree::Nodes}

# File lib/infoboxer/navigation/shortcuts.rb, line 109
def infoboxes(*selectors, &block)
  lookup(Tree::Template, :infobox?, *selectors, &block)
end
italic?() click to toggle source

Returns true, if current node is inside italic.

# File lib/infoboxer/navigation/shortcuts.rb, line 91
def italic?
  parent?(Tree::Italic)
end
lists(*selectors, &block) click to toggle source

Returns all lists (ordered/unordered/definition) inside current node.

@param selectors node selectors, as described at {Lookup::Node} @return {Tree::Nodes}

# File lib/infoboxer/navigation/shortcuts.rb, line 81
def lists(*selectors, &block)
  lookup(Tree::List, *selectors, &block)
end
paragraphs(*selectors, &block) click to toggle source

Returns all paragraph-level nodes (list items, plain paragraphs, headings and so on) inside current node.

@param selectors node selectors, as described at {Lookup::Node} @return {Tree::Nodes}

# File lib/infoboxer/navigation/shortcuts.rb, line 41
def paragraphs(*selectors, &block)
  lookup(Tree::BaseParagraph, *selectors, &block)
end
tables(*selectors, &block) click to toggle source

Returns all tables inside current node.

@param selectors node selectors, as described at {Lookup::Node} @return {Tree::Nodes}

# File lib/infoboxer/navigation/shortcuts.rb, line 73
def tables(*selectors, &block)
  lookup(Tree::Table, *selectors, &block)
end
templates(*selectors, &block) click to toggle source

Returns all templates inside current node.

@param selectors node selectors, as described at {Lookup::Node} @return {Tree::Nodes}

# File lib/infoboxer/navigation/shortcuts.rb, line 65
def templates(*selectors, &block)
  lookup(Tree::Template, *selectors, &block)
end

Private Instance Methods

ensure_page() click to toggle source
# File lib/infoboxer/navigation/shortcuts.rb, line 136
def ensure_page
  (is_a?(MediaWiki::Page) ? self : lookup_parents(MediaWiki::Page).first) or
    fail('Node is not inside Page, maybe parsed from text?')
end
ensure_traits() click to toggle source
# File lib/infoboxer/navigation/shortcuts.rb, line 132
def ensure_traits
  ensure_page.traits or fail('No site traits found')
end