diff --git a/wordle-life.cgi b/wordle-life.cgi index acd55bb..28ed5d2 100755 --- a/wordle-life.cgi +++ b/wordle-life.cgi @@ -7,13 +7,15 @@ use lib qw( /usr/pkg/lib/perl5/5.24.0 /meta/p/peteyboy/perl5/lib/perl5 ); use CGI::Tiny; use Mojo::Template; use Mojo::Loader 'data_section'; -#use Routes::Tiny; +#use Routes::Tiny; #don't even need use Readonly; - my $ORIGIN_PAGE = "/wordle-life.cgi"; + my $ORIGIN_PAGE = "/wordle-life-f.cgi"; my $defaulttext = "Paste your wordle share here"; cgi { + + #error handler from the CGI:Tiny cookbook my $cgi = $_; $cgi->set_error_handler(sub { @@ -34,22 +36,34 @@ use Readonly; my $method = $cgi->method; my $rle = ""; + #Simple switch: make a one page app, and always go back to the same page. + #GET or HEAD loads the page blank, POST runs the Life file maker if ($method eq 'GET' or $method eq 'HEAD') { - $wordle = $defaulttext; - } elsif ($method eq 'POST') { - $wordle = $cgi->body_param('wordle-result'); #textarea name - if ($wordle =~ /\Q$defaulttext\E/){ - - }else{ - $rle = generate_rle($wordle); + $wordle = $defaulttext; + #$wordle = ""; + } elsif ($method eq 'POST') { + #textarea name, pull the value from POST and reload into textarea + $wordle = $cgi->body_param('wordle-result'); + + #if input textarea not changed from default text, do nothing + unless ($wordle =~ /\Q$defaulttext\E/) { + #[Cc] /){ #cheat, if they put in something that looks like an RLE, pass output through + if ($wordle =~ /^#[Cc] /){ + $rle = $wordle; + #if none of that, do the thing: generate RLE + }else{ + $rle = generate_rle($wordle); } + } - } else { - $cgi->set_response_status(405)->render; - exit; - } + } else { #some other request? PUT, DELETE? + $cgi->set_response_status(405)->render; + exit; + } die "Invalid wordle parameter" unless length $wordle; + + #Load template from DATA section and output my $mt = Mojo::Template->new(auto_escape => 1, vars => 1); my $template = data_section __PACKAGE__, 'index.html.ep'; my $output = $mt->render($template, { ORIGIN_PAGE =>$ORIGIN_PAGE, defaulttext => $defaulttext, wordle => $wordle, rle => $rle }); @@ -59,7 +73,7 @@ use Readonly; }; - +#Try to Generate the RLE. Makes a lot of assumptions sub generate_rle { my $headline = ""; @@ -101,14 +115,14 @@ sub generate_rle { $myline =~ s/green_square/o/g; - + #skip blank lines, count rows added if(length($myline) > 1){ $rowcount += 1; $rleline= $rleline . $myline; } } } - + #this is the format with b,o, and $. Done lazily because I don't compress the repeated b or o. return "$headline\n$row_prefix$col_prefix$rowcount\n$rleline"; } @@ -119,7 +133,134 @@ __DATA__ Play Conway's Life with your Wordle Score + + + + + + + + +

Wordle->Life

+ + +

Play your Wordle Share score in Conway's Life!

+

+

Hey, nerds, isn't it funny how the Wordle Scores can look like a glider in that old computer programming exercise, Conway's Life?

Glider image from Conwaylife.org, it looks like an 8-bit staple gun + +
    +
  1. +

    Paste your wordle share below and submit to convert it to a Conway's Life file so you can run it (to learn more about Conway's Life, read this).

    + + +
    + + + +

    +
    +
  2. +
  3. +

    Click "Submit" and and RLE format file for Conway's Game of Life will appear in the box below and get loaded into the Life Viewer.

    + + +
  4. +
  5. +

    Watch your Wordle score play LIFE!

    +
    + + + +

    If the RLE is correct, it should be loaded in the Life Viewer, and so you are ready to go!

    + +
      +
    • For best results with the Life Viewer, adjust the Zoom and the playback speed (from "1x", slide left to "3/s" or so) and press the Play button:

      +
    • +
    • Press "[Pause]" when it seems stable.

      +
    • +
    +
    +
  6. +
+ + + +

+ +

This should work with the share/copy button in wordle, or copy/pasting your friends' wordles out of Discord or wherever as well. See whose Wordle Score runs the coolest! + +

+If it doesn't seem to be working: +

    +
  1. If there is extra text or lines in your paste, you might not get a valid file in the box above, so look and make sure it looks like a proper RLE file, for example: +

    +

    +#C Wordle 235 3/6
    +x = 5,y = 3
    +boobo$bobbo$ooooo$
    +
    + +

    For details about the Life RLE file format above, read this. + +

  2. + +
  3. You can also copy the contents of the Conway Life box above and try it somewhere else: +
      +
    1. go to a Conway's Life site, such as this one at copy.sh or this one at lazyslug.com and load and run your file.
    2. +
        +
      1. specifically for the one at copy.sh:
      2. +
      3. Press the [Import] button at the top
      4. +
      5. paste in your Life file contents in the box and press [Import]
      6. +
      7. It will put up a box telling you it loaded your Wordle, press [OK]
      8. +
      9. Press the [Run] button and watch your Wordle score play LIFE!
      10. +
      +
    +
+ +

+ + +

+

+ +


+Disclaimer: I made this! People and/or corporations may own their marks or copyrights, etc, on words mentioned on this page I don't claim to + +

+Questions, kudos or comments, mail me @sdf.org +

+Thanks to the community at conwaylife.com, and the friendly folks in the forums there, + and for their Javascript Life Viewer, which I use here. +

+ +

+Thanks to hankchizljaw for making his basic css publicly available +

+

Made in February 2022

+

+

+Hosted by SDF.org +

SDF.org +

+ + + +@@ viewer.html.ep + + +Play Conway's Life with your Wordle Score + + + + +

Wordle->Life

@@ -157,6 +298,21 @@ __DATA__ + + + +
+
+ + + +
+ +
+ + + +

if there is extra text or lines in your paste, you might not get a valid file here, so look and make sure it looks like a proper RLE file, for example: @@ -171,6 +327,13 @@ boobo$bobbo$ooooo$

Next steps: + + + + + + +

  1. copy the contents of the Conway Life box above
  2. go to a Conway's Life site, such as this one at copy.sh or this one at lazyslug.com and load and run your file.
  3. @@ -197,9 +360,10 @@ Questions, kudos or comments, mail me @sdf.org

    Thanks to hankchizljaw for making his basic css publicly available +

    Made in February 2022

    Hosted by SDF.org -

    SDF.org +

    SDF.org