---
name: "dicttool"
section: "3tcl"
platform: "linux"
package: "tcllib"
version: "2.0+dfsg-4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/dicttool"
---

# dicttool(3tcl)

Dictionary Tools

```

```

## NAME

dicttool - Dictionary Tools

## SYNOPSIS

package require **Tcl 8.5 9**

package require **dicttool ?1.2?**

**ladd** *varname* *args*

**ldelete** *varname* *args*

**dict getnull** *args*

**dict print** *dict*

**dict is\_dict** *value*

**rmerge** *args*

```

```

## DESCRIPTION

The **dicttool** package enhances the standard *dict* command with several new commands. In addition, the package also defines several "creature comfort" list commands as well. Each command checks to see if a command already exists of the same name before adding itself, just in case any of these slip into the core.

- **ladd** *varname* *args*

  This command will add a new instance of each element in *args* to *varname*, but only if that element is not already present.

- **ldelete** *varname* *args*

  This command will delete all instances of each element in *args* from *varname*.

- **dict getnull** *args*

  Operates like **dict get**, however if the key *args* does not exist, it returns an empty list instead of throwing an error.

- **dict print** *dict*

  This command will produce a string representation of *dict*, with each nested branch on a newline, and indented with two spaces for every level.

- **dict is\_dict** *value*

  This command will return true if *value* can be interpreted as a dict. The command operates in such a way as to not force an existing dict representation to shimmer into another internal rep.

- **rmerge** *args*

  Return a dict which is the product of a recursive merge of all of the arguments. Unlike **dict merge**, this command descends into all of the levels of a dict. Dict keys which end in a : indicate a leaf, which will be interpreted as a literal value, and not descended into further.

  ```
  set items [dict merge {
    option {color {default: green}}
  } {
    option {fruit {default: mango}}
  } {
    option {color {default: blue} fruit {widget: select values: {mango apple cherry grape}}}
  }]
  puts [dict print $items]
  ```

-

  Prints the following result:

  ```
  option {
    color {
      default: blue
    }
    fruit {
      widget: select
      values: {mango apple cherry grape}
    }
  }
  ```

## BUGS, IDEAS, FEEDBACK

This document, and the package it describes, will undoubtedly contain bugs and other problems. Please report such in the category *dict* of the *Tcllib Trackers* \[http://core.tcl.tk/tcllib/reportlist\]. Please also report any ideas for enhancements you may have for either package and/or documentation.

When proposing code changes, please provide *unified diffs*, i.e the output of **diff -u**.

Note further that *attachments* are strongly preferred over inlined patches. Attachments can be made by going to the **Edit** form of the ticket immediately after its creation, and then using the left-most button in the secondary navigation bar.

## KEYWORDS

dict

## CATEGORY

Utilities

## COPYRIGHT

```
Copyright (c) 2017 Sean Woods <yoda@etoyoc.com>
```
