Platon Technologies
not logged in Login Registration
EnglishSlovak
open source software development celebrating 10 years of open source development! Monday, March 16, 2026

File: [Platon] / scripts / php / atlantis / screenplay-conv.php (download)

Revision 1.1, Tue Jun 18 17:07:31 2002 UTC (23 years, 9 months ago) by karas9

Script for converting special screenplay format to ATL format...

<?php

    /*/
     *
     * Convertor for screenplay scripts to Atlantis Theatre Language
     * Created by Wolcano
     * (c) Platon SDG 2002
     *
    /*/

    $input_file = "php://stdin";
    $output_file = "php://stdout";

    $in = file($input_file);
    $out = fopen($output_file, "w");

    $read_speed = 8; //chars_per_second
    $ignore_words = array( "CUT TO:", "CREDIT SEQUENCE:",
        "FADE TO BLACK", "FADE IN:", "DISSOLVE TO:");
    
    $actor_name =   "^                                  ([^ ].*)";
    $speech_desc =  "^                            \(([^ ][^\)]*)\)?";
    $speech_desc_cont = "^                              ([^ ][^\)]*)";
    $speech =       "^                       ([^ ].*)";
    $speech_cont = $speech;
    $sit_desc =         "^        ([^ ].*)";
    $camera_move =  "^                                                        ([^ ].*)";

    function proceed_line($fp, $s) {
        if (strlen($s) == 0)
            return '';
        global $read_speed;
        $sz = strlen($s);
        fwrite($fp, $s . "\n");
        fwrite($fp, '<' . (int) ($sz / $read_speed) . ">\n");
        return '';
    }
    
    $in_speech_desc = false;
    $in_speech = false;
    $in_sit_desc = false;
    $in_oth = false;

    for($i = 0; $i < sizeof($in); $i++) {
        // NAME OF ACTOR
        if (ereg($actor_name, $in[$i], $regs)) {
            $last_actor = trim($regs[1]);
            proceed_line($out, $line);
            //$line = "<$last_actor>";
            continue;
        }

        // SPEECH DESCRIPTION
        if ($in_speech_desc) {
            if (ereg($speech_desc_cont, $in[$i], $regs)) {
                $line .= ' ' . trim($regs[1]);
                continue;
            }
            else {
                /*
                proceed_line($out, $line);
                $line = '';
                */
                $in_speech_desc = false;
            }
        }
        else {
            if (ereg($speech_desc, $in[$i], $regs)) {
                $in_speech_desc = true;
                /*
                proceed_line($out, $line);
                //*/
                //$line = '--sposob--' . trim($regs[1]);
                $line = '(' . trim($regs[1]) . ')';
                continue;
            }
        }

        // DIRECT SPEECH OF AN ACTOR
        if ($in_speech) {
            if (ereg($speech_cont, $in[$i], $regs)) {
                $line .= ' ' . trim($regs[1]);
                continue;
            }
            else {
                proceed_line($out, "<$last_actor>" . $line);
                $line = '';
                $in_speech = false;
            }
        }
        else {
            if (ereg($speech, $in[$i], $regs)) {
                $in_speech = true;
                //$line .= '--speech--'. trim($regs[1]);
                $line .= ': ' . trim($regs[1]);
                continue;
            }
        }

        // SITUATION DESCRIPTION
        if ($in_sit_desc) {
            if (ereg($sit_desc, $in[$i], $regs)) {
                $line .= ' ' . trim($regs[1]);
                continue;
            }
            else {
                proceed_line($out, $line);
                $line = '';
                $in_sit_desc = false;
            }
        }
        else {
            if (ereg($sit_desc, $in[$i], $regs)) {
                $in_sit_desc = true;
                //$line .= '--desc--'. trim($regs[1]);
                $line .= ''. trim($regs[1]);
                continue;
            }
        }

    }



    
    //proceed_line($out, $line);

    fflush($out);
    fclose($out);

?>

Platon Group <platon@platon.org> http://platon.org/
Copyright © 2002-2006 Platon Group
Site powered by Metafox CMS
Go to Top