class MediaWiktory::Generator::Module
Attributes
api[R]
Public Class Methods
from_html_nodes(title, nodes)
click to toggle source
# File lib/mediawiktory/generator/module.rb, line 9 def from_html_nodes(title, nodes) type, name, prefix = title.scan(/^([a-z]+)=([^(]+)(?:\s+\((.+)\))?$/).flatten new( type: type._n.to_sym || :main, name: name || '', prefix: prefix, description: extract_description(nodes), flags: extract_flags(nodes), params: extract_params(nodes, prefix) ) end
new(*)
click to toggle source
Calls superclass method
# File lib/mediawiktory/generator/module.rb, line 44 def initialize(*) super # 'action' should not be rendered as "available default params" for api initializer params.reject! { |p| p.name == 'action' } if main? end
Private Class Methods
extract_description(nodes)
click to toggle source
# File lib/mediawiktory/generator/module.rb, line 24 def extract_description(nodes) nodes.detect { |n| n.name == 'p' }._n.text.to_s.tr("\n", ' ').strip end
extract_flags(nodes)
click to toggle source
# File lib/mediawiktory/generator/module.rb, line 28 def extract_flags(nodes) flags = nodes.detect { |n| n['class']._n.include?('apihelp-flags') } or return [] flags.search('ul li > span').to_a .map { |el| {id: el.attr('class'), text: el.text} } .map { |h| h.merge(role: h[:id].sub(/^apihelp-(flag-)?/, '')) } end
extract_params(nodes, prefix)
click to toggle source
# File lib/mediawiktory/generator/module.rb, line 35 def extract_params(nodes, prefix) params = nodes.detect { |n| n['class']._n.include?('apihelp-parameters') } or return [] params.at('dl').each_term.to_a .map { |dts, dds| Param.from_html_nodes(dts.first.text, dds, prefix: prefix) } end
Public Instance Methods
action?()
click to toggle source
# File lib/mediawiktory/generator/module.rb, line 59 def action? type == :action end
api=(api)
click to toggle source
# File lib/mediawiktory/generator/module.rb, line 73 def api=(api) @api = api params.each { |p| p.api = api } end
class_name()
click to toggle source
# File lib/mediawiktory/generator/module.rb, line 100 def class_name name.split('-').map(&:capitalize).join end
description()
click to toggle source
Calls superclass method
# File lib/mediawiktory/generator/module.rb, line 78 def description super.split("\n").join("\n#\n# ") end
http_method()
click to toggle source
# File lib/mediawiktory/generator/module.rb, line 88 def http_method post? ? 'Post' : 'Get' end
inspect()
click to toggle source
# File lib/mediawiktory/generator/module.rb, line 55 def inspect "#<#{self.class.name} #{name}>" end
main?()
click to toggle source
# File lib/mediawiktory/generator/module.rb, line 63 def main? type == :main end
main_template()
click to toggle source
# File lib/mediawiktory/generator/module.rb, line 69 def main_template 'action_class.rb' end
method_name()
click to toggle source
# File lib/mediawiktory/generator/module.rb, line 96 def method_name name.sub(/^g-/, '').split('-').join('_') end
params()
click to toggle source
Calls superclass method
# File lib/mediawiktory/generator/module.rb, line 82 def params # TODO: some actions have "rest of parameters, see there". # Currently, we ignore it (super || []).reject { |p| p.name == '*' || main? && p.name == 'action' } end
post?()
click to toggle source
# File lib/mediawiktory/generator/module.rb, line 92 def post? flags.any? { |f| f.id == 'apihelp-flag-mustbeposted' } end
prefix=(pre)
click to toggle source
Calls superclass method
# File lib/mediawiktory/generator/module.rb, line 50 def prefix=(pre) super params.each { |p| p.prefix = pre } end