---
name: "Games::Go::Dg2ASCII"
section: "3pm"
platform: "linux"
package: "sgf2dg"
version: "4.026-10+b2"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/Games::Go::Dg2ASCII"
---

# Games::Go::Dg2ASCII(3pm)

Perl extension to convert Games::Go::Diagrams to ASCII diagrams

## NAME

Games::Go::Dg2ASCII - Perl extension to convert Games::Go::Diagrams to ASCII diagrams

## SYNOPSIS

use Games::Go::Dg2ASCII

```
 my $dg2ascii = B<Games::Go::Dg2ASCII-E<gt>new> (options);
 my $ascii = $dg2ascii->convertDiagram($diagram);
```

## DESCRIPTION

A Games::Go::Dg2ASCII object converts a Games::Go::Diagram object into ASCII diagrams.

## METHODS

- my $dg2ascii = **Games::Go::Dg2ASCII-\>new** (?options?)

  A **new** Games::Go::Dg2ASCII takes the following options:

### General Dg2 Converter Options:

- **boardSize** =\> number

  Sets the size of the board.

  Default: 19

- **doubleDigits** =\> true \| false

  Numbers on stones are wrapped back to 1 after they reach 100. Numbers associated with comments and diagram titles are not affected.

  Default: false

- **coords** =\> true \| false

  Generates a coordinate grid.

  Default: false

- **topLine** =\> number (Default: 1)

  - **bottomLine** =\> number (Default: 19)

  - **leftLine** =\> number (Default: 1)

  - **rightLine** =\> number (Default: 19)

  The edges of the board that should be displayed.  Any portion of the board that extends beyond these numbers is not included in the output.

- **diaCoords** =\> sub { # convert $x, $y to Games::Go::Diagram coordinates }

  This callback defines a subroutine to convert coordinates from `$x`, `$y` to whatever coordinates are used in the Games::Go::Diagram object.  The default **diaCoords** converts 1-based `$x`, `$y` to the same coordinates used in SGF format files.  You only need to define this if you're using a different coordinate system in the Diagram.

  Default:\
       sub { my ($x, `$y`) = `@_`;\
             `$x` = chr($x - 1 + ord('a')); # convert 1 to 'a', etc\
             `$y` = chr($y - 1 + ord('a'));\
             return("$x$y"); },           # concatenate two letters

- **file** =\> 'filename' \| $descriptor \| \\$string \| \\@array

  If **file** is defined, the ASCII diagram is dumped into the target. The target can be any of:

  - filename

    The filename will be opened using IO::File-\>new.  The filename should include the '\>' or '\>\>' operator as described in 'perldoc IO::File'.  The ASCII diagram is written into the file.

  - descriptor

    A file descriptor as returned by IO::File-\>new, or a \\\*FILE descriptor.  The ASCII diagram is written into the file.

  - reference to a string scalar

    The ASCII diagram is concatenated to the end of the string.

  - reference to an array

    The ASCII diagram is split on "\\n" and each line is pushed onto the array.

  Default: undef

- **print** =\> sub { my ($dg2ascii, @lines) = @\_; ... }

  A user defined subroutine to replace the default printing method. This callback is called from the **print** method (below) with the reference to the **Dg2ASCII** object and a list of lines that are part of the ASCII diagram lines.

- $dg2tex-\>**configure** (option =\> value, ?...?)

  Change Dg2TeX options from values passed at **new** time.

- $dg2ascii-\>**print** ($text ? , ... ?)

  **print**s the input `$text` directly to **file** as defined at **new** time.  Whether or not **file** was defined, **print** accumulates the `$text` for later retrieval with **converted**.

- my $ascii = $dg2ascii-\>**converted** ($replacement)

  Returns the entire ASCII diagram converted so far for the **Dg2ASCII** object.  If `$replacement` is defined, the accumulated ASCII is replaced by `$replacement`.

- $dg2ascii-\>**comment** ($comment ? , ... ?)

  Inserts the comment character (which is nothing for ASCII) in front of each line of each comment and **print**s it to **file**.

- my $dg2ascii-\>**convertDiagram** ($diagram)

  Converts a *Games::Go::Diagram* into ASCII.  If **file** was defined in the **new** method, the ASCII is dumped into the **file**.  In any case, the ASCII is returned as a string scalar.

- my $ascii = $dg2ascii-\>**convertText** ($text)

  Converts `$text` into ASCII code - gee, that's not very hard.  In fact, this method simply returns whatever is passed to it.  This is really just a place-holder for more complicated converters.

  Returns the converted text.

- $title = $dg2ascii-\>**convertProperties** (\\%sgfHash)

  **convertProperties** takes a reference to a hash of properties as extracted from an SGF file.  Each hash key is a property ID and the hash value is a reference to an array of property values: `$hash`-\>{propertyId}-\>\[values\].  The following SGF properties are recognized:

  - GN GameName

    - EV EVent

    - RO ROund

    - PW PlayerWhite

    - WR WhiteRank

    - PB PlayerBlack

    - BR BlackRank

    - DT DaTe

    - PC PlaCe

    - GC GameComment

    - KM KoMi

    - RE REsult

    - TM TiMe

    Both long and short property names are recognized, and all unrecognized properties are ignored with no warnings.  Note that these properties are all intended as game-level notations.

- $dg2ascii-\>**close**

  **print**s any final text to the diagram (currently none) and closes the dg2ascii object.  Also closes **file** if appropriate.

## SEE ALSO

- sgf2dg(1)

  Script to convert SGF format files to Go diagrams

## BUGS

Seems unlikely.

## AUTHOR

Reid Augustin, \<reid@hellosix.com\>

## COPYRIGHT AND LICENSE

Copyright (C) 2005 by Reid Augustin

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.5 or, at your option, any later version of Perl 5 you may have available.
