about summary refs log tree commit diff stats
path: root/apps/ex2.mu
blob: 16f04d29eacd7cccef5e72f2edd89106704fea90 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Add 3 and 4, and return the result in the exit code.
#
# To run:
#   $ ./translate_mu apps/ex2.mu
#   $ ./a.elf
# Expected result:
#   $ echo $?
#   7

fn main -> _/ebx: int {
  var result/eax: int <- do-add 3 4
  return result
}

fn do-add a: int, b: int -> _/eax: int {
  var result/ecx: int <- copy a
  result <- add b
  return result
}
>
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43





                          

                                                                     



                                                 








                                                                          
                                          


                                                                

                                                                             

             
                                        

                                                         
                                                           
                                                       


              
                                                  
                       
                                  


         
use Cro::HTTP::Router;
use Cro::WebApp::Template;

use Crater::Gallery;
use Crater::Session;

#| gallery-routes contains routes for gallery view, images. Routes in
#| this block must be authenticated.
sub gallery-routes(
    Crater::Gallery :$gallery!, #= gallery object
) is export {
    route {
        # Logged in users can view images.
        get -> LoggedIn $session, 'resources', 'img', *@path, :$original {
            my $dir = $gallery.directory;
            # Serve the thumbnail unless original image was requested.
            $dir .= add(".crater/thumbnails") unless $original.defined;
            static $dir, @path;
        }

        # Gallery view.
        get -> LoggedIn $session, *@path {
            # Generates a navigation bar for nested directories.
            my @nav = %(name => "home", url => "/"), ;
            for @path.kv -> $idx, $p {
                next if $p eq '';
                @nav.push: %(name => $p, url => (@nav[*-1]<url> ~ $p ~ "/"));
            }

            template 'gallery.crotmp', {
                :@nav,
                show-nav => @path.elems ?? True !! False,
                gallery => $gallery.list(sub-dir => @path),
                title => $gallery.title() // "Gallery",
            };
        }

        # Redirect to login page if not logged in.
        get -> *@path {
            response.status = 401;
        }
    }
}