Module: Infoboxer::Parser::Template
Instance Method Summary collapse
-
#template ⇒ Object
NB: here we are not distingish templates like
{{Infobox|variable}}
and "magic words" like{{formatnum:123}}
Just calling all of them "templates". - #template_vars ⇒ Object
Instance Method Details
#template ⇒ Object
NB: here we are not distingish templates like {{Infobox|variable}}
and "magic words" like {{formatnum:123}}
Just calling all of them "templates". This behaviour will change
in future, I presume
More about magic words: https://www.mediawiki.org/wiki/Help:Magic_words
12 13 14 15 16 17 18 19 |
# File 'lib/infoboxer/parser/template.rb', line 12 def template name = @context.scan_continued_until(/\||:|}}/) or @context.fail!("Template name not found") name.strip! vars = @context.eat_matched?('}}') ? Nodes[] : template_vars @context.traits.templates.find(name).new(name, vars) end |
#template_vars ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/infoboxer/parser/template.rb', line 21 def template_vars num = 1 res = Nodes[] guarded_loop do @context.next! while @context.eol? if @context.check(/\s*([^ =}|]+)\s*=\s*/) name = @context.scan(/\s*([^ =]+)/).strip @context.skip(/\s*=\s*/) else name = num num += 1 end value = long_inline(/\||}}/) unless value.empty? && name.is_a?(Numeric) # it was just empty line otherwise res << Var.new(name.to_s, value) end break if @context.eat_matched?('}}') @context.eof? and @context.fail!("Unexpected break of template variables: #{res}") end res end |