about summary refs log tree commit diff stats
path: root/lib
diff options
context:
space:
mode:
authorAndinus <andinus@nand.sh>2021-02-18 18:52:19 +0530
committerAndinus <andinus@nand.sh>2021-02-18 18:54:31 +0530
commitc390480d010bdd2b58d9aeb1c00f375575db2547 (patch)
tree3a323b6c809ba41adb9ec12b006e55f2edcef39c /lib
parent52432265c0b8a35af02e3d05911fb50613b5ce81 (diff)
downloadoctans-c390480d010bdd2b58d9aeb1c00f375575db2547.tar.gz
Handle reading puzzle from file within Octans::CLI module
This makes it easier to understand.
Diffstat (limited to 'lib')
-rw-r--r--lib/Octans/CLI.rakumod9
-rw-r--r--lib/Octans/Puzzle.rakumod51
2 files changed, 30 insertions, 30 deletions
diff --git a/lib/Octans/CLI.rakumod b/lib/Octans/CLI.rakumod
index 04e1b5d..8abfef8 100644
--- a/lib/Octans/CLI.rakumod
+++ b/lib/Octans/CLI.rakumod
@@ -43,8 +43,13 @@ multi sub MAIN (
         ];
     }
 
-    # Get the puzzle from $path if it's passed. And set @gray-squares.
-    @puzzle = get-puzzle($_) with $path;
+    # Get the puzzle from $path if it's passed.
+    if $path.IO.f {
+        @puzzle = $path.IO.lines.map(*.words.cache.Array);
+    } else {
+        @puzzle = get-puzzle($path);
+    }
+
     # set-gray-squares also removes asterisks from @puzzle.
     @gray-squares = set-gray-squares(@puzzle); # ($y, $x)
 
diff --git a/lib/Octans/Puzzle.rakumod b/lib/Octans/Puzzle.rakumod
index d97f9d6..a9563cb 100644
--- a/lib/Octans/Puzzle.rakumod
+++ b/lib/Octans/Puzzle.rakumod
@@ -8,36 +8,31 @@ sub get-puzzle (
 ) is export {
     my @puzzle;
 
-    # Read the puzzle from file if it exists.
-    if $path.IO.f {
-        @puzzle = $path.IO.lines.map(*.words.cache.Array);
+    # $url will hold the url that we'll call to get the toot data.
+    my Str $url;
+
+    # User can pass 2 types of links, either it will be the one
+    # when they view it from their local instance or the one they
+    # get from Algot's profile. We set $url from it.
+    if $path.match("web/statuses") -> $match {
+        $url = $match.replace-with("api/v1/statuses");
     } else {
-        # $url will hold the url that we'll call to get the toot data.
-        my Str $url;
-
-        # User can pass 2 types of links, either it will be the one
-        # when they view it from their local instance or the one they
-        # get from Algot's profile. We set $url from it.
-        if $path.match("web/statuses") -> $match {
-            $url = $match.replace-with("api/v1/statuses");
-        } else {
-            $url = "https://mastodon.art/api/v1/statuses/" ~ $path.split("/")[*-1];
-        }
-
-        # grids capture grids of a row.
-        my token grids { \S \*? }
-        # rows capture rows of the puzzle.
-        my token rows { <grids> ** 2..* % \h }
+        $url = "https://mastodon.art/api/v1/statuses/" ~ $path.split("/")[*-1];
+    }
 
-        # jget just get's the url & decodes the json. We access the
-        # description field of 1st media attachment.
-        if (jget($url)<media_attachments>[0]<description> ~~
-            / \n\n <rows>+ % \n /
-           ) -> $match {
-            for 0 .. $match<rows>.end -> $y {
-                for 0 .. $match<rows>[$y]<grids>.end -> $x {
-                    @puzzle[$y][$x] = $match<rows>[$y]<grids>[$x].lc;
-                }
+    # grids capture grids of a row.
+    my token grids { \S \*? }
+    # rows capture rows of the puzzle.
+    my token rows { <grids> ** 2..* % \h }
+
+    # jget just get's the url & decodes the json. We access the
+    # description field of 1st media attachment.
+    if (jget($url)<media_attachments>[0]<description> ~~
+        / \n\n <rows>+ % \n /
+       ) -> $match {
+        for 0 .. $match<rows>.end -> $y {
+            for 0 .. $match<rows>[$y]<grids>.end -> $x {
+                @puzzle[$y][$x] = $match<rows>[$y]<grids>[$x].lc;
             }
         }
     }