module Mail grammar ContentDisposition include RFC2822 include RFC2045 rule content_disposition disposition_type param_hashes:(CFWS ";" parameter CFWS)* { def parameters param_hashes.elements.map do |param| param.parameter.param_hash end end } end rule disposition_type "inline" / "attachment" / extension_token / '' end rule extension_token ietf_token / x_token end rule parameter CFWS? attr:attribute "=" val:value CFWS? { def param_hash {attr.text_value => val.text_value} end } end rule attribute token+ end rule value quoted_string { def text_value quoted_content.text_value end } / (token / [\x3d])+ end end end