In: |
uri/mailto.rb
|
Parent: | Generic |
RFC2368, The mailto URL scheme
DEFAULT_PORT | = | nil |
COMPONENT | = | [ :scheme, :to, :headers ].freeze |
headers | [R] | |
to | [R] |
Creates a new URI::MailTo object from components of URI::MailTo with check. It is to and headers. It provided by an Array of a Hash. You can provide headers as String like "subject=subscribe&cc=addr" or Array like [["subject", "subscribe"], ["cc", "addr"]]
# File uri/mailto.rb, line 70 def self.build(args) tmp = Util::make_components_hash(self, args) if tmp[:to] tmp[:opaque] = tmp[:to] else tmp[:opaque] = '' end if tmp[:headers] tmp[:opaque] << '?' if tmp[:headers].kind_of?(Array) tmp[:opaque] << tmp[:headers].collect { |x| if x.kind_of?(Array) x[0] + '=' + x[1..-1].to_s else x.to_s end }.join('&') elsif tmp[:headers].kind_of?(Hash) tmp[:opaque] << tmp[:headers].collect { |h,v| h + '=' + v }.join('&') else tmp[:opaque] << tmp[:headers].to_s end end return super(tmp) end
Creates a new URI::MailTo object from ``generic’’ components with no check. Because, this method is usually called from URI::parse and the method checks validity of each components.
# File uri/mailto.rb, line 111 def initialize(*arg) super(*arg) @to = nil @headers = [] if MAILTO_REGEXP =~ @opaque if arg[-1] self.to = $1 self.headers = $2 else set_to($1) set_headers($2) end else raise InvalidComponentError, "unrecognised opaque part for mailtoURL: #{@opaque}" end end
require 'uri' uri = URI.parse("mailto:ruby-list@ruby-lang.org?Subject=subscribe&cc=myaddr") uri.to_mailtext # => "To: ruby-list@ruby-lang.org\nSubject: subscribe\nCc: myaddr\n\n\n"
# File uri/mailto.rb, line 214 def to_mailtext to = URI::unescape(@to) head = '' body = '' @headers.each do |x| case x[0] when 'body' body = URI::unescape(x[1]) when 'to' to << ', ' + URI::unescape(x[1]) else head << URI::unescape(x[0]).capitalize + ': ' + URI::unescape(x[1]) + "\n" end end return "To: #{to} #{head} #{body} " end