- Electron version: 1.1.3

The clipboard API docs are somewhat confusing, but it looks like you can only deal with plain text, RTF, HTML, and image data.

It would be great if I could define arbitrary data types. Ideally, multiple types in a single clipboard.write operator.

This is how the Javascript DOM clipboard API works, and Chromium supports it, so hopefully the capability can be exposed in Electron.

The call might look like

```
clipboard.write({
    text: "Textual representation",
    html: "<p>HTML representation</p>",
    "application/graph-editor": "<xml>...custom representation</xml>",
});
```

(The `type` arguments to all the calls describe the _clipboard_ type, not the data type. The only meaningful arguments are `undefined` and `"selection"`, as far as I can tell. Please let me know if I'm wrong about this.)

atom/common/api/atom_api_clipboard.cc
v8::Local<v8::Context> context, void* priv) {
  mate::Dictionary dict(context->GetIsolate(), exports);
  dict.SetMethod("availableFormats", &atom::api::Clipboard::AvailableFormats);
  dict.SetMethod("has", &atom::api::Clipboard::Has);
  dict.SetMethod("read", &atom::api::Clipboard::Read);
  dict.SetMethod("write", &atom::api::Clipboard::Write);
  dict.SetMethod("readText", &atom::api::Clipboard::ReadText);
  dict.SetMethod("writeText", &atom::api::Clipboard::WriteText);
  dict.SetMethod("readRTF", &atom::api::Clipboard::ReadRtf);
  dict.SetMethod("writeRTF", &atom::api::Clipboard::WriteRtf);
  dict.SetMethod("readHTML", &atom::api::Clipboard::ReadHtml);
  dict.SetMethod("writeHTML", &atom::api::Clipboard::WriteHtml);
  dict.SetMethod("readBookmark", &atom::api::Clipboard::ReadBookmark);
  dict.SetMethod("writeBookmark", &atom::api::Clipboard::WriteBookmark);
  dict.SetMethod("readImage", &atom::api::Clipboard::ReadImage);
  dict.SetMethod("writeImage", &atom::api::Clipboard::WriteImage);
  dict.SetMethod("readFindText", &atom::api::Clipboard::ReadFindText);
  dict.SetMethod("writeFindText", &atom::api::Clipboard::WriteFindText);
  dict.SetMethod("readBuffer", &atom::api::Clipboard::ReadBuffer);
  dict.SetMethod("clear", &atom::api::Clipboard::Clear);
  
  dict.SetMethod("readRtf", &atom::api::Clipboard::ReadRtf);
  dict.SetMethod("writeRtf", &atom::api::Clipboard::WriteRtf);
  dict.SetMethod("readHtml", &atom::api::Clipboard::ReadHtml);
  dict.SetMethod("writeHtml", &atom::api::Clipboard::WriteHtml);
}
}  
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_common_clipboard, Initialize)