| Paste number 55628: | broken responders-definer |
| Pasted by: | turbo24prg |
| 6 months, 2 weeks ago | |
| #dylan | Context in IRC logs | |
| Paste contents: |
| define responders "/about" get () => show-about; end; define macro responders-definer { define responders ?responders:* end } => { ?responders } responders: { } => { } { ?responder:* ... } => { ?responder ... } responder: { ?url:expression ?responder-methods:* } => { begin let responder = make(<responder>); ?responder-methods add-responder(?url, responder); end } responder-methods: { } => { } { ?responder-method:* ; ... } => { ?responder-method ; ... } responder-method: { ?request-method:expression ( ?regex:* ) => ?actions:* } => { begin let map = element(responder.responder-map, ?#"request-method", default: #f); unless (map) map := make(<table>); responder.responder-map[?#"request-method"] := map; end unless; map[compile-regex(?regex)] := list(?actions); end } regex: { } => { "^$" } { ?pattern:expression } => { ?pattern } // do(method (foo) foo() | error(<action-sequence-error>) end, ...) end macro responders-definer; |
Annotations for this paste:
| Annotation number 1: | another try, still not working |
| Pasted by: | turbo24prg |
| 6 months, 2 weeks ago | |
| Context in IRC logs | |
| Paste contents: |
| define responders "/foo" get () => (test, foo-get), post () => (foo-post); "/bar" post () => (bar-post); end; Invalid syntax in macro-case macro call. define macro responders-definer { define responders ?responders:* end } => { ?responders } responders: { } => { } { ?responder:* ; ... } => { ?responder ; ... } responder: { ?url:* ?responder-methods:* } => { begin let responder = make(<responder>); ?responder-methods add-responder(?url, responder); end } responder-methods: { } => { } { ?responder-method:* , ... } => { ?responder-method ; ... } responder-method: { ?request-method:* ( ?regex:* ) => ( ?actions:* ) } => { begin let map = element(responder.responder-map, ?#"request-method", default: #f); unless (map) map := make(<table>); responder.responder-map[?#"request-method"] := map; end unless; map[compile-regex(?regex)] := list(?actions); end } regex: { } => { "^$" } { ?pattern:* } => { ?pattern } // do(method (foo) foo() | error(<action-sequence-error>) end, ...) end macro responders-definer; |