Module: Infoboxer::Navigation::Shortcuts::Node

Included in:
Tree::Node
Defined in:
lib/infoboxer/navigation/shortcuts.rb

Overview

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.

Instance Method Summary collapse

Instance Method Details

#bold?Boolean

Returns true, if current node is inside bold.

Returns:

  • (Boolean)


86
87
88
# File 'lib/infoboxer/navigation/shortcuts.rb', line 86

def bold?
  parent?(Tree::Bold)
end

#categoriesTree::Nodes

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.

Returns:



121
122
123
# File 'lib/infoboxer/navigation/shortcuts.rb', line 121

def categories
  lookup(Tree::Wikilink, namespace: /^#{ensure_traits.category_namespace.join('|')}$/)
end

Returns all external links inside current node.

Parameters:

  • selectors

    node selectors, as described at Lookup::Node

Returns:



49
50
51
# File 'lib/infoboxer/navigation/shortcuts.rb', line 49

def external_links(*selectors, &block)
  lookup(Tree::ExternalLink, *selectors, &block)
end

#heading?(level = nil) ⇒ Boolean

Returns true, if current node is inside heading.

Parameters:

  • level (defaults to: nil)

    optional concrete level to check

Returns:

  • (Boolean)


98
99
100
# File 'lib/infoboxer/navigation/shortcuts.rb', line 98

def heading?(level = nil)
  parent?(Tree::Heading, level: level)
end

#headings(level = nil) ⇒ Tree::Nodes

Returns all headings inside current node.

Parameters:

  • level (defaults to: nil)

    headings level to return.

Returns:



32
33
34
# File 'lib/infoboxer/navigation/shortcuts.rb', line 32

def headings(level = nil)
  lookup(Tree::Heading, level: level)
end

#images(*selectors, &block) ⇒ Tree::Nodes

Returns all images (media) inside current node.

Parameters:

  • selectors

    node selectors, as described at Lookup::Node

Returns:



57
58
59
# File 'lib/infoboxer/navigation/shortcuts.rb', line 57

def images(*selectors, &block)
  lookup(Tree::Image, *selectors, &block)
end

#infoboxObject

As users accustomed to have only one infobox on a page



126
127
128
# File 'lib/infoboxer/navigation/shortcuts.rb', line 126

def infobox
  infoboxes.first
end

#infoboxes(*selectors, &block) ⇒ Tree::Nodes

Returns all infoboxes inside current node.

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

Parameters:

  • selectors

    node selectors, as described at Lookup::Node

Returns:



109
110
111
# File 'lib/infoboxer/navigation/shortcuts.rb', line 109

def infoboxes(*selectors, &block)
  lookup(Tree::Template, :infobox?, *selectors, &block)
end

#italic?Boolean

Returns true, if current node is inside italic.

Returns:

  • (Boolean)


91
92
93
# File 'lib/infoboxer/navigation/shortcuts.rb', line 91

def italic?
  parent?(Tree::Italic)
end

#lists(*selectors, &block) ⇒ Tree::Nodes

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

Parameters:

  • selectors

    node selectors, as described at Lookup::Node

Returns:



81
82
83
# File 'lib/infoboxer/navigation/shortcuts.rb', line 81

def lists(*selectors, &block)
  lookup(Tree::List, *selectors, &block)
end

#paragraphs(*selectors, &block) ⇒ Tree::Nodes

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

Parameters:

  • selectors

    node selectors, as described at Lookup::Node

Returns:



41
42
43
# File 'lib/infoboxer/navigation/shortcuts.rb', line 41

def paragraphs(*selectors, &block)
  lookup(Tree::BaseParagraph, *selectors, &block)
end

#tables(*selectors, &block) ⇒ Tree::Nodes

Returns all tables inside current node.

Parameters:

  • selectors

    node selectors, as described at Lookup::Node

Returns:



73
74
75
# File 'lib/infoboxer/navigation/shortcuts.rb', line 73

def tables(*selectors, &block)
  lookup(Tree::Table, *selectors, &block)
end

#templates(*selectors, &block) ⇒ Tree::Nodes

Returns all templates inside current node.

Parameters:

  • selectors

    node selectors, as described at Lookup::Node

Returns:



65
66
67
# File 'lib/infoboxer/navigation/shortcuts.rb', line 65

def templates(*selectors, &block)
  lookup(Tree::Template, *selectors, &block)
end

Returns all wikilinks inside current node.

Parameters:

  • namespace (defaults to: '')

    from which namespace links do you want. It's '' (main namespace only) by default, if you really want all wikilinks on the page, including categories, interwikies and stuff, use wikilinks(nil)

Returns:



24
25
26
# File 'lib/infoboxer/navigation/shortcuts.rb', line 24

def wikilinks(namespace = '')
  lookup(Tree::Wikilink, namespace: namespace)
end