app.aug
Function and constructor middleware · Source and specification
Files in this project
Code
// aug-spec: "app.aug.md" explains this file. Read it before changes; refresh with aug spec.
import Console from august.io
import Logger from logging
import Audit from interceptors
import Positive from interceptors
import AddOne from interceptors
/**
* Prints a number and returns its label.
* @param x The numeric input, validated and incremented by the chain.
* @param label Text forwarded through each layer unchanged.
*/
[Audit]
[Positive(y=x)]
[AddOne(y=x)]
describe(resolve Logger logger, resolve Console console, int x, string label):
console.write(value=x)
return label
interface IGreeter:
greet(resolve Logger logger, resolve Console console) returns string uses Console.write
/** Construction stores its inputs; startup is visible in the greet call. */
Greeter(resolve Logger logger to _logger, string name) implements IGreeter:
/** Method annotations wrap each method invocation separately. */
[Audit]
greet(resolve Logger logger, resolve Console console):
return "Hello, " + name + "!"// aug-spec: "app.aug.md" explains this file. Read it before changes; refresh with aug spec.
import Console from august.io
import Logger from logging
import Audit from interceptors
import Positive from interceptors
import AddOne from interceptors
/**
* Prints a number and returns its label.
* @param x The numeric input, validated and incremented by the chain.
* @param label Text forwarded through each layer unchanged.
*/
[Audit]
[Positive(y=x)]
[AddOne(y=x)]
describe(resolve Logger logger, resolve Console console, int x, string label) {
console.write(value=x)
return label
}
interface IGreeter {
greet(resolve Logger logger, resolve Console console) returns string uses Console.write
}
/** Construction stores its inputs; startup is visible in the greet call. */
Greeter(resolve Logger logger to _logger, string name) implements IGreeter {
/** Method annotations wrap each method invocation separately. */
[Audit]
greet(resolve Logger logger, resolve Console console) {
return "Hello, " + name + "!"
}
}Compiled specification
describe · source
Prints a number and returns its label. It takes x as an integer and label as a string. It gets logger (Logger) and console (Console) from dependency injection.
It can call Console.write. Failures can raise ValidationError.
Layers run in the declared order. Call Audit.around. Call Positive.around. Map x to y. Call AddOne.around. Map x to y.
It passes x to console.write. It returns label. source
Checked interface
describe(resolve Logger logger, resolve Console console, int x, string label) returns string unless ValidationError uses Console.writeIt takes x as an integer (the numeric input, validated and incremented by the chain) and label as a string (Text forwarded through each layer unchanged). It gets logger (Logger) and console (Console) from dependency injection. It can call Console.write. Failures can raise ValidationError.
IGreeter · interface · source
IGreeter.greet · source
It gets logger (Logger) and console (Console) from dependency injection. It returns string. It can call Console.write.
Greeter · class · source
Construction stores its inputs; startup is visible in the greet call. It implements IGreeter. It takes name as a string, kept read-only. It gets _logger (Logger), kept read-only and private as _logger from dependency injection.
Greeter.greet · source
Method annotations wrap each method invocation separately. It gets logger (Logger) and console (Console) from dependency injection. It can call Console.write.
Layers run in the declared order. Call Audit.around. It returns the text Hello, {name}!. source
Checked interface
greet(resolve Logger logger, resolve Console console) returns string uses Console.writeIt gets logger (Logger) and console (Console) from dependency injection. It can call Console.write.
Dependencies
It uses Console (write) from august.io. It uses AddOne (around), Audit (around), and Positive (around) from interceptors. It uses Logger from logging.