Text Editing & Formatting

Comma List Toggle

Switch between comma-separated values and separate lines.

OfficialOn-device

Download action

What Comma List Toggle does

Joins multiple non-empty standard or rich-text lines with commas, or splits one comma-separated line while respecting commas inside matching quotes.

CategoryText Editing & Formatting
Action typeJavaScript
Default resultReplace selected text by default
InternetNot required

Action and outcome

Comma List Toggle example
ActionOutcome
Comma List ToggleSelected text: Apple, Banana, "Pear, green"Apple Banana "Pear, green"

Use Comma List Toggle

Follow these steps to switch between comma-separated values and separate lines with ActionClip.

  1. Select the text you want to use.
  2. Choose Comma List Toggle from ActionClip.
  3. In editable text, ActionClip replaces the selection immediately. In read-only text, it opens the result for review and copying.

Requirements and privacy

  • Before you start: No setup required.
  • Your selected text: Runs locally in ActionClip’s JavaScript sandbox. Selected text does not leave your Mac.

Action script

The script below is included so you can inspect how the action works before downloading it.

JavaScript definition
function run(selected_text) {
  const lines = selected_text
    .split(/\r\n|[\n\r\u000B\u000C\u0085\u2028\u2029]/)
    .map((line) => line.trim())
    .filter((line) => line.length > 0);

  if (lines.length > 1) return lines.join(", ");
  if (lines.length === 0) return "";

  const values = [];
  let current = "";
  let quote = null;
  for (let index = 0; index < lines[0].length; index += 1) {
    const character = lines[0][index];
    if ((character === '"' || character === "'") && quote === null) {
      quote = character;
      current += character;
    } else if (character === quote) {
      if (lines[0][index + 1] === quote) {
        current += character + character;
        index += 1;
      } else {
        quote = null;
        current += character;
      }
    } else if (character === "," && quote === null) {
      if (current.trim()) values.push(current.trim());
      current = "";
    } else {
      current += character;
    }
  }
  if (current.trim()) values.push(current.trim());
  return values.length > 1 ? values.join("\n") : lines[0];
}