mirror of
https://github.com/Foundry376/Mailspring.git
synced 2025-01-25 09:30:13 +08:00
60d9fd4816
Summary: Lots o docs Test Plan: Run tests, review docs Reviewers: evan Reviewed By: evan Differential Revision: https://review.inboxapp.com/D1496
59 lines
1.5 KiB
CoffeeScript
59 lines
1.5 KiB
CoffeeScript
clipboard = require 'clipboard'
|
|
crypto = require 'crypto'
|
|
|
|
# Extended: Represents the clipboard used for copying and pasting in Atom.
|
|
#
|
|
# An instance of this class is always available as the `atom.clipboard` global.
|
|
#
|
|
# Section: Atom
|
|
#
|
|
# ## Examples
|
|
#
|
|
# ```coffee
|
|
# atom.clipboard.write('hello')
|
|
#
|
|
# console.log(atom.clipboard.read()) # 'hello'
|
|
# ```
|
|
module.exports =
|
|
class Clipboard
|
|
metadata: null
|
|
signatureForMetadata: null
|
|
|
|
# Creates an `md5` hash of some text.
|
|
#
|
|
# * `text` A {String} to hash.
|
|
#
|
|
# Returns a hashed {String}.
|
|
md5: (text) ->
|
|
crypto.createHash('md5').update(text, 'utf8').digest('hex')
|
|
|
|
# Public: Write the given text to the clipboard.
|
|
#
|
|
# The metadata associated with the text is available by calling
|
|
# {::readWithMetadata}.
|
|
#
|
|
# * `text` The {String} to store.
|
|
# * `metadata` The additional info to associate with the text.
|
|
write: (text, metadata) ->
|
|
@signatureForMetadata = @md5(text)
|
|
@metadata = metadata
|
|
clipboard.writeText(text)
|
|
|
|
# Public: Read the text from the clipboard.
|
|
#
|
|
# Returns a {String}.
|
|
read: ->
|
|
clipboard.readText()
|
|
|
|
# Public: Read the text from the clipboard and return both the text and the
|
|
# associated metadata.
|
|
#
|
|
# Returns an {Object} with the following keys:
|
|
# * `text` The {String} clipboard text.
|
|
# * `metadata` The metadata stored by an earlier call to {::write}.
|
|
readWithMetadata: ->
|
|
text = @read()
|
|
if @signatureForMetadata is @md5(text)
|
|
{text, @metadata}
|
|
else
|
|
{text}
|