Add an endpoint to generate a character into a series of tweets.

This commit is contained in:
Feufochmar 2020-07-15 18:21:09 +02:00
parent a2a32b62f9
commit d027f1d69f
3 changed files with 61 additions and 3 deletions

View File

@ -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)

View File

@ -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

View File

@ -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