func detailHandler(w http.ResponseWriter, r *http.Request) { phrase := r.FormValue("phrase") sentences := []string{phrase} meter := r.FormValue("meter") rams := article.FindRhymeAndMetersInSentences(&sentences, meter, syllabi) meterRegexp, _ := rhyme.ConvertToEmphasisPointsStringRegexp(meter) type PhraseDetails struct { Phrase string Sentences *[]string Meter string MeterRegexp *regexp.Regexp RhymeAndMeters *[]*rhyme.RhymeAndMeter KnownUnknowns *[]string EmphasisPointsDetails *rhyme.EmphasisPointsDetails } pd := PhraseDetails{ Phrase: phrase, Sentences: &sentences, Meter: meter, MeterRegexp: meterRegexp, RhymeAndMeters: rams, KnownUnknowns: syllabi.KnownUnknowns(), EmphasisPointsDetails: syllabi.FindAllEmphasisPointsDetails(phrase), } templateExecuter(w, "detailPage", pd) }
func FindRhymeAndMetersInSentences(sentences *[]string, meter string, syllabi *rhyme.Syllabi) *[]*rhyme.RhymeAndMeter { rams := []*rhyme.RhymeAndMeter{} if meter == "" { meter = rhyme.DefaultMeter } emphasisRegexp, emphasisRegexpSecondary := rhyme.ConvertToEmphasisPointsStringRegexp(meter) for _, s := range *(sentences) { syllabiRams := syllabi.RhymeAndMetersOfPhrase(s, emphasisRegexp, emphasisRegexpSecondary) for _, ram := range *syllabiRams { if ram.EmphasisRegexpMatch2 != "" { rams = append(rams, ram) } } } return &rams }