Class: Infoboxer::Tree::Wikilink

Inherits:
Link show all
Includes:
Linkable
Defined in:
lib/infoboxer/tree/wikilink.rb

Overview

Internal MediaWiki link class.

See Wikipedia docs for extensive explanation of Wikilink concept.

Note, that Wikilink is Linkable, so you can #follow it to obtain linked pages.

Instance Attribute Summary collapse

Attributes inherited from Link

#link

Attributes inherited from Compound

#children

Attributes inherited from Node

#params, #parent

Instance Method Summary collapse

Methods included from Linkable

#follow, #url

Methods inherited from Compound

#index_of, #text, #to_tree

Methods inherited from Node

#==, #children, coder, def_readers, #index, #inspect, #next_siblings, #prev_siblings, #siblings, #text, #text_, #to_s, #to_tree

Methods included from Navigation::Sections::Node

#in_sections

Methods included from Navigation::Shortcuts::Node

#bold?, #categories, #external_links, #heading?, #headings, #images, #infoboxes, #italic?, #lists, #paragraphs, #tables, #templates, #wikilinks

Methods included from Navigation::Lookup::Node

#_lookup, #_lookup_children, #_lookup_next_siblings, #_lookup_parents, #_lookup_prev_siblings, #_lookup_siblings, #_matches?, #has_parent?, #lookup, #lookup_children, #lookup_next_siblings, #lookup_parents, #lookup_prev_siblings, #lookup_siblings, #matches?

Constructor Details

#initializeWikilink

Returns a new instance of Wikilink.



14
15
16
17
# File 'lib/infoboxer/tree/wikilink.rb', line 14

def initialize(*)
  super
  parse_link!
end

Instance Attribute Details

#anchorObject (readonly)

Anchor part of hyperlink, like History for [Argentina#History]



27
28
29
# File 'lib/infoboxer/tree/wikilink.rb', line 27

def anchor
  @anchor
end

#nameObject (readonly)

"Clean" wikilink name, for ex., Cities for [Category:Cities]



20
21
22
# File 'lib/infoboxer/tree/wikilink.rb', line 20

def name
  @name
end

#namespaceObject (readonly)

Wikilink namespace, Category for [Category:Cities], empty string (not nil!) for just [Cities]



24
25
26
# File 'lib/infoboxer/tree/wikilink.rb', line 24

def namespace
  @namespace
end

#refinementObject (readonly)

Refinement part of link name.

See #topic for explanation.



42
43
44
# File 'lib/infoboxer/tree/wikilink.rb', line 42

def refinement
  @refinement
end

#topicObject (readonly)

Topic part of link name.

There's so-called "Pipe trick" in wikilink markup, which defines that [Phoenix, Arizona] link has main part ("Phoenix") and refinement part ("Arizona"). So, we are splitting it here in topic and #refinement. The same way, [Pipe (programming)] has topic == 'Pipe' and refinement == 'programming'



37
38
39
# File 'lib/infoboxer/tree/wikilink.rb', line 37

def topic
  @topic
end