Action

Autour

Posted by @urbanbike, Last update about 4 years ago - Unlisted

// version du 20200312-1325
// action de paires

// script à modifier selon vos besoins…
// paires espagnoles, françaises et personnelles
// ATTENTION : dépend de LA typo utilisée
// tous les caractères unicode ne sont pas disponibles dans toutes les typos (ex : double quotation mark)

// Pour créer ou ajouter vos paires de caractères, voir :
// https://www.fileformat.info/info/unicode/category/index.htm
// par catégorie, par exemple :
// https://www.fileformat.info/info/unicode/category/Sm/list.htm
// prendre l'info hexa (\x) mais de préférence unicode (\u)

// based on: greg pierce’s original smart wrap action https://actions.getdrafts.com/a/1Bz
// and Wrapper, https://actions.getdrafts.com/a/1Q8

Steps

  • script

    // version du 20200312-1325
    // action de paires
    
    // script à modifier selon vos besoins…
    // paires espagnoles, françaises et personnelles
    // ATTENTION : dépend de LA typo utilisée
    // tous les caractères unicode ne sont pas disponibles dans toutes les typos (ex : double quotation mark)
    
    // Pour créer ou ajouter vos paires de caractères, voir :
    // https://www.fileformat.info/info/unicode/category/index.htm
    // par catégorie, par exemple :
    // https://www.fileformat.info/info/unicode/category/Sm/list.htm
    // prendre l'info hexa (\x) mais de préférence unicode (\u)
    
    // based on: greg pierce's original smart wrap action https://actions.getdrafts.com/a/1Bz
    // and Wrapper, https://actions.getdrafts.com/a/1Q8
    
    var range = editor.getSelectedRange();
    var priorText = editor.getTextInRange(0, range[0]);
    
    var p = Prompt.create();
    
    // p. title = "Histoire de Paires…";
    // p.message = "Après sélection du texte à envelopper, choisir…";
    
    p.addButton("(text)");
    p.addButton("{text}");
    p.addButton("Double Quotes");
    p.addButton("Single Quotes");
    p.addButton("[text]");
    p.addButton("<text>");
    p.addButton("`code`");
    p.addButton("« text »");
    // p.addButton("‟text”");
    p.addButton("— text with em dash —");
    p.addButton("- text with en dash –");
    p.addButton("¡text!");
    p.addButton("¿text?");
    p.addButton("→ *text* →");
    p.addButton("| **text** ►");
    // Etc. 
    
    p.show();
    
    if (p.buttonPressed == "(text)") {
      var open="\x28";
      var close="\x29";
    } else if (p.buttonPressed == "{text}") {
      var open = "\x7B";
      var close = "\x7D";
    } else if (p.buttonPressed == "Double Quotes") {
      var open = "\x22";
      var close = "\x22";
    } else if (p.buttonPressed == "Single Quotes") {
      var open = "\x27";
      var close = "\x27";
    } else if (p.buttonPressed == "[text]") {
      var open = "\x5B";
      var close = "\x5D";
    } else if (p.buttonPressed == "<text>") {
      var open = "\x3C";
      var close = "\x3E";
    } else if (p.buttonPressed == "`code`") {
      var open = "\x60";
      var close = "\x60";
    } else if (p.buttonPressed == "« text »") {
      var open = "\u00AB\xA0";
      var close = "\xA0\u00BB";
      // } else if (p.buttonPressed == "‟text”") {
      //  var open = "\u201F";
      //  var close = "\u201D";
      // exemple typique qui dépend de la typo employée
      // les guillemets droits sont ok mais pas dans toutes les polices !
    } else if (p.buttonPressed == "— text with em dash —") {
      var open = "\u2014\xA0";
      var close = "\xA0\u2014";
    } else if (p.buttonPressed == "- text with en dash –") {
      var open = "\u2013\xA0";
      var close = "\xA0\u2013";
    } else if (p.buttonPressed == "¡text!") {
      var open = "\xA1";
      var close = "\x21";
    } else if (p.buttonPressed == "¿text?") {
      var open = "\xBF";
      var close = "\x3F";
    } else if (p.buttonPressed == "→ *text* →") {
      var open = "\u2192\xA0\u002A";
      var close = "\u002A\xA0\u2192";
    } else if (p.buttonPressed == "| **text** ►") {
      var open = "\uFE31\xA0\u002A\u002A";
      var close = "\u002A\u002A\xA0\u25BA";
    }
    
    if (range[1] > 0) {
      //text selected, wrap it!
      editor.setSelectedText(open + editor.getSelectedText() + close);
      editor.setSelectedRange(range[0] + range[1] + open.length + close.length, 0);
    } else {
      // no selection, find last
      var lastOpen = priorText.lastIndexOf(open);
      var lastClose = priorText.lastIndexOf(close);
      
      if	(lastOpen == -1 || lastClose > lastOpen) { // no close, use open
      editor.setSelectedText(open);
      editor.setSelectedRange(range[0]+open.length, 0);
    } else { // close last open
    editor.setSelectedText(close);
    editor.setSelectedRange(range[0]+close.length, 0);
    }
    }

Options

  • After Success Nothing
    Notification Error
    Log Level Error
Items available in the Drafts Directory are uploaded by community members. Use appropriate caution reviewing downloaded items before use.