Add an endpoint to generate a character into a series of tweets.
This commit is contained in:
parent
a2a32b62f9
commit
d027f1d69f
3
main.rkt
3
main.rkt
|
@ -32,7 +32,8 @@
|
|||
("FloraCharacterGenerator" symlink "/Floraverse/CharacterGenerator")
|
||||
; Floraverse section
|
||||
("Floraverse" weblet pages:floraverse
|
||||
("CharacterGenerator" weblet pages:floraverse-character-generator)
|
||||
("CharacterGenerator" weblet pages:floraverse-character-generator
|
||||
("Tweet" weblet pages:floraverse-character-generator-tweet))
|
||||
("AboutCharacterGenerator" weblet pages:floraverse-character-generator-about)
|
||||
("Calendar" weblet pages:floraverse-calendar)
|
||||
("Calendar/{month}/{day}" matching-weblet pages:floraverse-calendar)
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
flora-character-generate
|
||||
; Formating functions
|
||||
flora-character->full-html
|
||||
;flora-character->tweets
|
||||
flora-character->tweets
|
||||
)
|
||||
|
||||
(define (flora-character-generate floragen format [constraints (make-hash)])
|
||||
|
@ -125,7 +125,7 @@
|
|||
; Traits
|
||||
,@(apply append (map (lambda (x) (list x '(br))) (character-traits chr)))
|
||||
; Motto
|
||||
,(case:upcase-1st genitive) " motto is “" ,(character-motto chr) "”. "
|
||||
,(case:upcase-1st genitive) " motto is “" ,(character-motto chr) "” "
|
||||
)
|
||||
(p
|
||||
(h3 "Abilities")
|
||||
|
@ -153,6 +153,51 @@
|
|||
"")
|
||||
))
|
||||
|
||||
; Generation into a series of tweets
|
||||
; Return a hash with the following values:
|
||||
; identity, birth, traits, motto
|
||||
(define (flora-character->tweets chr floragen)
|
||||
; Gender and grammatical words
|
||||
(define gender (character-gender chr))
|
||||
(define plural? (gender-plural? gender))
|
||||
(define subject (gender-subject gender))
|
||||
(define genitive (gender-genitive gender))
|
||||
; Name
|
||||
(define name (character-name chr))
|
||||
; Species name
|
||||
(define sp-name (compute-species-name
|
||||
floragen
|
||||
(character-species-genes chr)
|
||||
(character-species-start chr)
|
||||
(character-species-imited chr)))
|
||||
; Birth
|
||||
(define birthday (character-birthday chr))
|
||||
; Affinity
|
||||
(define affinity (character-affinity chr))
|
||||
;
|
||||
(make-immutable-hash
|
||||
`((identity .
|
||||
,(string-append
|
||||
(gender-title-abbreviation gender) " " (show-name name) " "
|
||||
(english:3rd-person-of "be" plural?) " " (english:with-undefined-article (car sp-name)) " with "
|
||||
(element-affinity-description
|
||||
(elements-ref
|
||||
(flora-generator-elements floragen)
|
||||
(signed-element-name (car (affinity-composition affinity))))) ". "
|
||||
(case:upcase-1st genitive) " name is pronounced "
|
||||
"/" (word-pronounciation name) "/."))
|
||||
(birth .
|
||||
,(string-append
|
||||
(case:upcase-1st subject) " " (english:3rd-person-of "be" plural?) " born "
|
||||
(sex-name (character-sex chr)) " on the " (english:ordinal (date+sign-day birthday)) " of " (date+sign-month-name birthday) " "
|
||||
(car (show-place (character-birth-place chr) #t)) ". "
|
||||
(case:upcase-1st genitive) " astrological sign is " (date+sign-sign-name birthday) "."))
|
||||
(traits . ,(string-join (character-traits chr) " "))
|
||||
(motto .
|
||||
,(string-append
|
||||
(case:upcase-1st genitive) " motto is “" (character-motto chr) "”"))
|
||||
)))
|
||||
|
||||
; Helping functions for the diverse outputs
|
||||
|
||||
; Display a name, and eventually its latin transcription
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
; Floraverse-related pages
|
||||
; Includes the floraverse character generator
|
||||
(require
|
||||
json
|
||||
racket/string
|
||||
racket/date
|
||||
"templates.rkt"
|
||||
|
@ -10,6 +11,7 @@
|
|||
"../generators/flora/database.rkt"
|
||||
"../generators/flora/calendar.rkt"
|
||||
"../generators/flora/species.rkt"
|
||||
"../webcontainer/weblets.rkt"
|
||||
"../webcontainer/weblet-parameter.rkt"
|
||||
"../lang/english.rkt"
|
||||
"../lang/case.rkt")
|
||||
|
@ -18,6 +20,7 @@
|
|||
pages:floraverse
|
||||
pages:floraverse-character-generator-about
|
||||
pages:floraverse-character-generator
|
||||
pages:floraverse-character-generator-tweet
|
||||
pages:floraverse-calendar)
|
||||
|
||||
; The generator
|
||||
|
@ -129,6 +132,15 @@
|
|||
)
|
||||
,(flora-character-generate *FloraGen* flora-character->full-html constraints)))))
|
||||
|
||||
; Tweet output, as json
|
||||
(define pages:floraverse-character-generator-tweet
|
||||
(raw-data-weblet
|
||||
#:content-type #"application/json;charset=utf-8"
|
||||
#:body
|
||||
(lambda (param)
|
||||
(jsexpr->bytes
|
||||
(flora-character-generate *FloraGen* flora-character->tweets)))))
|
||||
|
||||
; Calendar Tool
|
||||
(define pages:floraverse-calendar
|
||||
(pages:template
|
||||
|
|
Loading…
Reference in New Issue