class Hypermicrodata::SubmitButton
Attributes
form[R]
method[R]
Public Class Methods
new(button, form)
click to toggle source
# File lib/hypermicrodata/submit_button.rb, line 5 def initialize(button, form) @button = button @form = form.dup @excluded_fields = {} setup! end
Public Instance Methods
action_url()
click to toggle source
# File lib/hypermicrodata/submit_button.rb, line 16 def action_url @form.action end
item()
click to toggle source
# File lib/hypermicrodata/submit_button.rb, line 37 def item nil end
link?()
click to toggle source
# File lib/hypermicrodata/submit_button.rb, line 41 def link? true end
names()
click to toggle source
# File lib/hypermicrodata/submit_button.rb, line 28 def names (node['itemprop'] || '').split(' ') end
node()
click to toggle source
# File lib/hypermicrodata/submit_button.rb, line 49 def node @button.node end
params()
click to toggle source
# File lib/hypermicrodata/submit_button.rb, line 20 def params @form.build_query end
query_string()
click to toggle source
# File lib/hypermicrodata/submit_button.rb, line 24 def query_string build_query_string(params) end
rels()
click to toggle source
# File lib/hypermicrodata/submit_button.rb, line 32 def rels rel = (node['rel'] || node['data-rel'] || @button.dom_class || '') rel.split(' ') end
value()
click to toggle source
# File lib/hypermicrodata/submit_button.rb, line 12 def value "#{action_url}?#{query_string}" end
Private Instance Methods
build_query_string(parameters)
click to toggle source
# File lib/hypermicrodata/submit_button.rb, line 72 def build_query_string(parameters) parameters.map do |name, value| if field = template_fields[name] [CGI.escape(name.to_s), "{#{field.type}}"].join("=") elsif !@excluded_fields[name] # WEBrick::HTTP.escape* has some problems about m17n on ruby-1.9.*. [CGI.escape(name.to_s), CGI.escape(value.to_s)].join("=") end end.compact.join('&') end
setup!()
click to toggle source
# File lib/hypermicrodata/submit_button.rb, line 54 def setup! if method_field = @form.fields.find { |f| f.name == '_method' } # overload POST @method = method_field.value.upcase @excluded_fields['_method'] = method_field else @method = @form.method end @form.add_button_to_query(@button) # formをdupしているのでOK end
template_fields()
click to toggle source
# File lib/hypermicrodata/submit_button.rb, line 65 def template_fields @template_fields ||= begin fields = @form.fields.reject {|field| field.is_a?(Mechanize::Form::Hidden) } Hash[fields.map {|field| [field.name, field] }] end end