typesafe-precure (empty) → 0.1.0.0
raw patch · 52 files changed
+3049/−0 lines, 52 filesdep +basedep +dlistdep +hspecsetup-changed
Dependencies added: base, dlist, hspec, monad-skeleton, template-haskell, typesafe-precure
Files
- LICENSE +30/−0
- Setup.hs +2/−0
- src/ACME/PreCure.hs +14/−0
- src/ACME/PreCure/Monad.hs +129/−0
- src/ACME/PreCure/Textbook.hs +18/−0
- src/ACME/PreCure/Textbook/Dokidoki.hs +6/−0
- src/ACME/PreCure/Textbook/Dokidoki/Types.hs +96/−0
- src/ACME/PreCure/Textbook/Dokidoki/Words.hs +82/−0
- src/ACME/PreCure/Textbook/First.hs +6/−0
- src/ACME/PreCure/Textbook/First/Types.hs +47/−0
- src/ACME/PreCure/Textbook/First/Words.hs +41/−0
- src/ACME/PreCure/Textbook/Fresh.hs +6/−0
- src/ACME/PreCure/Textbook/Fresh/Types.hs +74/−0
- src/ACME/PreCure/Textbook/Fresh/Words.hs +86/−0
- src/ACME/PreCure/Textbook/GoPrincess.hs +6/−0
- src/ACME/PreCure/Textbook/GoPrincess/Types.hs +145/−0
- src/ACME/PreCure/Textbook/GoPrincess/Words.hs +101/−0
- src/ACME/PreCure/Textbook/HappinessCharge.hs +6/−0
- src/ACME/PreCure/Textbook/HappinessCharge/Types.hs +114/−0
- src/ACME/PreCure/Textbook/HappinessCharge/Words.hs +128/−0
- src/ACME/PreCure/Textbook/HeartCatch.hs +6/−0
- src/ACME/PreCure/Textbook/HeartCatch/Types.hs +95/−0
- src/ACME/PreCure/Textbook/HeartCatch/Words.hs +91/−0
- src/ACME/PreCure/Textbook/MahoGirls.hs +6/−0
- src/ACME/PreCure/Textbook/MahoGirls/Types.hs +296/−0
- src/ACME/PreCure/Textbook/MahoGirls/Words.hs +151/−0
- src/ACME/PreCure/Textbook/MaxHeart.hs +6/−0
- src/ACME/PreCure/Textbook/MaxHeart/Types.hs +66/−0
- src/ACME/PreCure/Textbook/MaxHeart/Words.hs +33/−0
- src/ACME/PreCure/Textbook/Movie.hs +6/−0
- src/ACME/PreCure/Textbook/Movie/Types.hs +29/−0
- src/ACME/PreCure/Textbook/Movie/Words.hs +15/−0
- src/ACME/PreCure/Textbook/Smile.hs +6/−0
- src/ACME/PreCure/Textbook/Smile/Types.hs +95/−0
- src/ACME/PreCure/Textbook/Smile/Words.hs +92/−0
- src/ACME/PreCure/Textbook/SplashStar.hs +6/−0
- src/ACME/PreCure/Textbook/SplashStar/Types.hs +63/−0
- src/ACME/PreCure/Textbook/SplashStar/Words.hs +56/−0
- src/ACME/PreCure/Textbook/Suite.hs +6/−0
- src/ACME/PreCure/Textbook/Suite/Types.hs +85/−0
- src/ACME/PreCure/Textbook/Suite/Words.hs +119/−0
- src/ACME/PreCure/Textbook/Yes5.hs +6/−0
- src/ACME/PreCure/Textbook/Yes5/Types.hs +77/−0
- src/ACME/PreCure/Textbook/Yes5/Words.hs +73/−0
- src/ACME/PreCure/Textbook/Yes5GoGo.hs +6/−0
- src/ACME/PreCure/Textbook/Yes5GoGo/Types.hs +70/−0
- src/ACME/PreCure/Textbook/Yes5GoGo/Words.hs +56/−0
- src/ACME/PreCure/Types.hs +39/−0
- src/ACME/PreCure/Types/TH.hs +84/−0
- test/ACME/PreCureSpec.hs +70/−0
- test/Spec.hs +1/−0
- typesafe-precure.cabal +102/−0
+ LICENSE view
@@ -0,0 +1,30 @@+Copyright Yuji Yamamoto (c) 2016++All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions are met:++ * Redistributions of source code must retain the above copyright+ notice, this list of conditions and the following disclaimer.++ * Redistributions in binary form must reproduce the above+ copyright notice, this list of conditions and the following+ disclaimer in the documentation and/or other materials provided+ with the distribution.++ * Neither the name of Yuji Yamamoto nor the names of other+ contributors may be used to endorse or promote products derived+ from this software without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ src/ACME/PreCure.hs view
@@ -0,0 +1,14 @@+module ACME.PreCure+ ( module P+ , PreCureMonad+ ) where+++import qualified ACME.PreCure.Monad as M+import ACME.PreCure.Monad as P hiding (PreCureMonad)+import ACME.PreCure.Types as P+import ACME.PreCure.Textbook as P+++-- To hide Monad.Skeleton when using on GHCi+type PreCureMonad = M.PreCureMonad
+ src/ACME/PreCure/Monad.hs view
@@ -0,0 +1,129 @@+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE GADTs #-}++module ACME.PreCure.Monad+ ( PreCureMonad+ , EpisodeConfig(lineIntervalMicroSec)+ , defaultEpisodeConfig+ , speak+ , say+ , runPreCureMonad+ , composeEpisode+ , printEpisode+ , printEpisodeWith+ , hPrintEpisode+ , hPrintEpisodeWith+ , transform+ , purify+ , purifyWithoutItem+ ) where+++import qualified Control.Arrow as Arrow+import qualified Control.Concurrent as Concurrent+import qualified Control.Monad as Monad+import Control.Monad.Skeleton+ ( Skeleton+ , MonadView((:>>=), Return)+ , bone+ , debone+ )+import qualified Data.DList as DList+import Data.Monoid ((<>))+import qualified System.IO as IO++import ACME.PreCure.Types+++data PreCureMonadBase x where+ Speak :: [String] -> PreCureMonadBase ()+++type PreCureMonad = Skeleton PreCureMonadBase+++newtype EpisodeConfig =+ EpisodeConfig+ { lineIntervalMicroSec :: Int }+++defaultEpisodeConfig :: EpisodeConfig+defaultEpisodeConfig =+ EpisodeConfig $ 1 * 1000 * 1000+++speak :: [String] -> PreCureMonad ()+speak =+ bone . Speak+++say :: String -> PreCureMonad ()+say =+ speak . (:[])+++composeEpisode :: PreCureMonad a -> [String]+composeEpisode =+ snd . runPreCureMonad+++-- TODO: Write test+runPreCureMonad :: PreCureMonad a -> (a, [String])+runPreCureMonad =+ Arrow.second DList.toList . runPreCureMonadD+++runPreCureMonadD :: PreCureMonad a -> (a, DList.DList String)+runPreCureMonadD a =+ case debone a of+ Speak ss :>>= k ->+ let (x, ss') = runPreCureMonadD $ k ()+ in+ (x, DList.fromList ss <> ss')+ Return x -> (x, DList.empty)+++printEpisode :: PreCureMonad a -> IO ()+printEpisode =+ printEpisodeWith defaultEpisodeConfig+++hPrintEpisode :: IO.Handle -> PreCureMonad a -> IO ()+hPrintEpisode =+ flip hPrintEpisodeWith defaultEpisodeConfig+++printEpisodeWith :: EpisodeConfig -> PreCureMonad a -> IO ()+printEpisodeWith =+ hPrintEpisodeWith IO.stdout+++hPrintEpisodeWith :: IO.Handle -> EpisodeConfig -> PreCureMonad a -> IO ()+hPrintEpisodeWith h cfg a = do+ let interval = lineIntervalMicroSec cfg+ Monad.forM_ (composeEpisode a) $ \s -> do+ IO.hPutStrLn h s + IO.hFlush h+ Concurrent.threadDelay interval+++transform+ :: (Transformation g' i')+ => g' -> i' -> (Style g' i' -> PreCureMonad x) -> PreCureMonad x+transform g i a = do+ speak $ transformationSpeech g i+ a $ transformedStyle g i+++purify+ :: (Purification p' i')+ => p' -> i' -> PreCureMonad ()+purify p =+ speak . purificationSpeech p+++purifyWithoutItem+ :: (NonItemPurification p')+ => p' -> PreCureMonad ()+purifyWithoutItem =+ speak . nonItemPurificationSpeech
+ src/ACME/PreCure/Textbook.hs view
@@ -0,0 +1,18 @@+module ACME.PreCure.Textbook+ ( module T+ ) where+++import ACME.PreCure.Textbook.First as T+import ACME.PreCure.Textbook.MaxHeart as T+import ACME.PreCure.Textbook.SplashStar as T+import ACME.PreCure.Textbook.Yes5 as T+import ACME.PreCure.Textbook.Yes5GoGo as T+import ACME.PreCure.Textbook.Fresh as T+import ACME.PreCure.Textbook.HeartCatch as T+import ACME.PreCure.Textbook.Suite as T+import ACME.PreCure.Textbook.Smile as T+import ACME.PreCure.Textbook.Dokidoki as T+import ACME.PreCure.Textbook.HappinessCharge as T+import ACME.PreCure.Textbook.GoPrincess as T+import ACME.PreCure.Textbook.MahoGirls as T
+ src/ACME/PreCure/Textbook/Dokidoki.hs view
@@ -0,0 +1,6 @@+module ACME.PreCure.Textbook.Dokidoki+ ( module D+ ) where+++import ACME.PreCure.Textbook.Dokidoki.Types as D
+ src/ACME/PreCure/Textbook/Dokidoki/Types.hs view
@@ -0,0 +1,96 @@+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module ACME.PreCure.Textbook.Dokidoki.Types where+++import ACME.PreCure.Textbook.Dokidoki.Words+import ACME.PreCure.Types.TH+++data Mana = Mana deriving (Eq, Show)+data Rikka = Rikka deriving (Eq, Show)+data Alice = Alice deriving (Eq, Show)+data Makoto = Makoto deriving (Eq, Show)+data Aguri = Aguri deriving (Eq, Show)++girlInstance [t| Mana |] girlName_Mana+girlInstance [t| Rikka |] girlName_Rikka+girlInstance [t| Alice |] girlName_Alice+girlInstance [t| Makoto |] girlName_Makoto+girlInstance [t| Aguri |] girlName_Aguri++data CureHeart = CureHeart deriving (Eq, Show)+data CureDiamond = CureDiamond deriving (Eq, Show)+data CureRosetta = CureRosetta deriving (Eq, Show)+data CureSword = CureSword deriving (Eq, Show)+data CureAce = CureAce deriving (Eq, Show)++data LovelyCommune_Sharuru cl = LovelyCommune_Sharuru cl deriving (Eq, Show)+data LovelyCommune_Raquel cl = LovelyCommune_Raquel cl deriving (Eq, Show)+data LovelyCommune_Lance cl = LovelyCommune_Lance cl deriving (Eq, Show)+data LovelyCommune_Davi cl = LovelyCommune_Davi cl deriving (Eq, Show)+data LoveEyesPalette cl = LoveEyesPalette cl deriving (Eq, Show)++-- TODO: Define each distinct cure loveads type?+data CureLoveads = CureLoveads deriving (Eq, Show)++data LoveKissRouge = LoveKissRouge deriving (Eq, Show)++data MagicalLovelyHarp cl = MagicalLovelyHarp cl deriving (Eq, Show)++transformedInstanceDefault [t| CureHeart |] cureName_Heart introducesHerselfAs_Heart+transformedInstanceDefault [t| CureDiamond |] cureName_Diamond introducesHerselfAs_Diamond+transformedInstanceDefault [t| CureRosetta |] cureName_Rosetta introducesHerselfAs_Rosetta+transformedInstanceDefault [t| CureSword |] cureName_Sword introducesHerselfAs_Sword+transformedInstanceDefault [t| CureAce |] cureName_Ace introducesHerselfAs_Ace++transformedGroupInstanceDefault+ [t| (CureHeart, CureDiamond, CureRosetta, CureSword, CureAce) |]+ groupName_Dokidoki++transformationInstance [t| Mana |] [t| LovelyCommune_Sharuru CureLoveads |] [t| CureHeart |] [| CureHeart |] transformationSpeech_Heart+transformationInstance [t| Rikka |] [t| LovelyCommune_Raquel CureLoveads |] [t| CureDiamond |] [| CureDiamond |] transformationSpeech_Diamond+transformationInstance [t| Alice |] [t| LovelyCommune_Lance CureLoveads |] [t| CureRosetta |] [| CureRosetta |] transformationSpeech_Rosetta+transformationInstance [t| Makoto |] [t| LovelyCommune_Davi CureLoveads |] [t| CureSword |] [| CureSword |] transformationSpeech_Sword+transformationInstance [t| Aguri |] [t| LoveEyesPalette CureLoveads |] [t| CureAce |] [| CureAce |] transformationSpeech_Ace++transformationInstance+ [t| (Mana, Rikka, Alice, Makoto) |]+ [t|+ ( LovelyCommune_Sharuru CureLoveads+ , LovelyCommune_Raquel CureLoveads+ , LovelyCommune_Lance CureLoveads+ , LovelyCommune_Davi CureLoveads+ )+ |]+ [t| (CureHeart, CureDiamond, CureRosetta, CureSword) |]+ [| (CureHeart, CureDiamond, CureRosetta, CureSword) |]+ transformationSpeech_Dokidoki_Heart_Diamond_Rosetta_Sword++transformationInstance+ [t| (Mana, Rikka, Alice, Makoto, Aguri) |]+ [t|+ ( LovelyCommune_Sharuru CureLoveads+ , LovelyCommune_Raquel CureLoveads+ , LovelyCommune_Lance CureLoveads+ , LovelyCommune_Davi CureLoveads+ , LoveEyesPalette CureLoveads+ )+ |]+ [t| (CureHeart, CureDiamond, CureRosetta, CureSword, CureAce) |]+ [| (CureHeart, CureDiamond, CureRosetta, CureSword, CureAce) |]+ transformationSpeech_Dokidoki++purificationInstance [t| CureHeart |] [t| LovelyCommune_Sharuru CureLoveads |] purificationSpeech_Heart+purificationInstance [t| CureDiamond |] [t| LovelyCommune_Raquel CureLoveads |] purificationSpeech_Diamond+purificationInstance [t| CureRosetta |] [t| LovelyCommune_Lance CureLoveads |] purificationSpeech_Rosetta+purificationInstance [t| CureSword |] [t| LovelyCommune_Davi CureLoveads |] purificationSpeech_Sword+purificationInstance [t| CureAce |] [t| LoveKissRouge |] purificationSpeech_Ace++purificationInstance+ [t| (CureHeart, CureDiamond, CureRosetta, CureSword, CureAce) |]+ [t| MagicalLovelyHarp CureLoveads |]+ purificationSpeech_Dokidoki
+ src/ACME/PreCure/Textbook/Dokidoki/Words.hs view
@@ -0,0 +1,82 @@+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}++module ACME.PreCure.Textbook.Dokidoki.Words where+++groupName_Dokidoki = "ドキドキ!プリキュア"++girlName_Mana = "相田マナ"+girlName_Rikka = "菱川六花"+girlName_Alice = "四葉ありす"+girlName_Makoto = "剣崎真琴"+girlName_Aguri = "円亜久里"++cureName_Heart = "キュアハート"+cureName_Diamond = "キュアダイヤモンド"+cureName_Rosetta = "キュアロゼッタ"+cureName_Sword = "キュアソード"+cureName_Ace = "キュアエース"++introducesHerselfAs_Heart = "みなぎる愛! キュアハート!"+introducesHerselfAs_Diamond = "英知の光! キュアダイヤモンド!"+introducesHerselfAs_Rosetta = "ひだまりポカポカ、キュアロゼッタ!"+introducesHerselfAs_Sword = "勇気の刃! キュアソード!"+introducesHerselfAs_Ace = "愛の切り札! キュアエース!"++loveLink = ["プリキュア!ラブリンク!", "(L! O! V! E!)"]+dressUp = ["プリキュアドレスアップ!" , "(キュピラッパー!)"]++-- https://www.youtube.com/watch?v=aAQDqrN_EZI+transformationSpeech_Heart =+ ["(シャールルーン!)"] ++ loveLink ++ [introducesHerselfAs_Heart, "愛を無くした悲しいジコチューさん、このキュアハートが あなたのドキドキ 取り戻してみせる!"]+-- https://www.youtube.com/watch?v=Y8zh7aYhR5Q+transformationSpeech_Diamond =+ ["(ラケル!)"] ++ loveLink ++ [introducesHerselfAs_Diamond, "人の思いを踏みにじるなんて許せない、このキュアダイヤモンドが あなたの頭を冷やしてあげる!"]+-- https://www.youtube.com/watch?v=ToAhnZ3pVu4+transformationSpeech_Rosetta =+ ["(ラーンスー!)"] ++ loveLink ++ [introducesHerselfAs_Rosetta, "世界を制するのは愛だけです、さぁ、あなたも私と 愛を育んでくださいな"]+-- https://www.youtube.com/watch?v=weIHLwev5ZI+transformationSpeech_Sword =+ ["(ダビィー!)"] ++ loveLink ++ [introducesHerselfAs_Sword, "このキュアソードが 愛の剣で、あなたの野望を断ち切ってみせる!"]+-- https://www.youtube.com/watch?v=OxJI0yUR_GI+transformationSpeech_Ace =+ dressUp +++ [ introducesHerselfAs_Ace+ , "美しさは正義の証し!"+ , "ウインク一つで、あなたのハートを射抜いて差し上げますわ!"+ ]++-- https://www.youtube.com/watch?v=DD8ylHEydBQ+transformationSpeech_Dokidoki_Heart_Diamond_Rosetta_Sword =+ ["(シャールルーン!)"] ++ loveLink +++ [ introducesHerselfAs_Heart+ , introducesHerselfAs_Diamond+ , introducesHerselfAs_Rosetta+ , introducesHerselfAs_Sword+ , "響け愛の鼓動!ドキドキプリキュア!"+ ]++-- https://www.youtube.com/watch?v=qtVFBUNNfo4&list=PLz2Gy-e060c4rfoLomOWf9foSxXUGTJer&index=11+transformationSpeech_Dokidoki =+ ["(シャールルーン!)"] ++ loveLink ++ dressUp +++ [ introducesHerselfAs_Heart+ , introducesHerselfAs_Diamond+ , introducesHerselfAs_Rosetta+ , introducesHerselfAs_Sword+ , introducesHerselfAs_Ace+ , "響け愛の鼓動!ドキドキプリキュア!"+ ]++-- https://www.youtube.com/watch?v=9V17voMJ9vg+purificationSpeech_Heart = ["あなたに届け!マイ・スイート・ハート!"]+purificationSpeech_Diamond = ["煌めきなさい!トゥインクル・ダイヤモンド!"]+purificationSpeech_Rosetta = ["カッチカチの!ロゼッタ・ウォール!"]+purificationSpeech_Sword = ["閃け!ホーリー・ソード!"]+-- https://www.youtube.com/watch?v=1BHlgN2abMk+purificationSpeech_Ace = ["彩れ!ラブ・キッス・ルージュ!", "ときめきなさい!エースショット!", "ばきゅ〜ん!!"]++-- https://www.youtube.com/watch?v=1dcf6X3h13o+purificationSpeech_Dokidoki =+ [ "(キュピラッパー!)"+ , "プリキュア!ロイヤル・ラブリー・ストレート・フラッシュ!"+ ]
+ src/ACME/PreCure/Textbook/First.hs view
@@ -0,0 +1,6 @@+module ACME.PreCure.Textbook.First+ ( module F+ ) where+++import ACME.PreCure.Textbook.First.Types as F
+ src/ACME/PreCure/Textbook/First/Types.hs view
@@ -0,0 +1,47 @@+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module ACME.PreCure.Textbook.First.Types where++import ACME.PreCure.Textbook.First.Words+import ACME.PreCure.Types.TH+++data Nagisa = Nagisa deriving (Eq, Show)+data Honoka = Honoka deriving (Eq, Show)++$(girlInstance [t| Nagisa |] girlName_Nagisa)+$(girlInstance [t| Honoka |] girlName_Honoka)++data CureBlack = CureBlack deriving (Eq, Show)+data CureWhite = CureWhite deriving (Eq, Show)++data CardCommune_Mepple = CardCommune_Mepple deriving (Eq, Show)+data CardCommune_Mipple = CardCommune_Mipple deriving (Eq, Show)++data RainbowBrace = RainbowBrace deriving (Eq, Show)++transformedInstanceDefault [t| CureBlack |] cureName_Black introducesHerselfAs_Black+transformedInstanceDefault [t| CureWhite |] cureName_White introducesHerselfAs_White++transformedGroupInstanceDefault+ [t| (CureBlack, CureWhite) |]+ groupName_First++transformationInstance+ [t| (Nagisa, Honoka) |]+ [t| (CardCommune_Mepple, CardCommune_Mipple) |]+ [t| (CureBlack, CureWhite) |]+ [| (CureBlack, CureWhite) |]+ transformationSpeech_Black_White++nonItemPurificationInstance+ [t| (CureBlack, CureWhite) |]+ purificationSpeech_Black_White++purificationInstance+ [t| (CureBlack, CureWhite) |]+ [t| RainbowBrace |]+ purificationSpeech_Black_White_RainbowStorm
+ src/ACME/PreCure/Textbook/First/Words.hs view
@@ -0,0 +1,41 @@+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}++module ACME.PreCure.Textbook.First.Words where+++groupName_First = "ふたりはプリキュア"++girlName_Nagisa = "美墨なぎさ"+girlName_Honoka = "雪城ほのか"++cureName_Black = "キュアブラック"+cureName_White = "キュアホワイト"++introducesHerselfAs_Black = "光の使者、キュアブラック!" +introducesHerselfAs_White = "光の使者、キュアホワイト!" +++transformationSpeech_Black_White =+ [ "デュアル・オーロラ・ウェイブ!!"+ , introducesHerselfAs_Black+ , introducesHerselfAs_White+ , "ふたりはプリキュア!"+ , "闇の力のしもべ達よ!"+ , "とっととお家に帰りなさい!"+ ]+++purificationSpeech_Black_White =+ [ "ブラックサンダー!"+ , "ホワイトサンダー!"+ , "プリキュアの美しき魂が!"+ , "邪悪な心を打ち砕く!"+ , "プリキュア・マーブル・スクリュー!!"+ ]++-- https://www.youtube.com/watch?v=jTaon2204i4+purificationSpeech_Black_White_RainbowStorm =+ [ "希望の力よ!光の意思よ!"+ , "未来に向かって、突き進め!"+ , "プリキュア・レインボー・ストーム!!"+ ]
+ src/ACME/PreCure/Textbook/Fresh.hs view
@@ -0,0 +1,6 @@+module ACME.PreCure.Textbook.Fresh+ ( module F+ ) where+++import ACME.PreCure.Textbook.Fresh.Types as F
+ src/ACME/PreCure/Textbook/Fresh/Types.hs view
@@ -0,0 +1,74 @@+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module ACME.PreCure.Textbook.Fresh.Types where++import Data.List+ ( intercalate+ )+++import ACME.PreCure.Textbook.Fresh.Words+import ACME.PreCure.Types.TH+++data Love = Love deriving (Eq, Show)+data Miki = Miki deriving (Eq, Show)+data Inori = Inori deriving (Eq, Show)+data Setsuna = Setsuna deriving (Eq, Show)++girlInstance [t| Love |] girlName_Love+girlInstance [t| Miki |] girlName_Miki+girlInstance [t| Inori |] girlName_Inori+girlInstance [t| Setsuna |] girlName_Setsuna++data CurePeach = CurePeach deriving (Eq, Show)+data CureBerry = CureBerry deriving (Eq, Show)+data CurePine = CurePine deriving (Eq, Show)+data CurePassion = CurePassion deriving (Eq, Show)++data Linkrun = Linkrun deriving (Eq, Show)++data CureStickPeachRod = CureStickPeachRod deriving (Eq, Show)+data CureStickBerrySword = CureStickBerrySword deriving (Eq, Show)+data CureStickPineFlute = CureStickPineFlute deriving (Eq, Show)+data PassionHarp = PassionHarp deriving (Eq, Show)++data CloverBox = CloverBox deriving (Eq, Show)++transformedInstanceDefault [t| CurePeach |] cureName_Peach $ intercalate "\n" introducesHerselfAs_Peach+transformedInstanceDefault [t| CureBerry |] cureName_Berry $ intercalate "\n" introducesHerselfAs_Berry+transformedInstanceDefault [t| CurePine |] cureName_Pine $ intercalate "\n" introducesHerselfAs_Pine+transformedInstanceDefault [t| CurePassion |] cureName_Passion $ intercalate "\n" introducesHerselfAs_Passion++transformedGroupInstanceDefault+ [t| (CurePeach, CureBerry, CurePine, CurePassion) |]+ groupName_Fresh++transformationInstance [t| Love |] [t| Linkrun |] [t| CurePeach |] [| CurePeach |] transformationSpeech_Peach+transformationInstance [t| Miki |] [t| Linkrun |] [t| CureBerry |] [| CureBerry |] transformationSpeech_Berry+transformationInstance [t| Inori |] [t| Linkrun |] [t| CurePine |] [| CurePine |] transformationSpeech_Pine+transformationInstance [t| Setsuna |] [t| Linkrun |] [t| CurePassion |] [| CurePassion |] transformationSpeech_Passion++transformationInstance+ [t| (Love, Miki, Inori, Setsuna) |]+ [t| Linkrun |]+ [t| (CurePeach, CureBerry, CurePine, CurePassion) |]+ [| (CurePeach, CureBerry, CurePine, CurePassion) |]+ transformationSpeech_Fresh++nonItemPurificationInstance [t| CurePeach |] purificationSpeech_Peach+nonItemPurificationInstance [t| CureBerry |] purificationSpeech_Berry+nonItemPurificationInstance [t| CurePine |] purificationSpeech_Pine++purificationInstance [t| CurePeach |] [t| CureStickPeachRod |] purificationSpeech_Peach_Fresh+purificationInstance [t| CureBerry |] [t| CureStickBerrySword |] purificationSpeech_Berry_Fresh+purificationInstance [t| CurePine |] [t| CureStickPineFlute |] purificationSpeech_Pine_Fresh+purificationInstance [t| CurePassion |] [t| PassionHarp |] purificationSpeech_Passion++purificationInstance+ [t| (CurePeach, CureBerry, CurePine, CurePassion) |]+ [t| CloverBox |]+ purificationSpeech_Fresh
+ src/ACME/PreCure/Textbook/Fresh/Words.hs view
@@ -0,0 +1,86 @@+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}++module ACME.PreCure.Textbook.Fresh.Words where+++groupName_Fresh = "フレッシュプリキュア!"++girlName_Love = "桃園ラブ"+girlName_Miki = "蒼乃美希"+girlName_Inori = "山吹祈里"+girlName_Setsuna = "東せつな"++cureName_Peach = "キュアピーチ"+cureName_Berry = "キュアベリー"+cureName_Pine = "キュアパイン"+cureName_Passion = "キュアパッション"++introducesHerselfAs_Peach = ["ピンクのハートは愛ある印!", "もぎたてフレッシュ、キュアピーチ!"]+introducesHerselfAs_Berry = ["ブルーのハートは希望の印!", "つみたてフレッシュ、キュアベリー!"]+introducesHerselfAs_Pine = ["イエローハートは祈りの印!", "とれたてフレッシュ、キュアパイン!"]+introducesHerselfAs_Passion = ["真っ赤なハートは幸せの証!", "うれたてフレッシュ、キュアパッション!"]++beatUp = "チェインジ!プリキュア・ビートアップ!"++-- https://www.youtube.com/watch?v=IljAwH4jzFU+-- https://www.youtube.com/watch?v=XRAQPWccIZk+transformationSpeech_Peach = [beatUp] ++ introducesHerselfAs_Peach+transformationSpeech_Berry = [beatUp] ++ introducesHerselfAs_Berry+transformationSpeech_Pine = [beatUp] ++ introducesHerselfAs_Pine+transformationSpeech_Passion = [beatUp] ++ introducesHerselfAs_Passion++-- https://www.youtube.com/watch?v=t8sKE4SrEkU+transformationSpeech_Fresh =+ [beatUp]+ ++ introducesHerselfAs_Peach+ ++ introducesHerselfAs_Berry+ ++ introducesHerselfAs_Pine+ ++ introducesHerselfAs_Passion+ ++ ["レッツ・プリキュア!"]++-- https://www.youtube.com/watch?v=m0vnBI60VZ4+purificationSpeech_Peach = ["悪いの悪いの飛んでいけ!", "プリキュア!ラブ・サンシャイン!"]+purificationSpeech_Berry = ["悪いの悪いの飛んでいけ!", "プリキュア!エスポワール・シャワー!"]+purificationSpeech_Pine = ["悪いの悪いの飛んでいけ!", "プリキュア!ヒーリング・プレアー!"]++purificationSpeech_Peach_Fresh =+ [ "届け!愛のメロディ!"+ , "キュアスティック・ピーチロッド!"+ , "悪いの悪いの飛んでいけ!"+ , "プリキュア!ラブサンシャイン・フレッシュ!"+ ]+purificationSpeech_Berry_Fresh =+ [ "響け!希望のリズム!"+ , "キュアスティック・ベリーソード!"+ , "悪いの悪いの飛んでいけ!"+ , "プリキュア!エスポワールシャワー・フレッシュ!"+ ]++-- https://www.youtube.com/watch?v=ILDYtMvlW9g+purificationSpeech_Pine_Fresh =+ [ "癒せ!祈りのハーモニー!"+ , "キュアスティック・パインフルート!"+ , "悪いの悪いの飛んでいけ!"+ , "プリキュア!ヒーリングプレアー・フレッシュ!"+ ]++-- https://www.youtube.com/watch?v=ec990NE_ooU+purificationSpeech_Passion =+ [ "歌え!幸せのラプソディ、パッションハープ!"+ , "吹き荒れよ、幸せの嵐!"+ , "プリキュア!ハピネス・ハリケーン!"+ ]++-- https://www.youtube.com/watch?v=y8_ogPmNCV8+purificationSpeech_Fresh =+ [ "クローバーボックスよ、私達に力を貸して!"+ , "プリキュア・フォーメーション!レディー・ゴー!"+ , "ハピネスリーフ、セット!"+ , "パイン!"+ , "プラスワン、プレアーリーフ!"+ , "ベリー!"+ , "プラスワン、エスポワールリーフ!"+ , "ピーチ!"+ , "プラスワン、ラブリーリーフ!"+ , "ラッキークローバー・グランドフィナーレ!"+ ]
+ src/ACME/PreCure/Textbook/GoPrincess.hs view
@@ -0,0 +1,6 @@+module ACME.PreCure.Textbook.GoPrincess+ ( module G+ ) where+++import ACME.PreCure.Textbook.GoPrincess.Types as G
+ src/ACME/PreCure/Textbook/GoPrincess/Types.hs view
@@ -0,0 +1,145 @@+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module ACME.PreCure.Textbook.GoPrincess.Types where+++import ACME.PreCure.Textbook.GoPrincess.Words+import ACME.PreCure.Types.TH+++data Haruka = Haruka deriving (Eq, Show)+data Minami = Minami deriving (Eq, Show)+data Kirara = Kirara deriving (Eq, Show)+data Towa = Towa deriving (Eq, Show)++girlInstance [t| Haruka |] girlName_Haruka+girlInstance [t| Minami |] girlName_Minami+girlInstance [t| Kirara |] girlName_Kirara+girlInstance [t| Towa |] girlName_Towa++data CureFlora = CureFlora deriving (Eq, Show)+data CureMermaid = CureMermaid deriving (Eq, Show)+data CureTwinkle = CureTwinkle deriving (Eq, Show)+data CureScarlet = CureScarlet deriving (Eq, Show)++data CureFlora_ModeElegant = CureFlora_ModeElegant deriving (Eq, Show)+data CureMermaid_ModeElegant = CureMermaid_ModeElegant deriving (Eq, Show)+data CureTwinkle_ModeElegant = CureTwinkle_ModeElegant deriving (Eq, Show)+data CureScarlet_ModeElegant = CureScarlet_ModeElegant deriving (Eq, Show)++data CureFlora_ModeElegantRoyal = CureFlora_ModeElegantRoyal deriving (Eq, Show)+data CureMermaid_ModeElegantRoyal = CureMermaid_ModeElegantRoyal deriving (Eq, Show)+data CureTwinkle_ModeElegantRoyal = CureTwinkle_ModeElegantRoyal deriving (Eq, Show)+data CureScarlet_ModeElegantRoyal = CureScarlet_ModeElegantRoyal deriving (Eq, Show)++data PrincessPerfume dk = PrincessPerfume dk deriving (Eq, Show)+data CrystalPrincessRod dk = CrystalPrincessRod dk deriving (Eq, Show)+data ScarletViolin dk = ScarletViolin dk deriving (Eq, Show)+data MusicPrincessPalace dk = MusicPrincessPalace dk deriving (Eq, Show)+++-- http://prettycure.wikia.com/wiki/Dress_Up_Key+data DressUpKey_Flora = DressUpKey_Flora deriving (Eq, Show)+data DressUpKey_Rose = DressUpKey_Rose deriving (Eq, Show)+data DressUpKey_Lily = DressUpKey_Lily deriving (Eq, Show)+data DressUpKey_Sakura = DressUpKey_Sakura deriving (Eq, Show)++data DressUpKey_Mermaid = DressUpKey_Mermaid deriving (Eq, Show)+data DressUpKey_Ice = DressUpKey_Ice deriving (Eq, Show)+data DressUpKey_Bubble = DressUpKey_Bubble deriving (Eq, Show)+data DressUpKey_Sango = DressUpKey_Sango deriving (Eq, Show)++data DressUpKey_Twinkle = DressUpKey_Twinkle deriving (Eq, Show)+data DressUpKey_Luna = DressUpKey_Luna deriving (Eq, Show)+data DressUpKey_ShootingStar = DressUpKey_ShootingStar deriving (Eq, Show)+data DressUpKey_Ginga = DressUpKey_Ginga deriving (Eq, Show)++data DressUpKey_Scarlet = DressUpKey_Scarlet deriving (Eq, Show)+data DressUpKey_Phoenix = DressUpKey_Phoenix deriving (Eq, Show)+data DressUpKey_Hanabi = DressUpKey_Hanabi deriving (Eq, Show)+data DressUpKey_Sun = DressUpKey_Sun deriving (Eq, Show)++data RoyalDressUpKey = RoyalDressUpKey deriving (Eq, Show)++transformedInstanceDefault [t| CureFlora |] cureName_Flora introducesHerselfAs_Flora+transformedInstanceDefault [t| CureMermaid |] cureName_Mermaid introducesHerselfAs_Mermaid+transformedInstanceDefault [t| CureTwinkle |] cureName_Twinkle introducesHerselfAs_Twinkle+transformedInstanceDefault [t| CureScarlet |] cureName_Scarlet introducesHerselfAs_Scarlet++transformedInstance [t| CureFlora_ModeElegant |] cureName_Flora introducesHerselfAs_Flora variation_ModeElegant+transformedInstance [t| CureMermaid_ModeElegant |] cureName_Mermaid introducesHerselfAs_Mermaid variation_ModeElegant+transformedInstance [t| CureTwinkle_ModeElegant |] cureName_Twinkle introducesHerselfAs_Twinkle variation_ModeElegant+transformedInstance [t| CureScarlet_ModeElegant |] cureName_Scarlet introducesHerselfAs_Scarlet variation_ModeElegant++transformedInstance [t| CureFlora_ModeElegantRoyal |] cureName_Flora introducesHerselfAs_Flora variation_ModeElegantRoyal+transformedInstance [t| CureMermaid_ModeElegantRoyal |] cureName_Mermaid introducesHerselfAs_Mermaid variation_ModeElegantRoyal+transformedInstance [t| CureTwinkle_ModeElegantRoyal |] cureName_Twinkle introducesHerselfAs_Twinkle variation_ModeElegantRoyal+transformedInstance [t| CureScarlet_ModeElegantRoyal |] cureName_Scarlet introducesHerselfAs_Scarlet variation_ModeElegantRoyal++transformedGroupInstanceDefault+ [t| (CureFlora, CureMermaid, CureTwinkle, CureScarlet) |]+ groupName_GoPrincess++transformedGroupInstance+ [t| (CureFlora_ModeElegantRoyal, CureMermaid_ModeElegantRoyal, CureTwinkle_ModeElegantRoyal, CureScarlet_ModeElegantRoyal) |]+ groupName_GoPrincess+ variation_ModeElegantRoyal++transformationInstance [t| Haruka |] [t| PrincessPerfume DressUpKey_Flora |] [t| CureFlora |] [| CureFlora |] transformationSpeech_Flora+transformationInstance [t| Minami |] [t| PrincessPerfume DressUpKey_Mermaid |] [t| CureMermaid |] [| CureMermaid |] transformationSpeech_Mermaid+transformationInstance [t| Kirara |] [t| PrincessPerfume DressUpKey_Twinkle |] [t| CureTwinkle |] [| CureTwinkle |] transformationSpeech_Twinkle+transformationInstance [t| Towa |] [t| PrincessPerfume DressUpKey_Scarlet |] [t| CureScarlet |] [| CureScarlet |] transformationSpeech_Scarlet++transformationInstance [t| CureFlora |] [t| PrincessPerfume DressUpKey_Flora |] [t| CureFlora_ModeElegant |] [| CureFlora_ModeElegant |] transformationSpeech_GoPrincess_ModeElegant+transformationInstance [t| CureMermaid |] [t| PrincessPerfume DressUpKey_Mermaid |] [t| CureMermaid_ModeElegant |] [| CureMermaid_ModeElegant |] transformationSpeech_GoPrincess_ModeElegant+transformationInstance [t| CureTwinkle |] [t| PrincessPerfume DressUpKey_Twinkle |] [t| CureTwinkle_ModeElegant |] [| CureTwinkle_ModeElegant |] transformationSpeech_GoPrincess_ModeElegant+transformationInstance [t| CureScarlet |] [t| PrincessPerfume DressUpKey_Phoenix |] [t| CureScarlet_ModeElegant |] [| CureScarlet_ModeElegant |] transformationSpeech_GoPrincess_ModeElegant++transformationInstance+ [t| (Haruka, Minami, Kirara) |]+ [t| (PrincessPerfume DressUpKey_Flora, PrincessPerfume DressUpKey_Mermaid, PrincessPerfume DressUpKey_Twinkle) |]+ [t| (CureFlora, CureMermaid, CureTwinkle) |]+ [| (CureFlora, CureMermaid, CureTwinkle) |]+ transformationSpeech_Flora_Mermaid_Twinkle++transformationInstance+ [t| (Haruka, Minami, Kirara, Towa) |]+ [t| (PrincessPerfume DressUpKey_Flora, PrincessPerfume DressUpKey_Mermaid, PrincessPerfume DressUpKey_Twinkle, PrincessPerfume DressUpKey_Scarlet) |]+ [t| (CureFlora, CureMermaid, CureTwinkle, CureScarlet) |]+ [| (CureFlora, CureMermaid, CureTwinkle, CureScarlet) |]+ transformationSpeech_GoPrincess++transformationInstance+ [t| (CureFlora, CureMermaid, CureTwinkle, CureScarlet) |]+ [t| (MusicPrincessPalace RoyalDressUpKey) |]+ [t| (CureFlora_ModeElegantRoyal, CureMermaid_ModeElegantRoyal, CureTwinkle_ModeElegantRoyal, CureScarlet_ModeElegantRoyal) |]+ [| (CureFlora_ModeElegantRoyal, CureMermaid_ModeElegantRoyal, CureTwinkle_ModeElegantRoyal, CureScarlet_ModeElegantRoyal) |]+ transformationSpeech_GoPrincess_ModeElegantRoyal++nonItemPurificationInstance [t| CureFlora_ModeElegant |] purificationSpeech_Flora+purificationInstance [t| CureFlora |] [t| CrystalPrincessRod DressUpKey_Rose |] purificationSpeech_Flora_Rose+purificationInstance [t| CureFlora |] [t| CrystalPrincessRod DressUpKey_Lily |] purificationSpeech_Flora_Lily+purificationInstance [t| CureFlora |] [t| MusicPrincessPalace DressUpKey_Sakura |] purificationSpeech_Flora_Sakura++nonItemPurificationInstance [t| CureMermaid_ModeElegant |] purificationSpeech_Mermaid+purificationInstance [t| CureMermaid |] [t| CrystalPrincessRod DressUpKey_Ice |] purificationSpeech_Mermaid_Ice+purificationInstance [t| CureMermaid |] [t| CrystalPrincessRod DressUpKey_Bubble |] purificationSpeech_Mermaid_Bubble+purificationInstance [t| CureMermaid |] [t| MusicPrincessPalace DressUpKey_Sango |] purificationSpeech_Mermaid_Sango++nonItemPurificationInstance [t| CureTwinkle_ModeElegant |] purificationSpeech_Twinkle+purificationInstance [t| CureTwinkle |] [t| CrystalPrincessRod DressUpKey_Luna |] purificationSpeech_Twinkle_Luna+purificationInstance [t| CureTwinkle |] [t| CrystalPrincessRod DressUpKey_ShootingStar |] purificationSpeech_Twinkle_ShootingStar+purificationInstance [t| CureTwinkle |] [t| MusicPrincessPalace DressUpKey_Ginga |] purificationSpeech_Twinkle_Ginga++purificationInstance [t| CureScarlet_ModeElegant |] [t| ScarletViolin DressUpKey_Phoenix |] purificationSpeech_Scarlet_Phoenix+purificationInstance [t| CureScarlet |] [t| ScarletViolin DressUpKey_Scarlet |] purificationSpeech_Scarlet+purificationInstance [t| CureScarlet |] [t| ScarletViolin DressUpKey_Hanabi |] purificationSpeech_Scarlet_Hanabi+purificationInstance [t| CureScarlet |] [t| MusicPrincessPalace DressUpKey_Sun |] purificationSpeech_Scarlet_Sun++purificationInstance+ [t| (CureFlora_ModeElegantRoyal, CureMermaid_ModeElegantRoyal, CureTwinkle_ModeElegantRoyal, CureScarlet_ModeElegantRoyal) |]+ [t| (MusicPrincessPalace RoyalDressUpKey) |]+ purificationSpeech_GoPrincess_ModeElegantRoyal
+ src/ACME/PreCure/Textbook/GoPrincess/Words.hs view
@@ -0,0 +1,101 @@+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}++module ACME.PreCure.Textbook.GoPrincess.Words where++groupName_GoPrincess = "Go! プリンセスプリキュア!"++girlName_Haruka = "春野はるか"+girlName_Minami = "海藤みなみ"+girlName_Kirara = "天ノ川きらら"+girlName_Towa = "紅城トワ"++cureName_Flora = "キュアフローラ"+cureName_Mermaid = "キュアマーメイド"+cureName_Twinkle = "キュアトゥインクル"+cureName_Scarlet = "キュアスカーレット"++-- TODO Add more forms of Go! Princess PreCure+variation_ModeElegant = "モードエレガント"+variation_ModeElegantRoyal = "モードエレガント・ロイヤル"++introducesHerselfAs_Flora = "咲き誇る、花のプリンセス!キュアフローラ!"+introducesHerselfAs_Mermaid = "澄み渡る、海のプリンセス!キュアマーメイド!"+introducesHerselfAs_Twinkle = "きらめく星のプリンセス!キュアトゥインクル!"+introducesHerselfAs_Scarlet = "深紅の炎のプリンセス!キュアスカーレット!"++princessEngage = "プリキュア!プリンセスエンゲージ!"+okakugo = ["冷たい檻に閉ざされた夢、返していただきますわ!", "お覚悟はよろしくて?"]+-- From Ep. 23+okakugo' = ["冷たい檻に閉ざされた夢、返していただきますわ。", "お覚悟を決めなさい!"]++-- https://www.youtube.com/watch?v=L1DjtwIeQxk+transformationSpeech_Flora = [princessEngage, introducesHerselfAs_Flora] ++ okakugo+transformationSpeech_Mermaid = [princessEngage, introducesHerselfAs_Mermaid] ++ okakugo+transformationSpeech_Twinkle = [princessEngage, introducesHerselfAs_Twinkle] ++ okakugo+-- https://www.youtube.com/watch?v=AcGs-uEkqHg+transformationSpeech_Scarlet = [princessEngage, introducesHerselfAs_Scarlet] ++ okakugo'++-- https://www.youtube.com/watch?v=3CeAisvfyOw+transformationSpeech_Flora_Mermaid_Twinkle =+ [ princessEngage+ , introducesHerselfAs_Flora+ , introducesHerselfAs_Mermaid+ , introducesHerselfAs_Twinkle+ , "つよく、やさしく、美しく!"+ , "Go! プリンセスプリキュア!"+ ]++-- https://www.youtube.com/watch?v=w3iMzceJc_o+transformationSpeech_GoPrincess =+ [ princessEngage+ , introducesHerselfAs_Flora+ , introducesHerselfAs_Mermaid+ , introducesHerselfAs_Twinkle+ , introducesHerselfAs_Scarlet+ , "つよく、やさしく、美しく!"+ , "Go! プリンセスプリキュア!"+ ]++transformationSpeech_GoPrincess_ModeElegant = ["エクスチェンジ!モードエレガント!"]++-- https://www.youtube.com/watch?v=IPBZXpJBMHU+transformationSpeech_GoPrincess_ModeElegantRoyal = ["モードエレガント・ロイヤル!", "ドレスアップ・ロイヤル!"]+++-- https://www.youtube.com/watch?v=L1DjtwIeQxk+purificationSpeech_Flora = ["舞え、花よ!", "プリキュア! フローラル・トルビヨン!" , "ごきげんよう。"]+purificationSpeech_Flora_Rose = ["ローズ!", "舞え、バラよ!", "プリキュア! ローズ・トルビヨン!"]+purificationSpeech_Flora_Lily = ["リリィ!", "舞え、ユリよ!", "プリキュア! リィス・トルビヨン!"]+purificationSpeech_Flora_Sakura = ["サクラ!", "舞え、サクラよ!", "プリキュア! サクラ・トルビュランス!"]++-- https://www.youtube.com/watch?v=8lfG0iCSVPA+purificationSpeech_Mermaid = ["高鳴れ、海よ!", "プリキュア! マーメイド・リップル!", "ごきげんよう。"]+purificationSpeech_Mermaid_Ice = ["アイス!", "高鳴れ、氷よ!", "プリキュア! フローズン・リップル!"]+purificationSpeech_Mermaid_Bubble = ["バブル!", "高鳴れ、泡よ!", "プリキュア! バブル・リップル!"]+purificationSpeech_Mermaid_Sango = ["サンゴ!", "高鳴れ、珊瑚よ!", "プリキュア! コーラル・メイルシュトロム!"]++-- https://www.youtube.com/watch?v=p02w5AiO49s+purificationSpeech_Twinkle = ["キラキラ、星よ!", "プリキュア! トゥインクル・ハミング!", "ごきげんよう。"]+purificationSpeech_Twinkle_Luna = ["ルナ!", "キラキラ、月よ!", "プリキュア! フルムーン・ハミング!"]+purificationSpeech_Twinkle_ShootingStar = ["シューティングスター!", "キラキラ、流れ星よ!", "プリキュア! ミーティア・ハミング!"]+purificationSpeech_Twinkle_Ginga = ["ギンガ!", "シャランラ、銀河よ!", "プリキュア! ギャラクシー・コーラス!"]++-- https://www.youtube.com/watch?v=AcGs-uEkqHg+purificationSpeech_Scarlet_Phoenix =+ [ "スカーレット・バイオリン!フェニックス!"+ , "羽ばたけ炎の翼!"+ , "プリキュア! フェニックス・ブレイズ!"+ , "ごきげんよう。"+ ]+purificationSpeech_Scarlet = ["たぎれ、炎よ!", "プリキュア! スカーレット・フレイム!"]+purificationSpeech_Scarlet_Hanabi = ["ハナビ!", "燃えよ、炎よ!", "プリキュア! スカーレット・イリュージョン!"]+purificationSpeech_Scarlet_Sun = ["サン!", "燃えよ、炎よ!", "プリキュア! スカーレット・プロミネンス!"]++-- https://www.youtube.com/watch?v=IPBZXpJBMHU+purificationSpeech_GoPrincess_ModeElegantRoyal =+ [ "はっ!"+ , "響け!遙か彼方へ!"+ , "プリキュア! グラン・プランタン!"+ , "ブルーミング"+ , "ごきげんよう。"+ ]
+ src/ACME/PreCure/Textbook/HappinessCharge.hs view
@@ -0,0 +1,6 @@+module ACME.PreCure.Textbook.HappinessCharge+ ( module H+ ) where+++import ACME.PreCure.Textbook.HappinessCharge.Types as H
+ src/ACME/PreCure/Textbook/HappinessCharge/Types.hs view
@@ -0,0 +1,114 @@+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module ACME.PreCure.Textbook.HappinessCharge.Types where+++import ACME.PreCure.Textbook.HappinessCharge.Words+import ACME.PreCure.Types.TH+++data Megumi = Megumi deriving (Eq, Show)+data Hime = Hime deriving (Eq, Show)+data Yuko = Yuko deriving (Eq, Show)+data Iona = Iona deriving (Eq, Show)++girlInstance [t| Megumi |] girlName_Megumi+girlInstance [t| Hime |] girlName_Hime+girlInstance [t| Yuko |] girlName_Yuko+girlInstance [t| Iona |] girlName_Iona++data CureLovely = CureLovely deriving (Eq, Show)+data CurePrincess = CurePrincess deriving (Eq, Show)+data CureHoney = CureHoney deriving (Eq, Show)+data CureFortune = CureFortune deriving (Eq, Show)++data CureLovely_InnocentForm = CureLovely_InnocentForm deriving (Eq, Show)+data CurePrincess_InnocentForm = CurePrincess_InnocentForm deriving (Eq, Show)+data CureHoney_InnocentForm = CureHoney_InnocentForm deriving (Eq, Show)+data CureFortune_InnocentForm = CureFortune_InnocentForm deriving (Eq, Show)++data PreChanMirror pc = PreChanMirror pc deriving (Eq, Show)+data FortunePiano pc = FortunePiano pc deriving (Eq, Show)++-- TODO: Make more PreCards+data PreCard_Lovely = PreCard_Lovely deriving (Eq, Show)+data PreCard_Princess = PreCard_Princess deriving (Eq, Show)+data PreCard_Honey = PreCard_Honey deriving (Eq, Show)+data PreCard_Fortune = PreCard_Fortune deriving (Eq, Show)++data PreCard_Lovely_InnocentForm = PreCard_Lovely_InnocentForm deriving (Eq, Show)+data PreCard_Princess_InnocentForm = PreCard_Princess_InnocentForm deriving (Eq, Show)+data PreCard_Honey_InnocentForm = PreCard_Honey_InnocentForm deriving (Eq, Show)+data PreCard_Fortune_InnocentForm = PreCard_Fortune_InnocentForm deriving (Eq, Show)++data LovePreBrace = LovePreBrace deriving (Eq, Show)+data TripleDanceHoneyBaton = TripleDanceHoneyBaton deriving (Eq, Show)+data FortuneTambourine = FortuneTambourine deriving (Eq, Show)++data ShiningMakeDresser = ShiningMakeDresser deriving (Eq, Show)+data InnocentHarmonyMic = InnocentHarmonyMic deriving (Eq, Show)++transformedInstanceDefault [t| CureLovely |] cureName_Lovely introducesHerselfAs_Lovely+transformedInstanceDefault [t| CurePrincess |] cureName_Princess introducesHerselfAs_Princess+transformedInstanceDefault [t| CureHoney |] cureName_Honey introducesHerselfAs_Honey+transformedInstanceDefault [t| CureFortune |] cureName_Fortune introducesHerselfAs_Fortune++transformedInstance [t| CureLovely_InnocentForm |] cureName_Lovely introducesHerselfAs_Lovely variation_InnocentForm+transformedInstance [t| CurePrincess_InnocentForm |] cureName_Princess introducesHerselfAs_Princess variation_InnocentForm+transformedInstance [t| CureHoney_InnocentForm |] cureName_Honey introducesHerselfAs_Honey variation_InnocentForm+transformedInstance [t| CureFortune_InnocentForm |] cureName_Fortune introducesHerselfAs_Fortune variation_InnocentForm++transformedGroupInstanceDefault+ [t| (CureLovely, CurePrincess, CureHoney, CureFortune) |]+ groupName_HappinessCharge++transformedGroupInstance+ [t| (CureLovely_InnocentForm, CurePrincess_InnocentForm, CureHoney_InnocentForm, CureFortune_InnocentForm) |]+ groupName_HappinessCharge+ variation_InnocentForm++transformationInstance [t| Megumi |] [t| PreChanMirror PreCard_Lovely |] [t| CureLovely |] [| CureLovely |] transformationSpeech_Lovely+transformationInstance [t| Hime |] [t| PreChanMirror PreCard_Princess |] [t| CurePrincess |] [| CurePrincess |] transformationSpeech_Princess+transformationInstance [t| Yuko |] [t| PreChanMirror PreCard_Honey |] [t| CureHoney |] [| CureHoney |] transformationSpeech_Honey+transformationInstance [t| Iona |] [t| FortunePiano PreCard_Fortune |] [t| CureFortune |] [| CureFortune |] transformationSpeech_Fortune++transformationInstance+ [t| (Megumi, Hime) |]+ [t| (PreChanMirror PreCard_Lovely, PreChanMirror PreCard_Princess) |]+ [t| (CureLovely, CurePrincess) |]+ [| (CureLovely, CurePrincess) |]+ transformationSpeech_Lovely_Princess++transformationInstance+ [t| (Megumi, Hime, Yuko) |]+ [t| (PreChanMirror PreCard_Lovely, PreChanMirror PreCard_Princess, PreChanMirror PreCard_Honey) |]+ [t| (CureLovely, CurePrincess, CureHoney) |]+ [| (CureLovely, CurePrincess, CureHoney) |]+ transformationSpeech_Lovely_Princess_Honey++transformationInstance+ [t| (Megumi, Hime, Yuko, Iona) |]+ [t| (PreChanMirror PreCard_Lovely, PreChanMirror PreCard_Princess, PreChanMirror PreCard_Honey, FortunePiano PreCard_Fortune) |]+ [t| (CureLovely, CurePrincess, CureHoney, CureFortune) |]+ [| (CureLovely, CurePrincess, CureHoney, CureFortune) |]+ transformationSpeech_HappinessCharge++transformationInstance+ [t| (CureLovely, CurePrincess, CureHoney, CureFortune) |]+ [t| (PreChanMirror PreCard_Lovely_InnocentForm, PreChanMirror PreCard_Princess_InnocentForm, PreChanMirror PreCard_Honey_InnocentForm, FortunePiano PreCard_Fortune_InnocentForm) |]+ [t| (CureLovely_InnocentForm, CurePrincess_InnocentForm, CureHoney_InnocentForm, CureFortune_InnocentForm) |]+ [| (CureLovely_InnocentForm, CurePrincess_InnocentForm, CureHoney_InnocentForm, CureFortune_InnocentForm) |]+ transformationSpeech_HappinessCharge_InnocentForm++purificationInstance [t| CureLovely |] [t| LovePreBrace |] purificationSpeech_Lovely+purificationInstance [t| CurePrincess |] [t| LovePreBrace |] purificationSpeech_Princess+purificationInstance [t| CureHoney |] [t| TripleDanceHoneyBaton |] purificationSpeech_Honey+purificationInstance [t| CureFortune |] [t| FortuneTambourine |] purificationSpeech_Fortune++purificationInstance+ [t| (CureLovely_InnocentForm, CurePrincess_InnocentForm, CureHoney_InnocentForm, CureFortune_InnocentForm) |]+ [t| (ShiningMakeDresser, InnocentHarmonyMic) |]+ purificationSpeech_HappinessCharge_InnocentForm
+ src/ACME/PreCure/Textbook/HappinessCharge/Words.hs view
@@ -0,0 +1,128 @@+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}++module ACME.PreCure.Textbook.HappinessCharge.Words where++groupName_HappinessCharge = "ハピネスチャージプリキュア!"++girlName_Megumi = "愛乃めぐみ"+girlName_Hime = "白雪ひめ(ヒメルダ・ウインドウ・キュアクイーン・オブ・ザ・ブルースカイ)"+girlName_Yuko = "大森ゆうこ"+girlName_Iona = "氷川いおな"++cureName_Lovely = "キュアラブリー"+cureName_Princess = "キュアプリンセス"+cureName_Honey = "キュアハニー"+cureName_Fortune = "キュアフォーチュン"++-- TODO Add more forms of HappinessCharge PreCure+variation_InnocentForm = "イノセントフォーム"++-- https://www.youtube.com/watch?v=gcLBpRlMly8+introducesHerselfAs_Lovely = "世界に広がる、ビッグな愛! キュアラブリー!"+introducesHerselfAs_Princess = "天空に舞う、蒼き風! (ヒュッ!) キュアプリンセス!"+introducesHerselfAs_Honey = "大地に実る、命の光! キュアハニー!"+introducesHerselfAs_Fortune = "夜空に煌めく、希望の星! キュアフォーチュン!"++kawarunrun = "(かわルンルン!)"+mirrorChange = "プリキュア!くるりんミラーチェーンジ!"+mirrorChange' = "プリキュア!くるりんミラーチェンジ!"+starSymphony = "プリキュア!きらりんスターシンフォニー!"++-- https://www.youtube.com/watch?v=yVDBhXPNK5M+transformationSpeech_Lovely = [kawarunrun, mirrorChange, introducesHerselfAs_Lovely]+transformationSpeech_Princess = [kawarunrun, mirrorChange', introducesHerselfAs_Princess]+transformationSpeech_Honey = [kawarunrun, mirrorChange, introducesHerselfAs_Honey]+transformationSpeech_Fortune = [kawarunrun, starSymphony, introducesHerselfAs_Fortune]++transformationSpeech_Lovely_Princess =+ [ kawarunrun+ , mirrorChange+ , introducesHerselfAs_Lovely+ , introducesHerselfAs_Princess+ , "ハピネス注入!幸せチャージ!"+ , "ハピネスチャージプリキュア!"+ ]++-- https://www.youtube.com/watch?v=tlfGXy5Jsvw+transformationSpeech_Lovely_Princess_Honey =+ [ kawarunrun+ , mirrorChange+ , introducesHerselfAs_Lovely+ , introducesHerselfAs_Princess+ , introducesHerselfAs_Honey+ , "ハピネス注入!幸せチャージ!"+ , "ハピネスチャージプリキュア!"+ ]++-- https://www.youtube.com/watch?v=LuNix0VtC5w&list=PLz2Gy-e060c4B5aHpdkjTJOFft5nhBHdl&index=5+transformationSpeech_HappinessCharge =+ [ kawarunrun+ , mirrorChange'+ , starSymphony+ , introducesHerselfAs_Lovely+ , introducesHerselfAs_Princess+ , introducesHerselfAs_Honey+ , introducesHerselfAs_Fortune+ , "ハピネス注入!幸せチャージ!"+ , "ハピネスチャージプリキュア!"+ ]++-- https://www.youtube.com/watch?v=_nHcTw_RBJM+transformationSpeech_HappinessCharge_InnocentForm =+ [ kawarunrun+ , mirrorChange'+ , starSymphony+ , "ハピネスチャージプリキュア!イノセントフォーム!"+ ]+++-- https://www.youtube.com/watch?v=zYl0HeAGzG4+purificationSpeech_Lovely =+ [ "愛の光を聖なる力に!"+ , "ラブプリブレス!"+ , "プリキュア!ピンキーラブ・シュート!!"+ , "愛よ、天に返れ!"+ ]++-- https://www.youtube.com/watch?v=kZl2B7OHzjo+purificationSpeech_Princess =+ [ "勇気の光を聖なる力へ!"+ , "ラブプリブレス!"+ , "プリキュア!ブルーハッピー・シュート!!"+ , "勇気よ、天に返れ!"+ ]++-- https://www.youtube.com/watch?v=nvZ-ywR6NGM+purificationSpeech_Honey =+ [ "命の光を聖なる力へ!"+ , "ハニーバトン!"+ , "プリキュア!スパークリングバトンアタック!!"+ , "イエイ!"+ , "命よ、天に返れ!"+ ]++-- https://www.youtube.com/watch?v=vyVRx-G20vI+purificationSpeech_Fortune =+ [ "星の光を聖なる力に!"+ , "フォーチュン・タンバリン!"+ , "プリキュア!スターライト・アセンション!!"+ , "星よ、天に返れ!"+ ]++-- https://www.youtube.com/watch?v=_nHcTw_RBJM+purificationSpeech_HappinessCharge_InnocentForm =+ [ "(集まれ、ハピネスな気持ち!)"+ , "(高まれ、イノセントな思い!)"+ , "輝け!シャイニング・メイク・ドレッサー!"+ , "カタチなき愛求め♪"+ , "確かなその優しさ♪"+ , "色褪せない希望♪"+ , "奏でよう未来へ♪"+ , "勇気のカケラがひとつ♪"+ , "まだ見つからない♪"+ , "だけどきっと♪"+ , "イノセント♪ イノセント♪"+ , "小さな勇気 愛の光り 星の瞬き 尊き命♪"+ , "心を重ねて 響き合うメロディ♪"+ , "プリキュア! イノセントプリフィケーション!"+ ]
+ src/ACME/PreCure/Textbook/HeartCatch.hs view
@@ -0,0 +1,6 @@+module ACME.PreCure.Textbook.HeartCatch+ ( module H+ ) where+++import ACME.PreCure.Textbook.HeartCatch.Types as H
+ src/ACME/PreCure/Textbook/HeartCatch/Types.hs view
@@ -0,0 +1,95 @@+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module ACME.PreCure.Textbook.HeartCatch.Types where+++import ACME.PreCure.Textbook.HeartCatch.Words+import ACME.PreCure.Types.TH+++data Tsubomi = Tsubomi deriving (Eq, Show)+data Erika = Erika deriving (Eq, Show)+data Itsuki = Itsuki deriving (Eq, Show)+data Yuri = Yuri deriving (Eq, Show)++girlInstance [t| Tsubomi |] girlName_Tsubomi+girlInstance [t| Erika |] girlName_Erika+girlInstance [t| Itsuki |] girlName_Itsuki+girlInstance [t| Yuri |] girlName_Yuri++data CureBlossom = CureBlossom deriving (Eq, Show)+data CureMarine = CureMarine deriving (Eq, Show)+data CureSunshine = CureSunshine deriving (Eq, Show)+data CureMoonlight = CureMoonlight deriving (Eq, Show)++data SuperCureBlossom = SuperCureBlossom deriving (Eq, Show)+data SuperCureMarine = SuperCureMarine deriving (Eq, Show)+data SuperCureSunshine = SuperCureSunshine deriving (Eq, Show)+data SuperCureMoonlight = SuperCureMoonlight deriving (Eq, Show)++data HeartPerfume hs = HeartPerfume hs deriving (Eq, Show)+data ShinyPerfume hs = ShinyPerfume hs deriving (Eq, Show)+data HeartPot hs = HeartPot hs deriving (Eq, Show)++-- TODO: Use distinct name for each heart seed?+data HeartSeed = HeartSeed deriving (Eq, Show)++data BlossomTakt = BlossomTakt deriving (Eq, Show)+data MarineTakt = MarineTakt deriving (Eq, Show)+data ShinyTambourine = ShinyTambourine deriving (Eq, Show)+data MoonTakt = MoonTakt deriving (Eq, Show)++data HeartCatchMirage sps = HeartCatchMirage sps deriving (Eq, Show)++data SuperPreCureSeed = SuperPreCureSeed deriving (Eq, Show)++transformedInstanceDefault [t| CureBlossom |] cureName_Blossom introducesHerselfAs_Blossom+transformedInstanceDefault [t| CureMarine |] cureName_Marine introducesHerselfAs_Marine+transformedInstanceDefault [t| CureSunshine |] cureName_Sunshine introducesHerselfAs_Sunshine+transformedInstanceDefault [t| CureMoonlight |] cureName_Moonlight introducesHerselfAs_Moonlight++transformedInstance [t| SuperCureBlossom |] cureName_Blossom introducesHerselfAs_Blossom variation_SuperBlossom+transformedInstance [t| SuperCureMarine |] cureName_Marine introducesHerselfAs_Marine variation_SuperMarine+transformedInstance [t| SuperCureSunshine |] cureName_Sunshine introducesHerselfAs_Sunshine variation_SuperSunshine+transformedInstance [t| SuperCureMoonlight |] cureName_Moonlight introducesHerselfAs_Moonlight variation_SuperMoonlight++transformedGroupInstanceDefault+ [t| (CureBlossom, CureMarine, CureSunshine, CureMoonlight) |]+ groupName_HeartCatch++transformedGroupInstance+ [t| (SuperCureBlossom, SuperCureMarine, SuperCureSunshine, SuperCureMoonlight) |]+ groupName_HeartCatch+ variation_SuperSilhouette++transformationInstance [t| Tsubomi |] [t| HeartPerfume HeartSeed |] [t| CureBlossom |] [| CureBlossom |] transformationSpeech_Blossom+transformationInstance [t| Erika |] [t| HeartPerfume HeartSeed |] [t| CureMarine |] [| CureMarine |] transformationSpeech_Marine+transformationInstance [t| Itsuki |] [t| ShinyPerfume HeartSeed |] [t| CureSunshine |] [| CureSunshine |] transformationSpeech_Sunshine+transformationInstance [t| Yuri |] [t| HeartPot HeartSeed |] [t| CureMoonlight |] [| CureMoonlight |] transformationSpeech_Moonlight++transformationInstance+ [t| (Tsubomi, Erika, Itsuki, Yuri) |]+ [t| (HeartPerfume HeartSeed, HeartPerfume HeartSeed, ShinyPerfume HeartSeed, HeartPot HeartSeed) |]+ [t| (CureBlossom, CureMarine, CureSunshine, CureMoonlight) |]+ [| (CureBlossom, CureMarine, CureSunshine, CureMoonlight) |]+ transformationSpeech_HeartCatch++transformationInstance+ [t| (CureBlossom, CureMarine, CureSunshine, CureMoonlight) |]+ [t| HeartCatchMirage SuperPreCureSeed |]+ [t| (SuperCureBlossom, SuperCureMarine, SuperCureSunshine, SuperCureMoonlight) |]+ [| (SuperCureBlossom, SuperCureMarine, SuperCureSunshine, SuperCureMoonlight) |]+ transformationSpeech_HeartCatch_SuperSilhouette++purificationInstance [t| CureBlossom |] [t| BlossomTakt |] purificationSpeech_Blossom+purificationInstance [t| CureMarine |] [t| MarineTakt |] purificationSpeech_Marine+purificationInstance [t| CureSunshine |] [t| ShinyTambourine |] purificationSpeech_Sunshine+purificationInstance [t| CureMoonlight |] [t| MoonTakt |] purificationSpeech_Moonlight++purificationInstance+ [t| (CureBlossom, CureMarine, CureSunshine, CureMoonlight) |]+ [t| HeartCatchMirage SuperPreCureSeed |]+ purificationSpeech_HeartCatch_SuperSilhouette
+ src/ACME/PreCure/Textbook/HeartCatch/Words.hs view
@@ -0,0 +1,91 @@+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}++module ACME.PreCure.Textbook.HeartCatch.Words where++groupName_HeartCatch = "ハートキャッチプリキュア!"++girlName_Tsubomi = "花咲つぼみ"+girlName_Erika = "来海えりか"+girlName_Itsuki = "明堂院いつき"+girlName_Yuri = "月影ゆり"++cureName_Blossom = "キュアブロッサム"+cureName_Marine = "キュアマリン"+cureName_Sunshine = "キュアサンシャイン"+cureName_Moonlight = "キュアムーンライト"++variation_SuperBlossom = "スーパーキュアブロッサム"+variation_SuperMarine = "スーパーキュアマリン"+variation_SuperSunshine = "スーパーキュアサンシャイン"+variation_SuperMoonlight = "スーパーキュアムーンライト"++variation_SuperSilhouette = "スーパーシルエット"++-- https://www.youtube.com/watch?v=gcLBpRlMly8+introducesHerselfAs_Blossom = "大地に咲く一輪の花! キュアブロッサム!"+introducesHerselfAs_Marine = "海風に揺れる一輪の花! キュアマリン!"+introducesHerselfAs_Sunshine = "陽の光浴びる一輪の花! キュアサンシャイン!"+introducesHerselfAs_Moonlight = "月光に冴える一輪の花! キュアムーンライト!"++preCureSeed = "(プリキュアの種、いくですぅ!)"+openMyHeart = "プリキュア!オープンマイハート!"++transformationSpeech_Blossom = [preCureSeed, openMyHeart, introducesHerselfAs_Blossom]+transformationSpeech_Marine = [preCureSeed, openMyHeart, introducesHerselfAs_Marine]+transformationSpeech_Sunshine = [preCureSeed, openMyHeart, introducesHerselfAs_Sunshine]+transformationSpeech_Moonlight = [openMyHeart, introducesHerselfAs_Moonlight]++transformationSpeech_HeartCatch =+ [ preCureSeed+ , openMyHeart+ , introducesHerselfAs_Blossom+ , introducesHerselfAs_Marine+ , introducesHerselfAs_Sunshine+ , introducesHerselfAs_Moonlight+ , "ハートキャッチ・プリキュア!"+ ]++-- https://www.youtube.com/watch?v=zpfoddTKS6U+transformationSpeech_HeartCatch_SuperSilhouette =+ [ "鏡よ鏡、プリキュアに力を!"+ , "世界に輝く一面の花! ハートキャッチプリキュア! スーパーシルエット!"+ ]+++-- https://www.youtube.com/watch?v=zpfoddTKS6U+purificationSpeech_Blossom =+ [ "集まれ、花のパワー!"+ , "ブロッサム・タクト!"+ , "花よ輝け!"+ , "プリキュア!ピンクフォルテウェイブ!!"+ ]++-- https://www.youtube.com/watch?v=-kWxDb4kkpY+purificationSpeech_Marine =+ [ "集まれ、花のパワー!"+ , "マリン・タクト!"+ , "花よ煌めけ!"+ , "プリキュア!ブルーフォルテウェイブ!!"+ ]++-- https://www.youtube.com/watch?v=BOXWBXhj4K4+purificationSpeech_Sunshine =+ [ "集まれ、花のパワー!"+ , "シャイニー・タンバリン!"+ , "花よ、舞い踊れ!"+ , "プリキュア!ゴールドフォルテバースト!!"+ ]++-- https://www.youtube.com/watch?v=bprklJEuUBk+purificationSpeech_Moonlight =+ [ "集まれ、花のパワー!"+ , "ムーン・タクト!"+ , "花よ輝け!"+ , "プリキュア!シルバーフォルテウェイブ!!"+ ]++-- https://www.youtube.com/watch?v=s3Epi7ArY5A+purificationSpeech_HeartCatch_SuperSilhouette =+ [ "花よ、咲き誇れ!"+ , "プリキュア!ハートキャッチ・オーケストラ!!"+ ]
+ src/ACME/PreCure/Textbook/MahoGirls.hs view
@@ -0,0 +1,6 @@+module ACME.PreCure.Textbook.MahoGirls+ ( module M+ ) where+++import ACME.PreCure.Textbook.MahoGirls.Types as M
+ src/ACME/PreCure/Textbook/MahoGirls/Types.hs view
@@ -0,0 +1,296 @@+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module ACME.PreCure.Textbook.MahoGirls.Types where++import ACME.PreCure.Textbook.MahoGirls.Words+import ACME.PreCure.Types.TH+++data Mirai = Mirai deriving (Eq, Show)+-- According to the Ep. 40, Liko spells "Liko" instead of "Riko"+data Liko = Liko deriving (Eq, Show)+data Kotoha = Kotoha deriving (Eq, Show)+++$(girlInstance [t| Mirai |] girlName_Mirai)+$(girlInstance [t| Liko |] girlName_Liko)+$(girlInstance [t| Kotoha |] girlName_Kotoha)+++data CureMiracle = CureMiracle deriving (Eq, Show)+data CureMiracle_Ruby = CureMiracle_Ruby deriving (Eq, Show)+data CureMiracle_Sapphire = CureMiracle_Sapphire deriving (Eq, Show)+data CureMiracle_Topaz = CureMiracle_Topaz deriving (Eq, Show)+data CureMiracle_OverTheRainbow = CureMiracle_OverTheRainbow deriving (Eq, Show)+data CureMiracle_Heartful = CureMiracle_Heartful deriving (Eq, Show)++data CureMagical = CureMagical deriving (Eq, Show)+data CureMagical_Ruby = CureMagical_Ruby deriving (Eq, Show)+data CureMagical_Sapphire = CureMagical_Sapphire deriving (Eq, Show)+data CureMagical_Topaz = CureMagical_Topaz deriving (Eq, Show)+data CureMagical_OverTheRainbow = CureMagical_OverTheRainbow deriving (Eq, Show)+data CureMagical_Heartful = CureMagical_Heartful deriving (Eq, Show)++data CureFelice = CureFelice deriving (Eq, Show)+data CureFelice_OverTheRainbow = CureFelice_OverTheRainbow deriving (Eq, Show)+data CureFelice_Heartful = CureFelice_Heartful deriving (Eq, Show)++data CureMofurun = CureMofurun deriving (Eq, Show)+data CureMofurun_Ruby = CureMofurun_Ruby deriving (Eq, Show)+data CureMofurun_Sapphire = CureMofurun_Sapphire deriving (Eq, Show)+data CureMofurun_Topaz = CureMofurun_Topaz deriving (Eq, Show)+data CureMofurun_Heartful = CureMofurun_Heartful deriving (Eq, Show)++data Mofurun ls = Mofurun ls deriving (Eq, Show)++data LinkleSmarthon ls = LinkleSmarthon ls deriving (Eq, Show)++data RainbowCarriage ls mof = RainbowCarriage ls mof deriving (Eq, Show)++data PreciousBrace = PreciousBrace deriving (Eq, Show)++data MiracleMofurunLight = MiracleMofurunLight deriving (Eq, Show)+++data LinkleStoneDia = LinkleStoneDia deriving (Show, Eq)+data LinkleStoneRuby = LinkleStoneRuby deriving (Show, Eq)+data LinkleStoneSapphire = LinkleStoneSapphire deriving (Show, Eq)+data LinkleStoneTopaz = LinkleStoneTopaz deriving (Show, Eq)+data LinkleStoneEmerald = LinkleStoneEmerald deriving (Show, Eq)+data LinkleStoneAlexandrite = LinkleStoneAlexandrite deriving (Show, Eq)++data LinkleStoneOfHope = LinkleStoneOfHope deriving (Show, Eq)+data HeartfulLinkleStone = HeartfulLinkleStone deriving (Show, Eq)++data LinkleStick ls = LinkleStick ls deriving (Eq, Show)+data FlowerEchoWand ls = FlowerEchoWand ls deriving (Eq, Show)++transformedInstance [t| CureMiracle |] cureName_Miracle introducesHerselfAs_Miracle variation_Dia+transformedInstance [t| CureMiracle_Ruby |] cureName_Miracle introducesHerselfAs_Miracle variation_Ruby+transformedInstance [t| CureMiracle_Sapphire |] cureName_Miracle introducesHerselfAs_Miracle variation_Sapphire+transformedInstance [t| CureMiracle_Topaz |] cureName_Miracle introducesHerselfAs_Miracle variation_Topaz+transformedInstance [t| CureMiracle_OverTheRainbow |] cureName_Miracle introducesHerselfAs_Miracle variation_OverTheRainbow+transformedInstance [t| CureMiracle_Heartful |] cureName_Miracle introducesHerselfAs_Miracle variation_Heartful++transformedInstance [t| CureMagical |] cureName_Magical introducesHerselfAs_Magical variation_Dia+transformedInstance [t| CureMagical_Ruby |] cureName_Magical introducesHerselfAs_Magical variation_Ruby+transformedInstance [t| CureMagical_Sapphire |] cureName_Magical introducesHerselfAs_Magical variation_Sapphire+transformedInstance [t| CureMagical_Topaz |] cureName_Magical introducesHerselfAs_Magical variation_Topaz+transformedInstance [t| CureMagical_OverTheRainbow |] cureName_Magical introducesHerselfAs_Magical variation_OverTheRainbow+transformedInstance [t| CureMagical_Heartful |] cureName_Magical introducesHerselfAs_Magical variation_Heartful++transformedInstanceDefault [t| CureFelice |] cureName_Felice introducesHerselfAs_Felice+transformedInstance [t| CureFelice_OverTheRainbow |] cureName_Felice introducesHerselfAs_Felice variation_OverTheRainbow+transformedInstance [t| CureFelice_Heartful |] cureName_Felice introducesHerselfAs_Felice variation_Heartful++transformedInstance [t| CureMofurun |] cureName_Mofurun introducesHerselfAs_Mofurun variation_Dia++transformedInstance [t| CureMofurun_Ruby |] cureName_Mofurun introducesHerselfAs_Mofurun variation_Ruby++transformedInstance [t| CureMofurun_Sapphire |] cureName_Mofurun introducesHerselfAs_Mofurun variation_Sapphire++transformedInstance [t| CureMofurun_Topaz |] cureName_Mofurun introducesHerselfAs_Mofurun variation_Topaz++transformedGroupInstance+ [t| (CureMiracle, CureMagical) |]+ groupName_MahoGirls+ variation_Dia++transformedGroupInstance+ [t| (CureMiracle_Ruby, CureMagical_Ruby) |]+ groupName_MahoGirls+ variation_Ruby++transformedGroupInstance+ [t| (CureMiracle_Sapphire, CureMagical_Sapphire) |]+ groupName_MahoGirls+ variation_Sapphire++transformedGroupInstance+ [t| (CureMiracle_Topaz, CureMagical_Topaz) |]+ groupName_MahoGirls+ variation_Topaz++transformedGroupInstance+ [t| (CureMiracle, CureMagical, CureFelice) |]+ groupName_MahoGirls+ variation_Dia++transformedGroupInstance+ [t| (CureMiracle_Ruby, CureMagical_Ruby, CureFelice) |]+ groupName_MahoGirls+ variation_Ruby++transformedGroupInstance+ [t| (CureMiracle_Sapphire, CureMagical_Sapphire, CureFelice) |]+ groupName_MahoGirls+ variation_Sapphire++transformedGroupInstance+ [t| (CureMiracle_Topaz, CureMagical_Topaz, CureFelice) |]+ groupName_MahoGirls+ variation_Topaz++transformedGroupInstance+ [t| (CureMiracle, CureMagical, CureFelice, CureMofurun) |]+ groupName_MahoGirls+ variation_Dia++transformedGroupInstance+ [t| (CureMiracle_Ruby, CureMagical_Ruby, CureFelice, CureMofurun_Ruby) |]+ groupName_MahoGirls+ variation_Ruby++transformedGroupInstance+ [t| (CureMiracle_Sapphire, CureMagical_Sapphire, CureFelice, CureMofurun_Sapphire) |]+ groupName_MahoGirls+ variation_Sapphire++transformedGroupInstance+ [t| (CureMiracle_Topaz, CureMagical_Topaz, CureFelice, CureMofurun_Topaz) |]+ groupName_MahoGirls+ variation_Topaz++transformedGroupInstance+ [t| (CureMiracle_OverTheRainbow, CureMagical_OverTheRainbow, CureFelice_OverTheRainbow) |]+ groupName_MahoGirls+ variation_OverTheRainbow++-- TODO: Add purification instance after watching the movie again+transformedGroupInstance+ [t| (CureMiracle_Heartful, CureMagical_Heartful, CureFelice_Heartful, CureMofurun_Heartful) |]+ groupName_MahoGirls+ variation_Heartful++transformationInstance+ [t| (Mirai, Liko) |]+ [t| (Mofurun LinkleStoneDia) |]+ [t| (CureMiracle, CureMagical) |]+ [| (CureMiracle, CureMagical) |]+ transformationSpeech_Miracle_Magical++transformationInstance+ [t| (Mirai, Liko) |]+ [t| (Mofurun LinkleStoneRuby) |]+ [t| (CureMiracle_Ruby, CureMagical_Ruby) |]+ [| (CureMiracle_Ruby, CureMagical_Ruby) |]+ transformationSpeech_Miracle_Magical_Ruby++transformationInstance+ [t| (Mirai, Liko) |]+ [t| (Mofurun LinkleStoneSapphire) |]+ [t| (CureMiracle_Sapphire, CureMagical_Sapphire) |]+ [| (CureMiracle_Sapphire, CureMagical_Sapphire) |]+ transformationSpeech_Miracle_Magical_Sapphire++transformationInstance+ [t| (Mirai, Liko) |]+ [t| (Mofurun LinkleStoneTopaz) |]+ [t| (CureMiracle_Topaz, CureMagical_Topaz) |]+ [| (CureMiracle_Topaz, CureMagical_Topaz) |]+ transformationSpeech_Miracle_Magical_Topaz++transformationInstance+ [t| Kotoha |]+ [t| (LinkleSmarthon LinkleStoneEmerald) |]+ [t| CureFelice |]+ [| CureFelice |]+ transformationSpeech_Felice++transformationInstance+ [t| (Mirai, Liko, Kotoha) |]+ [t| (Mofurun LinkleStoneDia, LinkleSmarthon LinkleStoneEmerald) |]+ [t| (CureMiracle, CureMagical, CureFelice) |]+ [| (CureMiracle, CureMagical, CureFelice) |]+ transformationSpeech_MahoGirls++transformationInstance+ [t| (Mirai, Liko, Kotoha) |]+ [t| (Mofurun LinkleStoneRuby, LinkleSmarthon LinkleStoneEmerald) |]+ [t| (CureMiracle_Ruby, CureMagical_Ruby, CureFelice) |]+ [| (CureMiracle_Ruby, CureMagical_Ruby, CureFelice) |]+ transformationSpeech_MahoGirls_Ruby++transformationInstance+ [t| (Mirai, Liko, Kotoha) |]+ [t| (Mofurun LinkleStoneSapphire, LinkleSmarthon LinkleStoneEmerald) |]+ [t| (CureMiracle_Sapphire, CureMagical_Sapphire, CureFelice) |]+ [| (CureMiracle_Sapphire, CureMagical_Sapphire, CureFelice) |]+ transformationSpeech_MahoGirls_Sapphire++transformationInstance+ [t| (Mirai, Liko, Kotoha) |]+ [t| (Mofurun LinkleStoneTopaz, LinkleSmarthon LinkleStoneEmerald) |]+ [t| (CureMiracle_Topaz, CureMagical_Topaz, CureFelice) |]+ [| (CureMiracle_Topaz, CureMagical_Topaz, CureFelice) |]+ transformationSpeech_MahoGirls_Topaz+++transformationInstance+ [t| (CureMiracle, CureMagical, CureFelice) |]+ [t| (Mofurun LinkleStoneAlexandrite, LinkleSmarthon LinkleStoneAlexandrite) |]+ [t| (CureMiracle_OverTheRainbow, CureMagical_OverTheRainbow, CureFelice_OverTheRainbow) |]+ [| (CureMiracle_OverTheRainbow, CureMagical_OverTheRainbow, CureFelice_OverTheRainbow) |]+ transformationSpeech_MahoGirls_OverTheRainbow++transformationInstance+ [t| (CureMiracle_Ruby, CureMagical_Ruby, CureFelice) |]+ [t| (Mofurun LinkleStoneAlexandrite, LinkleSmarthon LinkleStoneAlexandrite) |]+ [t| (CureMiracle_OverTheRainbow, CureMagical_OverTheRainbow, CureFelice_OverTheRainbow) |]+ [| (CureMiracle_OverTheRainbow, CureMagical_OverTheRainbow, CureFelice_OverTheRainbow) |]+ transformationSpeech_MahoGirls_OverTheRainbow++transformationInstance+ [t| (CureMiracle_Sapphire, CureMagical_Sapphire, CureFelice) |]+ [t| (Mofurun LinkleStoneAlexandrite, LinkleSmarthon LinkleStoneAlexandrite) |]+ [t| (CureMiracle_OverTheRainbow, CureMagical_OverTheRainbow, CureFelice_OverTheRainbow) |]+ [| (CureMiracle_OverTheRainbow, CureMagical_OverTheRainbow, CureFelice_OverTheRainbow) |]+ transformationSpeech_MahoGirls_OverTheRainbow++transformationInstance+ [t| (CureMiracle_Topaz, CureMagical_Topaz, CureFelice) |]+ [t| (Mofurun LinkleStoneAlexandrite, LinkleSmarthon LinkleStoneAlexandrite) |]+ [t| (CureMiracle_OverTheRainbow, CureMagical_OverTheRainbow, CureFelice_OverTheRainbow) |]+ [| (CureMiracle_OverTheRainbow, CureMagical_OverTheRainbow, CureFelice_OverTheRainbow) |]+ transformationSpeech_MahoGirls_OverTheRainbow++transformationInstance+ [t| Mofurun LinkleStoneOfHope |]+ [t| MiracleMofurunLight |]+ [t| CureMofurun |]+ [| CureMofurun |]+ transformationSpeech_Mofurun+++purificationInstance+ [t| (CureMiracle, CureMagical) |]+ [t| (Mofurun LinkleStoneDia, LinkleStick LinkleStoneDia) |]+ purificationSpeech_Miracle_Magical++purificationInstance+ [t| (CureMiracle_Ruby, CureMagical_Ruby) |]+ [t| (Mofurun LinkleStoneRuby, LinkleStick LinkleStoneRuby) |]+ purificationSpeech_Miracle_Magical_Ruby++purificationInstance+ [t| (CureMiracle_Sapphire, CureMagical_Sapphire) |]+ [t| (Mofurun LinkleStoneSapphire, LinkleStick LinkleStoneSapphire) |]+ purificationSpeech_Miracle_Magical_Sapphire++purificationInstance+ [t| (CureMiracle_Topaz, CureMagical_Topaz) |]+ [t| (Mofurun LinkleStoneTopaz, LinkleStick LinkleStoneTopaz) |]+ purificationSpeech_Miracle_Magical_Topaz++purificationInstance+ [t| CureFelice |]+ [t| FlowerEchoWand LinkleStoneEmerald |]+ purificationSpeech_Felice++purificationInstance+ [t| (CureMiracle_OverTheRainbow, CureMagical_OverTheRainbow, CureFelice_OverTheRainbow) |]+ [t| (RainbowCarriage LinkleStoneAlexandrite (Mofurun LinkleStoneAlexandrite), PreciousBrace) |]+ purificationSpeech_MahoGirls_extreme_rainbow
+ src/ACME/PreCure/Textbook/MahoGirls/Words.hs view
@@ -0,0 +1,151 @@+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}++module ACME.PreCure.Textbook.MahoGirls.Words where+++groupName_MahoGirls = "魔法つかいプリキュア!"+++girlName_Mirai = "朝日奈みらい"+girlName_Liko = "十六夜リコ"+girlName_Kotoha = "花海ことは"++cureName_Miracle = "キュアミラクル"+cureName_Magical = "キュアマジカル"+cureName_Felice = "キュアフェリーチェ"+cureName_Mofurun = "キュアモフルン"++introducesHerselfAs_Miracle = "ふたりの奇跡!キュアミラクル!" +introducesHerselfAs_Magical = "ふたりの魔法!キュアマジカル!" +introducesHerselfAs_Felice = "あまねく生命に祝福を!キュアフェリーチェ!" +introducesHerselfAs_Mofurun = "モフモフモフルン!キュアモフルン!" ++variation_Dia = "ダイヤスタイル"+variation_Ruby = "ルビースタイル"+variation_Sapphire = "サファイアスタイル"+variation_Topaz = "トパーズスタイル"+variation_OverTheRainbow = "オーバー・ザ・レインボー"+variation_Heartful = "ハートフルスタイル"++linkleStoneName_Dia = "ダイヤ"+linkleStoneName_Ruby = "ルビー"+linkleStoneName_Sapphire = "サファイヤ"+linkleStoneName_Topaz = "トパーズ"+linkleStoneName_Emerald = "エメラルド"+linkleStoneName_Alexandrite = "アレキサンドライト"+linkleStoneName_OfHope = "願いの石"+linkleStoneName_Heartful = "ハートフルリンクルストーン"+++transformationSpeechWith_Miracle_Magical :: String -> [String]+transformationSpeechWith_Miracle_Magical lsn =+ [ "キュアップ・ラパパ! " ++ lsn ++ "!"+ , "ミラクル・マジカル・ジュエリーレ!"+ , introducesHerselfAs_Miracle+ , introducesHerselfAs_Magical+ , "魔法つかいプリキュア!!"+ ]+++-- https://www.youtube.com/watch?v=YUd5IkDjEds+transformationSpeechWith_MahoGirls :: String -> [String]+transformationSpeechWith_MahoGirls lsn =+ [ "キュアップ・ラパパ! " ++ lsn ++ "!"+ , "ミラクル・マジカル・ジュエリーレ!"+ , "エメラルド!"+ , "フェリーチェ・ファンファン・フラワーレ!"+ , introducesHerselfAs_Miracle+ , introducesHerselfAs_Magical+ , introducesHerselfAs_Felice+ , "魔法つかいプリキュア!!"+ ]++transformationSpeech_Miracle_Magical =+ transformationSpeechWith_Miracle_Magical linkleStoneName_Dia+transformationSpeech_Miracle_Magical_Ruby =+ transformationSpeechWith_Miracle_Magical linkleStoneName_Ruby+transformationSpeech_Miracle_Magical_Sapphire =+ transformationSpeechWith_Miracle_Magical linkleStoneName_Sapphire+transformationSpeech_Miracle_Magical_Topaz =+ transformationSpeechWith_Miracle_Magical linkleStoneName_Topaz++transformationSpeech_MahoGirls =+ transformationSpeechWith_MahoGirls linkleStoneName_Dia+transformationSpeech_MahoGirls_Ruby =+ transformationSpeechWith_MahoGirls linkleStoneName_Ruby+transformationSpeech_MahoGirls_Sapphire =+ transformationSpeechWith_MahoGirls linkleStoneName_Sapphire+transformationSpeech_MahoGirls_Topaz =+ transformationSpeechWith_MahoGirls linkleStoneName_Topaz++transformationSpeech_Felice =+ [ "キュアップ・ラパパ! エメラルド!"+ , "フェリーチェ・ファンファン・フラワーレ!"+ , introducesHerselfAs_Felice+ ]++-- TODO: Check the movie again+transformationSpeech_Mofurun = [introducesHerselfAs_Mofurun]++-- https://www.youtube.com/watch?v=BSseiA_pBYI+transformationSpeech_MahoGirls_OverTheRainbow =+ [ "キュアップ・ラパパ! アレキサンドライト!"+ , "魔法つかいプリキュア! オーバー・ザ・レインボー!"+ ]+++-- https://www.youtube.com/watch?v=QBQfnFOyRS4+purificationSpeech_Miracle_Magical =+ [ "ダイヤ!永遠の輝きを私達の手に!"+ , "フルフルリンクル!"+ , "プリキュア!ダイヤモンド・エターナル!"+ ]++-- https://www.youtube.com/watch?v=sM7VC9-hCU8+purificationSpeech_Miracle_Magical_Ruby =+ [ "リンクルステッキ!"+ , "(モッフー!)"+ , "ルビー!紅の情熱よ私達の手に!"+ , "フルフルリンクル!"+ , "プリキュア!ルビー・パッショナーレ!"+ ]++-- https://www.youtube.com/watch?v=lNUa2Sfa894+purificationSpeech_Miracle_Magical_Sapphire =+ [ "リンクルステッキ!"+ , "(モッフー!)"+ , "サファイア!青き知性よ私達の手に!"+ , "フルフルリンクル!"+ , "プリキュア!サファイア・スマーティッシュ!"+ ]++-- https://www.youtube.com/watch?v=uu7V5Fxw8NQ+purificationSpeech_Miracle_Magical_Topaz =+ [ "リンクルステッキ!"+ , "(モォッフー!モッフッ!)"+ , "トパーズ!金色の希望よ私達の手に!"+ , "フルフルリンクル!"+ , "プリキュア!トパーズ・エスペランサ!"+ ]++-- https://www.youtube.com/watch?v=vEWAnGM0-Os+purificationSpeech_Felice =+ [ "フラワーエコーワンド!"+ , "エメラルド!"+ , "キュアー・アップ!"+ , "(キュアー・アップ!キュアー・アップ!キュアー・アップ!)"+ , "プリキュア!エメラルド・リンカネーション!"+ ]++-- https://www.youtube.com/watch?v=dGaiygaMDUM+purificationSpeech_MahoGirls_extreme_rainbow =+ [ "(レインボー・キャリッジ! モフッ! モォッフー!!)"+ , "巡り会う奇跡よ!"+ , "繋がる魔法よ!" + , "育まれし幸福(しあわせ)よ!" + , "今私たちの手に!"+ , "プレシャスブレス!"+ , "フル・フル・フルフルリンクル!"+ , "プリキュア!エクストリーム・レインボー!"+ , "キュアップ・ラパパ! 虹の彼方に!"+ ]
+ src/ACME/PreCure/Textbook/MaxHeart.hs view
@@ -0,0 +1,6 @@+module ACME.PreCure.Textbook.MaxHeart+ ( module M+ ) where+++import ACME.PreCure.Textbook.MaxHeart.Types as M
+ src/ACME/PreCure/Textbook/MaxHeart/Types.hs view
@@ -0,0 +1,66 @@+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module ACME.PreCure.Textbook.MaxHeart.Types where++import ACME.PreCure.Textbook.First.Words+import ACME.PreCure.Textbook.First.Types+import ACME.PreCure.Textbook.MaxHeart.Words+import ACME.PreCure.Types.TH+++data Hikari = Hikari deriving (Eq, Show)++data CureBlack_Max = CureBlack_Max deriving (Eq, Show)+data CureWhite_Max = CureWhite_Max deriving (Eq, Show)++$(girlInstance [t| Hikari |] girlName_Hikari)++data ShinyLuminous = ShinyLuminous deriving (Eq, Show)++data HeartfulCommune_Mepple = HeartfulCommune_Mepple deriving (Eq, Show)+data HeartfulCommune_Mipple = HeartfulCommune_Mipple deriving (Eq, Show)++data TouchCommune_Porun = TouchCommune_Porun deriving (Eq, Show)++data SparkleBrace = SparkleBrace deriving (Eq, Show)++data HeartielBaton = HeartielBaton deriving (Eq, Show)++transformedInstance [t| CureBlack_Max |] cureName_Black introducesHerselfAs_Black variation_MaxHeart+transformedInstance [t| CureWhite_Max |] cureName_White introducesHerselfAs_White variation_MaxHeart++transformedGroupInstanceDefault+ [t| (CureBlack_Max, CureWhite_Max) |]+ groupName_MaxHeart++transformedGroupInstanceDefault+ [t| (CureBlack_Max, CureWhite_Max, ShinyLuminous) |]+ groupName_MaxHeart++transformationInstance+ [t| (Nagisa, Honoka) |]+ [t| (HeartfulCommune_Mepple, HeartfulCommune_Mipple) |]+ [t| (CureBlack_Max, CureWhite_Max) |]+ [| (CureBlack_Max, CureWhite_Max) |]+ transformationSpeech_Black_White++transformationInstance+ [t| Hikari |]+ [t| TouchCommune_Porun |]+ [t| ShinyLuminous |]+ [| ShinyLuminous |]+ transformationSpeech_Luminous++nonItemPurificationInstance+ [t| (CureBlack_Max, CureWhite_Max) |]+ purificationSpeech_Black_White_Max++purificationInstance+ [t| ShinyLuminous |]+ [t| HeartielBaton |]+ purificationSpeech_Luminous++-- TODO: more purifications after confirming the phrases
+ src/ACME/PreCure/Textbook/MaxHeart/Words.hs view
@@ -0,0 +1,33 @@+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}++module ACME.PreCure.Textbook.MaxHeart.Words where+++import ACME.PreCure.Textbook.First.Words+++groupName_MaxHeart = "ふたりはプリキュア Max Heart"++girlName_Hikari = "九条ひかり"++cureName_Luminous = "シャイニールミナス"++introducesHerselfAs_Luminous = "輝く命、シャイニールミナス!" ++variation_MaxHeart = "Max Heart"++transformationSpeech_Luminous =+ [ "ルミナス・シャイニングストリーム!"+ , introducesHerselfAs_Luminous+ , "光の心と光の意志、すべてを一つにするために!"+ ]+++purificationSpeech_Black_White_Max =+ purificationSpeech_Black_White ++ ["マックス!!"]+++purificationSpeech_Luminous =+ [ "光の意志よ!私に勇気を!希望と力を!!"+ , "ルミナス・ハーティエル・アンクション!"+ ]
+ src/ACME/PreCure/Textbook/Movie.hs view
@@ -0,0 +1,6 @@+module ACME.PreCure.Textbook.Movie+ ( module M+ ) where+++import ACME.PreCure.Textbook.Movie.Types as M
+ src/ACME/PreCure/Textbook/Movie/Types.hs view
@@ -0,0 +1,29 @@+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module ACME.PreCure.Textbook.Movie.Types where+++import ACME.PreCure.Textbook.Movie.Words+import ACME.PreCure.Types.TH+++data Ayumi = Ayumi deriving (Eq, Show)++girlInstance [t| Ayumi |] girlName_Ayumi++data CureEcho = CureEcho deriving (Eq, Show)++data FeelingToBePreCure = FeelingToBePreCure deriving (Eq, Show)++transformedInstanceDefault [t| CureEcho |] cureName_Echo introducesHerselfAs_Echo+transformationInstance+ [t| Ayumi |]+ [t| FeelingToBePreCure |]+ [t| CureEcho |]+ [| CureEcho |]+ transformationSpeech_Echo++nonItemPurificationInstance [t| CureEcho |] purificationSpeech_Echo
+ src/ACME/PreCure/Textbook/Movie/Words.hs view
@@ -0,0 +1,15 @@+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}++module ACME.PreCure.Textbook.Movie.Words where++girlName_Ayumi = "坂上あゆみ"++cureName_Echo = "キュアエコー"+introducesHerselfAs_Echo = "思いよ届け!キュアエコー!"++transformationSpeech_Echo =+ ["みんなの思いを守るために", "心をひとつに!", introducesHerselfAs_Echo]+++purificationSpeech_Echo =+ ["世界に響け、みんなの思い!", "プリキュア・ハートフルエコー!"]
+ src/ACME/PreCure/Textbook/Smile.hs view
@@ -0,0 +1,6 @@+module ACME.PreCure.Textbook.Smile+ ( module S+ ) where+++import ACME.PreCure.Textbook.Smile.Types as S
+ src/ACME/PreCure/Textbook/Smile/Types.hs view
@@ -0,0 +1,95 @@+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module ACME.PreCure.Textbook.Smile.Types where+++import ACME.PreCure.Textbook.Smile.Words+import ACME.PreCure.Types.TH+++data Miyuki = Miyuki deriving (Eq, Show)+data Akane = Akane deriving (Eq, Show)+data Yayoi = Yayoi deriving (Eq, Show)+data Nao = Nao deriving (Eq, Show)+data Reika = Reika deriving (Eq, Show)++girlInstance [t| Miyuki |] girlName_Miyuki+girlInstance [t| Akane |] girlName_Akane+girlInstance [t| Yayoi |] girlName_Yayoi+girlInstance [t| Nao |] girlName_Nao+girlInstance [t| Reika |] girlName_Reika++data CureHappy = CureHappy deriving (Eq, Show)+data CureSunny = CureSunny deriving (Eq, Show)+data CurePeace = CurePeace deriving (Eq, Show)+data CureMarch = CureMarch deriving (Eq, Show)+data CureBeauty = CureBeauty deriving (Eq, Show)++data PrincessHappy = PrincessHappy deriving (Eq, Show)+data PrincessSunny = PrincessSunny deriving (Eq, Show)+data PrincessPeace = PrincessPeace deriving (Eq, Show)+data PrincessMarch = PrincessMarch deriving (Eq, Show)+data PrincessBeauty = PrincessBeauty deriving (Eq, Show)++data SmilePact cd = SmilePact cd deriving (Eq, Show)+-- TODO: Make distinct decors for each PreCure or purification?+data CureDecors = CureDecors deriving (Eq, Show)++data PrincessCandle cd = PrincessCandle cd deriving (Eq, Show)++data RoyalClock cd = RoyalClock cd deriving (Eq, Show)++transformedInstanceDefault [t| CureHappy |] cureName_Happy introducesHerselfAs_Happy+transformedInstanceDefault [t| CureSunny |] cureName_Sunny introducesHerselfAs_Sunny+transformedInstanceDefault [t| CurePeace |] cureName_Peace introducesHerselfAs_Peace+transformedInstanceDefault [t| CureMarch |] cureName_March introducesHerselfAs_March+transformedInstanceDefault [t| CureBeauty |] cureName_Beauty introducesHerselfAs_Beauty++transformedInstance [t| PrincessHappy |] cureName_Happy introducesHerselfAs_Happy_Princess variation_Happy_Princess+transformedInstance [t| PrincessSunny |] cureName_Sunny introducesHerselfAs_Sunny_Princess variation_Sunny_Princess+transformedInstance [t| PrincessPeace |] cureName_Peace introducesHerselfAs_Peace_Princess variation_Peace_Princess+transformedInstance [t| PrincessMarch |] cureName_March introducesHerselfAs_March_Princess variation_March_Princess+transformedInstance [t| PrincessBeauty |] cureName_Beauty introducesHerselfAs_Beauty_Princess variation_Beauty_Princess++transformedGroupInstanceDefault+ [t| (CureHappy, CureSunny, CurePeace, CureMarch, CureBeauty) |]+ groupName_Smile++transformedGroupInstance+ [t| (PrincessHappy, PrincessSunny, PrincessPeace, PrincessMarch, PrincessBeauty) |]+ groupName_Smile+ variation_Smile_Princess++transformationInstance [t| Miyuki |] [t| SmilePact CureDecors |] [t| CureHappy |] [| CureHappy |] transformationSpeech_Happy+transformationInstance [t| Akane |] [t| SmilePact CureDecors |] [t| CureSunny |] [| CureSunny |] transformationSpeech_Sunny+transformationInstance [t| Yayoi |] [t| SmilePact CureDecors |] [t| CurePeace |] [| CurePeace |] transformationSpeech_Peace+transformationInstance [t| Nao |] [t| SmilePact CureDecors |] [t| CureMarch |] [| CureMarch |] transformationSpeech_March+transformationInstance [t| Reika |] [t| SmilePact CureDecors |] [t| CureBeauty |] [| CureBeauty |] transformationSpeech_Beauty++transformationInstance+ [t| (Miyuki, Akane, Yayoi, Nao, Reika) |]+ [t| SmilePact CureDecors |]+ [t| (CureHappy, CureSunny, CurePeace, CureMarch, CureBeauty) |]+ [| (CureHappy, CureSunny, CurePeace, CureMarch, CureBeauty) |]+ transformationSpeech_Smile++transformationInstance+ [t| (CureHappy, CureSunny, CurePeace, CureMarch, CureBeauty) |]+ [t| PrincessCandle CureDecors |]+ [t| (PrincessHappy, PrincessSunny, PrincessPeace, PrincessMarch, PrincessBeauty) |]+ [| (PrincessHappy, PrincessSunny, PrincessPeace, PrincessMarch, PrincessBeauty) |]+ transformationSpeech_Smile_Princess++purificationInstance [t| CureHappy |] [t| SmilePact CureDecors |] purificationSpeech_Happy+purificationInstance [t| CureSunny |] [t| SmilePact CureDecors |] purificationSpeech_Sunny+purificationInstance [t| CurePeace |] [t| SmilePact CureDecors |] purificationSpeech_Peace+purificationInstance [t| CureMarch |] [t| SmilePact CureDecors |] purificationSpeech_March+purificationInstance [t| CureBeauty |] [t| SmilePact CureDecors |] purificationSpeech_Beauty++purificationInstance+ [t| (PrincessHappy, PrincessSunny, PrincessPeace, PrincessMarch, PrincessBeauty) |]+ [t| RoyalClock CureDecors |]+ purificationSpeech_Smile
+ src/ACME/PreCure/Textbook/Smile/Words.hs view
@@ -0,0 +1,92 @@+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}++module ACME.PreCure.Textbook.Smile.Words where+++groupName_Smile = "スマイルプリキュア!"++girlName_Miyuki = "星空みゆき"+girlName_Akane = "日野あかね"+girlName_Yayoi = "黄瀬やよい"+girlName_Nao = "緑川なお"+girlName_Reika = "青木れいか"++cureName_Happy = "キュアハッピー"+cureName_Sunny = "キュアサニー"+cureName_Peace = "キュアピース"+cureName_March = "キュアマーチ"+cureName_Beauty = "キュアビューティー"++introducesHerselfAs_Happy = "キラキラ輝く未来の光! キュアハッピー!"+introducesHerselfAs_Sunny = "太陽サンサン熱血パワー! キュアサニー!"+introducesHerselfAs_Peace = "ピカピカピカリン、ジャンケンポン! キュアピース!"+introducesHerselfAs_March = "勇気リンリン、直球勝負! キュアマーチ!"+introducesHerselfAs_Beauty = "しんしんと降り積もる清き心! キュアビューティ!"++smileCharge = ["(レディ?)", "プリキュア!スマイルチャージ!"]++-- https://www.youtube.com/watch?v=5kh14uGcgCs+transformationSpeech_Happy =+ smileCharge ++ ["(ゴー!ゴー!レッツ・ゴー!ハッピー!!)", introducesHerselfAs_Happy]+transformationSpeech_Sunny =+ smileCharge ++ ["(ゴー!ゴー!レッツ・ゴー!サニー!!)", introducesHerselfAs_Sunny]+transformationSpeech_Peace =+ smileCharge ++ ["(ゴー!ゴー!レッツ・ゴー!ピース!!)", introducesHerselfAs_Peace]+transformationSpeech_March =+ smileCharge ++ ["(ゴー!ゴー!レッツ・ゴー!マーチ!!)", introducesHerselfAs_March]+transformationSpeech_Beauty =+ smileCharge ++ ["(ゴー!ゴー!レッツ・ゴー!ビューティー!!)", introducesHerselfAs_Beauty]++-- https://www.youtube.com/watch?v=Guo_fReC6Gk+transformationSpeech_Smile =+ smileCharge+ ++ ["(ゴー!ゴー!レッツ・ゴー!)"]+ +++ [ introducesHerselfAs_Happy+ , introducesHerselfAs_Sunny+ , introducesHerselfAs_Peace+ , introducesHerselfAs_March+ , introducesHerselfAs_Beauty+ ]+ ++ ["5つの光が導く未来!" , "輝け!スマイルプリキュア!"]++purificationSpeech_Happy = ["プリキュア!ハッピー・シャワー!"]+purificationSpeech_Sunny = ["プリキュア!サニー・ファイヤー!"]+-- https://www.youtube.com/watch?v=zbpEU6ma6Q0+purificationSpeech_Peace = ["プリキュア!ピース・サンダー!"]+purificationSpeech_March = ["プリキュア!マーチ・シュート!"]+purificationSpeech_Beauty = ["プリキュア!ビューティー・ブリザード!"]++variation_Smile_Princess = "プリキュア・プリンセス・フォーム"++variation_Happy_Princess = "プリンセスハッピー"+variation_Sunny_Princess = "プリンセスサニー"+variation_Peace_Princess = "プリンセスピース"+variation_March_Princess = "プリンセスマーチ"+variation_Beauty_Princess = "プリンセスビューティー" ++introducesHerselfAs_Happy_Princess = variation_Happy_Princess ++ "!"+introducesHerselfAs_Sunny_Princess = variation_Sunny_Princess ++ "!"+introducesHerselfAs_Peace_Princess = variation_Peace_Princess ++ "!"+introducesHerselfAs_March_Princess = variation_March_Princess ++ "!"+introducesHerselfAs_Beauty_Princess = variation_Beauty_Princess ++ "!"++transformationSpeech_Smile_Princess =+ [ "ペガサスよ!私たちに力を!"+ , introducesHerselfAs_Happy_Princess+ , introducesHerselfAs_Sunny_Princess+ , introducesHerselfAs_Peace_Princess+ , introducesHerselfAs_March_Princess+ , introducesHerselfAs_Beauty_Princess+ , "プリキュア・プリンセス・フォーム!"+ ]++-- https://www.youtube.com/watch?v=RK-vbzvShwE+purificationSpeech_Smile =+ [ "開け、ロイヤルクロック!"+ , "(みんなの力を1つにするクル!)"+ , "届け、希望の光!"+ , "はばたけ!光り輝く未来へ!"+ , "プリキュア!ロイヤル・レインボー・バースト!"+ , "輝け!ハッピースマイル!"+ ]
+ src/ACME/PreCure/Textbook/SplashStar.hs view
@@ -0,0 +1,6 @@+module ACME.PreCure.Textbook.SplashStar+ ( module S+ ) where+++import ACME.PreCure.Textbook.SplashStar.Types as S
+ src/ACME/PreCure/Textbook/SplashStar/Types.hs view
@@ -0,0 +1,63 @@+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module ACME.PreCure.Textbook.SplashStar.Types where+++import ACME.PreCure.Textbook.SplashStar.Words+import ACME.PreCure.Types.TH++data Saki = Saki deriving (Eq, Show)+data Mai = Mai deriving (Eq, Show)++$(girlInstance [t| Saki |] girlName_Saki)+$(girlInstance [t| Mai |] girlName_Mai)++data CureBloom = CureBloom deriving (Eq, Show)+data CureEgret = CureEgret deriving (Eq, Show)++data MixCommune_Flappy = MixCommune_Flappy deriving (Eq, Show)+data MixCommune_Choppy = MixCommune_Choppy deriving (Eq, Show)++data CureBright = CureBright deriving (Eq, Show)+data CureWindy = CureWindy deriving (Eq, Show)++data CrystalCommune_Flappy = CrystalCommune_Flappy deriving (Eq, Show)+data CrystalCommune_Choppy = CrystalCommune_Choppy deriving (Eq, Show)++transformedInstanceDefault [t| CureBloom |] cureName_Bloom introducesHerselfAs_Bloom+transformedInstanceDefault [t| CureEgret |] cureName_Egret introducesHerselfAs_Egret++transformedInstanceDefault [t| CureBright |] cureName_Bright introducesHerselfAs_Bright+transformedInstanceDefault [t| CureWindy |] cureName_Windy introducesHerselfAs_Windy++transformedGroupInstanceDefault+ [t| (CureBloom, CureEgret) |]+ groupName_SplashStar++transformedGroupInstance+ [t| (CureBright, CureWindy) |]+ groupName_SplashStar+ variation_Bright_Windy++transformationInstance+ [t| (Saki, Mai) |]+ [t| (MixCommune_Flappy, MixCommune_Choppy) |]+ [t| (CureBloom, CureEgret) |]+ [| (CureBloom, CureEgret) |]+ transformationSpeech_Bloom_Egret++transformationInstance+ [t| (Saki, Mai) |]+ [t| (CrystalCommune_Flappy, CrystalCommune_Choppy) |]+ [t| (CureBright, CureWindy) |]+ [| (CureBright, CureWindy) |]+ transformationSpeech_Bright_Windy++nonItemPurificationInstance+ [t| (CureBloom, CureEgret) |]+ purificationSpeech_Bloom_Egret++-- TODO: more purifications after confirming the phrases
+ src/ACME/PreCure/Textbook/SplashStar/Words.hs view
@@ -0,0 +1,56 @@+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}++module ACME.PreCure.Textbook.SplashStar.Words where+++groupName_SplashStar = "ふたりはプリキュア Splash Star"++girlName_Saki = "日向咲"+girlName_Mai = "美翔舞"++cureName_Bloom = "キュアブルーム"+cureName_Egret = "キュアイーグレット"++cureName_Bright = "キュアブライト"+cureName_Windy = "キュアウィンディ"++variation_Bright_Windy = "(キュアブルーム・キュアウィンディ)"++introducesHerselfAs_Bloom = "輝く金の花! キュアブルーム!" +introducesHerselfAs_Egret = "煌めく銀の翼! キュアイーグレット!" ++introducesHerselfAs_Bright = "天空に満ちる月! キュアブライト!" +introducesHerselfAs_Windy = "大地に薫る風! キュアウィンディ!" ++-- https://www.youtube.com/watch?v=BNfpwV-sPJU+transformationSpeech_Bloom_Egret =+ [ "デュアル・スピリチュアル・パワー!"+ , "花開け大地に!"+ , "羽ばたけ空に!"+ , introducesHerselfAs_Bloom+ , introducesHerselfAs_Egret+ , "ふたりはプリキュア!"+ , "聖なる泉を汚す者よ!"+ , "阿漕な真似はお止めなさい!"+ ]+++-- https://www.youtube.com/watch?v=5RMeQZzksuQ+transformationSpeech_Bright_Windy =+ [ "デュアル・スピリチュアル・パワー!"+ , "未来を照らし!"+ , "勇気を運べ!"+ , introducesHerselfAs_Bright+ , introducesHerselfAs_Windy+ , "ふたりはプリキュア!"+ , "聖なる泉を汚す者よ!"+ , "阿漕な真似はお止めなさい!"+ ]++purificationSpeech_Bloom_Egret =+ [ "大地の精霊よ"+ , "大空の精霊よ"+ , "今、プリキュアと共に!"+ , "奇跡の力を解き放て!"+ , "プリキュア ツインストリーム・スプラッシュ!!"+ ]
+ src/ACME/PreCure/Textbook/Suite.hs view
@@ -0,0 +1,6 @@+module ACME.PreCure.Textbook.Suite+ ( module H+ ) where+++import ACME.PreCure.Textbook.Suite.Types as H
+ src/ACME/PreCure/Textbook/Suite/Types.hs view
@@ -0,0 +1,85 @@+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module ACME.PreCure.Textbook.Suite.Types where+++import ACME.PreCure.Textbook.Suite.Words+import ACME.PreCure.Types.TH+++data Hibiki = Hibiki deriving (Eq, Show)+data Kanade = Kanade deriving (Eq, Show)+data Ellen = Ellen deriving (Eq, Show)+data Ako = Ako deriving (Eq, Show)++girlInstance [t| Hibiki |] girlName_Hibiki+girlInstance [t| Kanade |] girlName_Kanade+girlInstance [t| Ellen |] girlName_Ellen+girlInstance [t| Ako |] girlName_Ako++data CureMelody = CureMelody deriving (Eq, Show)+data CureRhythm = CureRhythm deriving (Eq, Show)+data CureBeat = CureBeat deriving (Eq, Show)+data CureMuse = CureMuse deriving (Eq, Show)++data CureModules fs = CureModules fs deriving (Eq, Show)++data Dory = Dory deriving (Eq, Show)+data Rery = Rery deriving (Eq, Show)+data Miry = Miry deriving (Eq, Show)+data Fary = Fary deriving (Eq, Show)+data Sory = Sory deriving (Eq, Show)+data Lary = Lary deriving (Eq, Show)+data Tiry = Tiry deriving (Eq, Show)+data Dodory = Dodory deriving (Eq, Show)++data MiracleBelltier miry = MiracleBelltier miry deriving (Eq, Show)+data FantasticBelltier fary = FantasticBelltier fary deriving (Eq, Show)+data LoveGuitarRod sory = LoveGuitarRod sory deriving (Eq, Show)++data HealingChest = HealingChest deriving (Eq, Show)++transformedInstanceDefault [t| CureMelody |] cureName_Melody introducesHerselfAs_Melody+transformedInstanceDefault [t| CureRhythm |] cureName_Rhythm introducesHerselfAs_Rhythm+transformedInstanceDefault [t| CureBeat |] cureName_Beat introducesHerselfAs_Beat+transformedInstanceDefault [t| CureMuse |] cureName_Muse introducesHerselfAs_Muse++transformedGroupInstanceDefault+ [t| (CureMelody, CureRhythm, CureBeat, CureMuse) |]+ groupName_Suite++transformationInstance+ [t| (Hibiki, Kanade) |]+ [t| (CureModules Dory, CureModules Rery) |]+ [t| (CureMelody, CureRhythm) |]+ [| (CureMelody, CureRhythm) |]+ transformationSpeech_Melody_Rhythm+transformationInstance [t| Ellen |] [t| CureModules Lary |] [t| CureBeat |] [| CureBeat |] transformationSpeech_Beat+transformationInstance [t| Ako |] [t| CureModules Dodory |] [t| CureMuse |] [| CureMuse |] transformationSpeech_Muse++transformationInstance+ [t| (Hibiki, Kanade, Ellen) |]+ [t| (CureModules Dory, CureModules Rery, CureModules Lary) |]+ [t| (CureMelody, CureRhythm, CureBeat) |]+ [| (CureMelody, CureRhythm, CureBeat) |]+ transformationSpeech_Melody_Rhythm_Beat++transformationInstance+ [t| (Hibiki, Kanade, Ellen, Ako) |]+ [t| (CureModules Dory, CureModules Rery, CureModules Lary, CureModules Dodory) |]+ [t| (CureMelody, CureRhythm, CureBeat, CureMuse) |]+ [| (CureMelody, CureRhythm, CureBeat, CureMuse) |]+ transformationSpeech_Suite++purificationInstance [t| CureMelody |] [t| MiracleBelltier Miry |] purificationSpeech_Melody+purificationInstance [t| CureRhythm |] [t| FantasticBelltier Fary |] purificationSpeech_Rhythm+purificationInstance [t| CureBeat |] [t| LoveGuitarRod Sory |] purificationSpeech_Beat+purificationInstance [t| CureMuse |] [t| CureModules Tiry |] purificationSpeech_Muse++purificationInstance+ [t| (CureMelody, CureRhythm, CureBeat, CureMuse) |]+ [t| HealingChest |]+ purificationSpeech_Suite
+ src/ACME/PreCure/Textbook/Suite/Words.hs view
@@ -0,0 +1,119 @@+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}++module ACME.PreCure.Textbook.Suite.Words where++groupName_Suite = "ハートキャッチプリキュア!"++girlName_Hibiki = "北条響"+girlName_Kanade = "南野奏"+girlName_Ellen = "黒川エレン"+girlName_Ako = "調辺アコ"+++cureName_Melody = "キュアメロディ"+cureName_Rhythm = "キュアリズム"+cureName_Beat = "キュアビート"+cureName_Muse = "キュアミューズ"++-- https://www.youtube.com/watch?v=gcLBpRlMly8+introducesHerselfAs_Melody = "爪弾くは荒ぶる調べ! キュアメロディー!"+introducesHerselfAs_Rhythm = "爪弾くはたおやかな調べ! キュアリズム!"+introducesHerselfAs_Beat = "爪弾くは魂の調べ! キュアビート!"+introducesHerselfAs_Muse = "爪弾くは女神の調べ! キュアミューズ!"+++modulation = "レッツプレイ! プリキュア・モジュレーション!"++-- http://prettycure.wikia.com/wiki/Pretty_Cure#Suite_Pretty_Cure.E2.99.AA+resonateSuiteOfN :: Int -> String+resonateSuiteOfN n =+ "届け!" ++ show n ++ "人の組曲! スイートプリキュア!"++-- https://www.youtube.com/watch?v=Awj263rFma0+transformationSpeech_Melody_Rhythm =+ [ modulation+ , introducesHerselfAs_Melody+ , introducesHerselfAs_Rhythm+ , resonateSuiteOfN 2+ ]+-- https://www.youtube.com/watch?v=pys-olfeXL8+transformationSpeech_Beat = [modulation, introducesHerselfAs_Beat]+-- https://www.youtube.com/watch?v=Cw7ds_UsCyA+transformationSpeech_Muse = [modulation, introducesHerselfAs_Muse]++-- https://www.youtube.com/watch?v=163dGbTWh3g+transformationSpeech_Melody_Rhythm_Beat =+ [ modulation+ , introducesHerselfAs_Melody+ , introducesHerselfAs_Rhythm+ , introducesHerselfAs_Beat+ , resonateSuiteOfN 3+ ]++-- https://www.youtube.com/watch?v=Y-9PB0D6_Lc+transformationSpeech_Suite =+ [ modulation+ , introducesHerselfAs_Melody+ , introducesHerselfAs_Rhythm+ , introducesHerselfAs_Beat+ , introducesHerselfAs_Muse+ , resonateSuiteOfN 4+ ]+++-- https://www.youtube.com/watch?v=H5idj3Cp894+purificationSpeech_Melody =+ [ "(ミミ~!)"+ , "奏でましょう、奇跡のメロディー!ミラクル・ベルティエ!"+ , "おいで、ミリー!"+ , "(ミミ~!)"+ , "翔けめぐれ、トーンのリング!"+ , "プリキュア!ミュージックロンド!"+ , "三拍子!1、2、3"+ , "フィナーレ!"+ ]++-- https://www.youtube.com/watch?v=dmzuSVxB5vE+purificationSpeech_Rhythm =+ [ "(ファファ~!)"+ , "刻みましょう、大いなるリズム!ファンタスティック・ベルティエ!"+ , "おいで、ファリー!"+ , "(ファファ~!)"+ , "翔けめぐれ、トーンのリング!"+ , "プリキュア!ミュージックロンド!"+ , "三拍子!1、2、3"+ , "フィナーレ!"+ ]++-- https://www.youtube.com/watch?v=al6LzdWpfZU+purificationSpeech_Beat =+ [ "(ソソッ)"+ , "弾き鳴らせ、愛の魂!ラブギターロッド!"+ , "おいで、ソリー!"+ , "(ソソッ)"+ , "チェンジ!ソウルロッド!"+ , "翔けめぐれ、トーンのリング!"+ , "プリキュア!ハートフル・ビート・ロック!"+ , "三拍子!1、2、3"+ , "フィナーレ!"+ ]++-- https://www.youtube.com/watch?v=19MEQ1VcIOo+purificationSpeech_Muse =+ [ "おいで、シリー!"+ , "(シシ~)"+ , "「シ」の音符の、シャイニングメロディ!"+ , "プリキュア!スパーリング・シャワー!!"+ , "三拍子!1、2、3"+ , "フィナーレ!"+ ]++-- https://www.youtube.com/watch?v=QHjkhUVEaeY+purificationSpeech_Suite =+ [ "いでよ、すべての音の源よ!"+ , "届けましょう、希望のシンフォニー!"+ , "プリキュア!スイートセッションアンサンブル!"+ , "クレッシェンド!!"+ , "フィナーレ!"+ ]+
+ src/ACME/PreCure/Textbook/Yes5.hs view
@@ -0,0 +1,6 @@+module ACME.PreCure.Textbook.Yes5+ ( module Y+ ) where+++import ACME.PreCure.Textbook.Yes5.Types as Y
+ src/ACME/PreCure/Textbook/Yes5/Types.hs view
@@ -0,0 +1,77 @@+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module ACME.PreCure.Textbook.Yes5.Types where+++import ACME.PreCure.Textbook.Yes5.Words+import ACME.PreCure.Types.TH+++data Nozomi = Nozomi deriving (Eq, Show)+data Rin = Rin deriving (Eq, Show)+data Urara = Urara deriving (Eq, Show)+data Komachi = Komachi deriving (Eq, Show)+data Karen = Karen deriving (Eq, Show)++girlInstance [t| Nozomi |] girlName_Nozomi+girlInstance [t| Rin |] girlName_Rin+girlInstance [t| Urara |] girlName_Urara+girlInstance [t| Komachi |] girlName_Komachi+girlInstance [t| Karen |] girlName_Karen++data CureDream = CureDream deriving (Eq, Show)+data CureRouge = CureRouge deriving (Eq, Show)+data CureLemonade = CureLemonade deriving (Eq, Show)+data CureMint = CureMint deriving (Eq, Show)+data CureAqua = CureAqua deriving (Eq, Show)++data PinkyCatch = PinkyCatch deriving (Eq, Show)++data DreamTorch = DreamTorch deriving (Eq, Show)+data RougeTact = RougeTact deriving (Eq, Show)+data LemonadeCastanet = LemonadeCastanet deriving (Eq, Show)+data MintLeaf = MintLeaf deriving (Eq, Show)+data AquaRibbon = AquaRibbon deriving (Eq, Show)++transformedInstanceDefault [t| CureDream |] cureName_Dream introducesHerselfAs_Dream+transformedInstanceDefault [t| CureRouge |] cureName_Rouge introducesHerselfAs_Rouge+transformedInstanceDefault [t| CureLemonade |] cureName_Lemonade introducesHerselfAs_Lemonade+transformedInstanceDefault [t| CureMint |] cureName_Mint introducesHerselfAs_Mint+transformedInstanceDefault [t| CureAqua |] cureName_Aqua introducesHerselfAs_Aqua++transformedGroupInstanceDefault+ [t| (CureDream, CureRouge, CureLemonade, CureMint, CureAqua) |]+ groupName_Yes5++transformationInstance [t| Nozomi |] [t| PinkyCatch |] [t| CureDream |] [| CureDream |] transformationSpeech_Dream+transformationInstance [t| Rin |] [t| PinkyCatch |] [t| CureRouge |] [| CureRouge |] transformationSpeech_Rouge+transformationInstance [t| Urara |] [t| PinkyCatch |] [t| CureLemonade |] [| CureLemonade |] transformationSpeech_Lemonade+transformationInstance [t| Komachi |] [t| PinkyCatch |] [t| CureMint |] [| CureMint |] transformationSpeech_Mint+transformationInstance [t| Karen |] [t| PinkyCatch |] [t| CureAqua |] [| CureAqua |] transformationSpeech_Aqua++transformationInstance+ [t| (Nozomi, Rin, Urara, Komachi, Karen) |]+ [t| PinkyCatch |]+ [t| (CureDream, CureRouge, CureLemonade, CureMint, CureAqua) |]+ [| (CureDream, CureRouge, CureLemonade, CureMint, CureAqua) |]+ transformationSpeech_Yes5++purificationInstance [t| CureDream |] [t| PinkyCatch |] purificationSpeech_Dream+purificationInstance [t| CureRouge |] [t| PinkyCatch |] purificationSpeech_Rouge+purificationInstance [t| CureLemonade |] [t| PinkyCatch |] purificationSpeech_Lemonade+purificationInstance [t| CureMint |] [t| PinkyCatch |] purificationSpeech_Mint+purificationInstance [t| CureAqua |] [t| PinkyCatch |] purificationSpeech_Aqua++purificationInstance [t| CureDream |] [t| DreamTorch |] purificationSpeech_Dream_Crystal_Shoot+purificationInstance [t| CureRouge |] [t| RougeTact |] purificationSpeech_Rouge_Burning+purificationInstance [t| CureLemonade |] [t| LemonadeCastanet |] purificationSpeech_Lemonade_Shining+purificationInstance [t| CureMint |] [t| MintLeaf |] purificationSpeech_Mint_Shield+purificationInstance [t| CureAqua |] [t| AquaRibbon |] purificationSpeech_Aqua_Tornado++purificationInstance+ [t| (CureDream, CureRouge, CureLemonade, CureMint, CureAqua) |]+ [t| (DreamTorch, RougeTact, LemonadeCastanet, MintLeaf, AquaRibbon) |]+ purificationSpeech_Yes5
+ src/ACME/PreCure/Textbook/Yes5/Words.hs view
@@ -0,0 +1,73 @@+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}++module ACME.PreCure.Textbook.Yes5.Words where+++groupName_Yes5 = "Yes! プリキュア 5"++girlName_Nozomi = "夢原のぞみ"+girlName_Rin = "夏木りん"+girlName_Urara = "春日野うらら"+girlName_Komachi = "秋元こまち"+girlName_Karen = "水無月かれん"++cureName_Dream = "キュアドリーム"+cureName_Rouge = "キュアルージュ"+cureName_Lemonade = "キュアレモネード"+cureName_Mint = "キュアミント"+cureName_Aqua = "キュアアクア"++introducesHerselfAs_Dream = "大いなる希望の力、キュアドリーム!"+introducesHerselfAs_Rouge = "情熱の赤い炎、キュアルージュ!"+introducesHerselfAs_Lemonade = "はじけるレモンの香り、キュアレモネード!"+introducesHerselfAs_Mint = "安らぎの緑の大地、キュアミント!"+introducesHerselfAs_Aqua = "知性の青き泉、キュアアクア!"++metamorphose = "プリキュア!メタモルフォーゼ!"++-- https://www.youtube.com/watch?v=exafSi98n2g+transformationSpeech_Dream = [metamorphose, introducesHerselfAs_Dream]+transformationSpeech_Rouge = [metamorphose, introducesHerselfAs_Rouge]+transformationSpeech_Lemonade = [metamorphose, introducesHerselfAs_Lemonade]+transformationSpeech_Mint = [metamorphose, introducesHerselfAs_Mint]+transformationSpeech_Aqua = [metamorphose, introducesHerselfAs_Aqua]++-- https://www.youtube.com/watch?v=wxH7h3D31ho+transformationSpeech_Yes5 =+ [ metamorphose+ , introducesHerselfAs_Dream+ , introducesHerselfAs_Rouge+ , introducesHerselfAs_Lemonade+ , introducesHerselfAs_Mint+ , introducesHerselfAs_Aqua+ , "希望の力と未来の光!"+ , "華麗に羽ばたく5つの心!"+ , "Yes!プリキュア5!"+ ]++purificationSpeech_Dream_Common = "夢見る乙女の底力、受けてみなさい!"+purificationSpeech_Rouge_Common = "純情乙女の炎の力、受けてみなさい!"+purificationSpeech_Lemonade_Common = "輝く乙女のはじける力、受けてみなさい!"+purificationSpeech_Mint_Common = "大地を揺るがす乙女の怒り、受けてみなさい!"+purificationSpeech_Aqua_Common = "岩をも砕く乙女の激流、受けてみなさい!"++-- https://www.youtube.com/watch?v=bypPLRhJQCk+purificationSpeech_Dream = [purificationSpeech_Dream_Common, "プリキュア!ドリーム・アタック!"]+purificationSpeech_Rouge = [purificationSpeech_Rouge_Common, "プリキュア!ルージュ・ファイヤー!"]+purificationSpeech_Lemonade = [purificationSpeech_Lemonade_Common, "プリキュア!レモネード・フラッシュ!"]+purificationSpeech_Mint = [purificationSpeech_Mint_Common, "プリキュア!ミント・プロテクション!"]+purificationSpeech_Aqua = [purificationSpeech_Aqua_Common, "プリキュア!アクア・ストリーム!"]++purificationSpeech_Dream_Crystal_Shoot = [purificationSpeech_Dream_Common, "プリキュア!クリスタル・シュート!"]+purificationSpeech_Rouge_Burning = [purificationSpeech_Rouge_Common, "プリキュア!ルージュ・バーニング!"]+purificationSpeech_Lemonade_Shining = [purificationSpeech_Lemonade_Common, "プリキュア!レモネード・シャイニング!"]+purificationSpeech_Mint_Shield = [purificationSpeech_Mint_Common, "プリキュア!ミント・シールド!"]+purificationSpeech_Aqua_Tornado = [purificationSpeech_Aqua_Common, "プリキュア!アクア・トルネード!"]++-- https://www.youtube.com/watch?v=wUBVBa6PiVo+purificationSpeech_Yes5 =+ [ "夢と希望の力とともに!"+ , "5つの光よ!"+ , "今ここに!"+ , "プリキュア!ファイブ・エクスプロージョン!"+ ]
+ src/ACME/PreCure/Textbook/Yes5GoGo.hs view
@@ -0,0 +1,6 @@+module ACME.PreCure.Textbook.Yes5GoGo+ ( module Y+ ) where+++import ACME.PreCure.Textbook.Yes5GoGo.Types as Y
+ src/ACME/PreCure/Textbook/Yes5GoGo/Types.hs view
@@ -0,0 +1,70 @@+{-# OPTIONS_GHC -fno-warn-orphans #-}++{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module ACME.PreCure.Textbook.Yes5GoGo.Types where+++import ACME.PreCure.Textbook.Yes5.Words+import ACME.PreCure.Textbook.Yes5.Types+import ACME.PreCure.Textbook.Yes5GoGo.Words+import ACME.PreCure.Types.TH++data Kurumi = Kurumi deriving (Eq, Show)++girlInstance [t| Kurumi |] girlName_Kurumi++data MilkyRose = MilkyRose deriving (Eq, Show)++data CureMo = CureMo deriving (Eq, Show)+data MilkyPalette = MilkyPalette deriving (Eq, Show)++data CrystalFlourez = CrystalFlourez deriving (Eq, Show)+data FireFlourez = FireFlourez deriving (Eq, Show)+data ShiningFlourez = ShiningFlourez deriving (Eq, Show)+data ProtectFlourez = ProtectFlourez deriving (Eq, Show)+data TornadoFlourez = TornadoFlourez deriving (Eq, Show)+data MilkyMirror = MilkyMirror deriving (Eq, Show)++transformedGroupInstanceDefault+ [t| (CureDream, CureRouge, CureLemonade, CureMint, CureAqua, MilkyRose) |]+ groupName_Yes5GoGo++transformationInstance [t| Nozomi |] [t| CureMo |] [t| CureDream |] [| CureDream |] transformationSpeech_Dream+transformationInstance [t| Rin |] [t| CureMo |] [t| CureRouge |] [| CureRouge |] transformationSpeech_Rouge+transformationInstance [t| Urara |] [t| CureMo |] [t| CureLemonade |] [| CureLemonade |] transformationSpeech_Lemonade+transformationInstance [t| Komachi |] [t| CureMo |] [t| CureMint |] [| CureMint |] transformationSpeech_Mint+transformationInstance [t| Karen |] [t| CureMo |] [t| CureAqua |] [| CureAqua |] transformationSpeech_Aqua+transformationInstance [t| Kurumi |] [t| MilkyPalette |] [t| MilkyRose |] [| MilkyRose |] transformationSpeech_MilkyRose++transformationInstance+ [t| (Nozomi, Rin, Urara, Komachi, Karen) |]+ [t| CureMo |]+ [t| (CureDream, CureRouge, CureLemonade, CureMint, CureAqua) |]+ [| (CureDream, CureRouge, CureLemonade, CureMint, CureAqua) |]+ transformationSpeech_Yes5++transformationInstance+ [t| (Nozomi, Rin, Urara, Komachi, Karen, Kurumi) |]+ [t| (CureMo, MilkyPalette) |]+ [t| (CureDream, CureRouge, CureLemonade, CureMint, CureAqua, MilkyRose) |]+ [| (CureDream, CureRouge, CureLemonade, CureMint, CureAqua, MilkyRose) |]+ transformationSpeech_Yes5GoGo++-- https://www.youtube.com/watch?v=bypPLRhJQCk+nonItemPurificationInstance [t| CureDream |] purificationSpeech_Dream_GoGo+nonItemPurificationInstance [t| CureRouge |] purificationSpeech_Rouge_GoGo+nonItemPurificationInstance [t| CureLemonade |] purificationSpeech_Lemonade_GoGo+nonItemPurificationInstance [t| CureMint |] purificationSpeech_Mint_GoGo+nonItemPurificationInstance [t| CureAqua |] purificationSpeech_Aqua_GoGo++purificationInstance [t| MilkyRose |] [t| MilkyPalette |] purificationSpeech_MilkyRose+purificationInstance [t| MilkyRose |] [t| MilkyMirror |] purificationSpeech_MilkyRose_Metal++purificationInstance+ [t| (CureDream, CureRouge, CureLemonade, CureMint, CureAqua) |]+ [t| (CrystalFlourez, FireFlourez, ShiningFlourez, ProtectFlourez, TornadoFlourez) |]+ purificationSpeech_Yes5GoGo
+ src/ACME/PreCure/Textbook/Yes5GoGo/Words.hs view
@@ -0,0 +1,56 @@+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}++module ACME.PreCure.Textbook.Yes5GoGo.Words where++import ACME.PreCure.Textbook.Yes5.Words+++groupName_Yes5GoGo = "Yes! プリキュア 5 GoGo!"++girlName_Kurumi = "美々野くるみ"++cureName_MilkyRose = "ミルキィローズ"++introducesHerselfAs_MilkyRose = "青いバラは秘密のしるし! ミルキィローズ!"++transformationSpeech_MilkyRose =+ ["スカイローズ・トランスレイト!", introducesHerselfAs_MilkyRose]++-- https://www.youtube.com/watch?v=cVEE_yXU0mM+transformationSpeech_Yes5GoGo =+ transformationSpeech_Yes5 ++ transformationSpeech_MilkyRose++purificationSpeech_Dream_GoGo =+ [purificationSpeech_Dream_Common, "プリキュア!シューティング・スター!"]+purificationSpeech_Rouge_GoGo =+ [purificationSpeech_Rouge_Common, "プリキュア!ファイヤー・ストライク!"]+purificationSpeech_Lemonade_GoGo =+ [purificationSpeech_Lemonade_Common, "プリキュア!プリズム・チェーン!"]+purificationSpeech_Mint_GoGo =+ [purificationSpeech_Mint_Common, "プリキュア!エメラルド・ソーサー!"]+purificationSpeech_Aqua_GoGo =+ [purificationSpeech_Aqua_Common, "プリキュア!サファイヤ・アロー!"]++purificationSpeech_MilkyRose =+ [ "邪悪な力を包み込む"+ , "バラの吹雪を咲かせましょう!"+ , "ミルキィローズ・ブリザード!"+ ]++purificationSpeech_MilkyRose_Metal =+ [ "邪悪な力を包み込む"+ , "煌くバラを咲かせましょう!"+ , "ミルキィローズ・メタル・ブリザード!"+ ]++-- https://www.youtube.com/watch?v=fC2tM3jOMeE+purificationSpeech_Yes5GoGo =+ [ "クリスタルフルーレ!希望の光!"+ , "ファイヤーフルーレ!情熱の光!"+ , "プロテクトフルーレ!安らぎの光!"+ , "トルネードフルーレ!知性の光!"+ , "5つの光に!"+ , "勇気をのせて!"+ , "プリキュア!レインボー・ローズ・エクスプロージョン!"+ , "行け!"+ ]
+ src/ACME/PreCure/Types.hs view
@@ -0,0 +1,39 @@+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TypeFamilies #-}++module ACME.PreCure.Types where+++-- g': A girl or a group of girls+-- i: A special item or a group of special items+class Transformation g' i' where+ type Style g' i'+ transformedStyle :: g' -> i' -> Style g' i'+ transformationSpeech :: g' -> i' -> [String]+++class Transformed t where+ cureName :: t -> String+ introducesHerselfAs :: t -> String+ variation :: t -> String+ variation _ = ""+++class TransformedGroup ts where+ groupName :: ts -> String+ groupVariation :: ts -> String+ groupVariation _ = ""+++-- p': A (transformed) precure or a group of precures+class Purification p' i' where+ purificationSpeech :: p' -> i' -> [String]+++class NonItemPurification p' where+ nonItemPurificationSpeech :: p' -> [String]+++-- g: A girl+class Girl g where+ humanName :: g -> String
+ src/ACME/PreCure/Types/TH.hs view
@@ -0,0 +1,84 @@+{-# LANGUAGE TemplateHaskell #-}++module ACME.PreCure.Types.TH where+++import ACME.PreCure.Types++import Language.Haskell.TH.Lib+ ( DecsQ+ , ExpQ+ , TypeQ+ , listE+ , stringE+ )+++girlInstance :: TypeQ -> String -> DecsQ+girlInstance typeq humanN =+ [d|+ instance Girl $(typeq) where+ humanName _ = $(stringE humanN)+ |]+++transformedInstance :: TypeQ -> String -> String -> String -> DecsQ+transformedInstance typeq cureN intro vari =+ [d|+ instance Transformed $(typeq) where+ cureName _ = $(stringE cureN)+ introducesHerselfAs _ = $(stringE intro)+ variation _ = $(stringE vari)+ |]+++transformedGroupInstance :: TypeQ -> String -> String -> DecsQ+transformedGroupInstance typeq groupN vari =+ [d|+ instance TransformedGroup $(typeq) where+ groupName _ = $(stringE groupN)+ groupVariation _ = $(stringE vari)+ |]+++transformedInstanceDefault :: TypeQ -> String -> String -> DecsQ+transformedInstanceDefault typeq cureN intro =+ [d|+ instance Transformed $(typeq) where+ cureName _ = $(stringE cureN)+ introducesHerselfAs _ = $(stringE intro)+ |]+++transformedGroupInstanceDefault :: TypeQ -> String -> DecsQ+transformedGroupInstanceDefault typeq groupN =+ [d|+ instance TransformedGroup $(typeq) where+ groupName _ = $(stringE groupN)+ |]+++transformationInstance :: TypeQ -> TypeQ -> TypeQ -> ExpQ -> [String] -> DecsQ+transformationInstance g' i' p' pvalue' speech =+ [d|+ instance Transformation $(g') $(i') where+ type Style $(g') $(i') = $(p')+ transformedStyle _ _ = $(pvalue')+ transformationSpeech _ _ = $(listE $ map stringE speech)+ |]+++purificationInstance :: TypeQ -> TypeQ -> [String] -> DecsQ+purificationInstance p' i' speech =+ [d|+ instance Purification $(p') $(i') where+ purificationSpeech _ _ = $(listE $ map stringE speech)+ |]+++nonItemPurificationInstance :: TypeQ -> [String] -> DecsQ+nonItemPurificationInstance p' speech =+ [d|+ instance NonItemPurification $(p') where+ nonItemPurificationSpeech _ = $(listE $ map stringE speech)+ |]
+ test/ACME/PreCureSpec.hs view
@@ -0,0 +1,70 @@+module ACME.PreCureSpec+ ( main+ , spec+ ) where+++import Test.Hspec++import ACME.PreCure+import ACME.PreCure.Textbook.First.Words+++main :: IO ()+main = hspec spec+++spec :: Spec+spec = do+ let specialForm = (CureMiracle_OverTheRainbow, CureMagical_OverTheRainbow, CureFelice_OverTheRainbow)++ describe "transformedStyle" $ do+ it "returns transformed precure" $ do+ (transformedStyle (Mirai, Liko) (Mofurun LinkleStoneDia)) `shouldBe` (CureMiracle, CureMagical)++ it "some precures can transform into special form" $ do+ (transformedStyle (CureMiracle, CureMagical, CureFelice) (Mofurun LinkleStoneAlexandrite, LinkleSmarthon LinkleStoneAlexandrite)) `shouldBe` specialForm++ describe "transformationSpeech" $ do+ it "returns group transformation speech of the pair" $ do+ (transformationSpeech (Mirai, Liko) (Mofurun LinkleStoneDia)) `shouldBe` ["キュアップ・ラパパ! ダイヤ!", "ミラクル・マジカル・ジュエリーレ!", "ふたりの奇跡!キュアミラクル!", "ふたりの魔法!キュアマジカル!", "魔法つかいプリキュア!!"]++ it "returns group transformation speech with alexandrite" $ do+ (transformationSpeech (CureMiracle, CureMagical, CureFelice) (Mofurun LinkleStoneAlexandrite, LinkleSmarthon LinkleStoneAlexandrite)) `shouldBe` ["キュアップ・ラパパ! アレキサンドライト!", "魔法つかいプリキュア! オーバー・ザ・レインボー!"]++ describe "purificationSpeech" $ do+ it "returns purification speech" $ do+ (purificationSpeech (CureMiracle, CureMagical) (Mofurun LinkleStoneDia, LinkleStick LinkleStoneDia)) `shouldBe` ["ダイヤ!永遠の輝きを私達の手に!", "フルフルリンクル!", "プリキュア!ダイヤモンド・エターナル!"]++ describe "TransformedGroup" $ do+ describe "CureMagical, CureMiracle, and CureFelice" $ do+ it "are Maho Girls PreCure" $ do+ groupName (CureMiracle, CureMagical, CureFelice) `shouldBe` "魔法つかいプリキュア!"++ it "Their variation is dia style" $ do+ groupVariation (CureMiracle, CureMagical, CureFelice) `shouldBe` "ダイヤスタイル"++ describe "CureMagical, CureMiracle, and CureFelice (special form)" $ do+ it "are Maho Girls PreCure" $ do+ groupName specialForm `shouldBe` "魔法つかいプリキュア!"++ it "Their variation is over the raibow style" $ do+ groupVariation specialForm `shouldBe` "オーバー・ザ・レインボー"++ let action = do+ transform (Nagisa, Honoka) (CardCommune_Mepple, CardCommune_Mipple) $ \(CureBlack, CureWhite) -> do+ purifyWithoutItem (CureBlack, CureWhite)+ purify (CureBlack, CureWhite) RainbowBrace++ describe "composeEpisode" $ do+ it "returns accumulated lines" $ do+ let actual = composeEpisode action+ expected =+ transformationSpeech_Black_White+ ++ purificationSpeech_Black_White+ ++ purificationSpeech_Black_White_RainbowStorm+ actual `shouldBe` expected++ describe "printEpisodeWith" $ do+ it "prints lines by line" $ do+ printEpisodeWith (defaultEpisodeConfig { lineIntervalMicroSec = 300 * 1000 }) action
+ test/Spec.hs view
@@ -0,0 +1,1 @@+{-# OPTIONS_GHC -F -pgmF hspec-discover #-}
+ typesafe-precure.cabal view
@@ -0,0 +1,102 @@+name: typesafe-precure+version: 0.1.0.0+synopsis: Type-safe transformations and purifications of PreCures (Japanese Battle Heroine)+description: See README.md for details.+homepage: https://github.com/igrep/typesafe-precure#readme+license: BSD3+license-file: LICENSE+author: Yuji Yamamoto+maintainer: whosekiteneverfly@gmail.com+copyright: 2016 Yuji Yamamoto+category: ACME+build-type: Simple+-- extra-source-files:+cabal-version: >=1.10++library+ hs-source-dirs: src+ ghc-options: -Wall+ exposed-modules: ACME.PreCure+ , ACME.PreCure.Textbook++ , ACME.PreCure.Textbook.First+ , ACME.PreCure.Textbook.First.Words+ , ACME.PreCure.Textbook.First.Types++ , ACME.PreCure.Textbook.MaxHeart+ , ACME.PreCure.Textbook.MaxHeart.Words+ , ACME.PreCure.Textbook.MaxHeart.Types++ , ACME.PreCure.Textbook.SplashStar+ , ACME.PreCure.Textbook.SplashStar.Words+ , ACME.PreCure.Textbook.SplashStar.Types++ , ACME.PreCure.Textbook.Yes5+ , ACME.PreCure.Textbook.Yes5.Words+ , ACME.PreCure.Textbook.Yes5.Types++ , ACME.PreCure.Textbook.Yes5GoGo+ , ACME.PreCure.Textbook.Yes5GoGo.Words+ , ACME.PreCure.Textbook.Yes5GoGo.Types++ , ACME.PreCure.Textbook.Fresh+ , ACME.PreCure.Textbook.Fresh.Words+ , ACME.PreCure.Textbook.Fresh.Types++ , ACME.PreCure.Textbook.HeartCatch+ , ACME.PreCure.Textbook.HeartCatch.Words+ , ACME.PreCure.Textbook.HeartCatch.Types++ , ACME.PreCure.Textbook.Suite+ , ACME.PreCure.Textbook.Suite.Words+ , ACME.PreCure.Textbook.Suite.Types++ , ACME.PreCure.Textbook.Smile+ , ACME.PreCure.Textbook.Smile.Words+ , ACME.PreCure.Textbook.Smile.Types++ , ACME.PreCure.Textbook.Dokidoki+ , ACME.PreCure.Textbook.Dokidoki.Words+ , ACME.PreCure.Textbook.Dokidoki.Types++ , ACME.PreCure.Textbook.HappinessCharge+ , ACME.PreCure.Textbook.HappinessCharge.Words+ , ACME.PreCure.Textbook.HappinessCharge.Types++ , ACME.PreCure.Textbook.GoPrincess+ , ACME.PreCure.Textbook.GoPrincess.Words+ , ACME.PreCure.Textbook.GoPrincess.Types++ , ACME.PreCure.Textbook.Movie+ , ACME.PreCure.Textbook.Movie.Words+ , ACME.PreCure.Textbook.Movie.Types++ , ACME.PreCure.Textbook.MahoGirls+ , ACME.PreCure.Textbook.MahoGirls.Types+ , ACME.PreCure.Textbook.MahoGirls.Words++ , ACME.PreCure.Types+ , ACME.PreCure.Monad+ other-modules: ACME.PreCure.Types.TH+ build-depends: base >= 4.7 && < 5+ -- TODO: specify version+ , monad-skeleton+ , dlist+ , template-haskell+ default-language: Haskell2010++test-suite typesafe-precure-test+ type: exitcode-stdio-1.0+ hs-source-dirs: test+ ghc-options: -Wall+ main-is: Spec.hs+ other-modules: ACME.PreCureSpec+ build-depends: base+ , typesafe-precure+ , hspec+ ghc-options: -threaded -rtsopts -with-rtsopts=-N+ default-language: Haskell2010++source-repository head+ type: git+ location: https://github.com/igrep/typesafe-precure