Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 5216804

Browse files
piq9117Gitea
piq9117
authored and
Gitea
committed
Generate Main (#4)
- generate src directory - generate src/Main.purs
1 parent 8ebc744 commit 5216804

File tree

3 files changed

+46
-0
lines changed

3 files changed

+46
-0
lines changed

‎src/UmuReactBasic/Capability/ManageCommand.hs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ generateProj mLoc = do
2525
writeSrcDir mLoc
2626
writeHtmlDir mLoc
2727
writeIndexHtml mLoc
28+
writeSrcMainFile mLoc
2829

2930
writeSrcDir :: MonadIO m => Maybe Text -> m ()
3031
writeSrcDir mLoc = do
@@ -41,3 +42,9 @@ writeIndexHtml mLoc = do
4142
liftIO $ TP.writeTextFile
4243
( Turtle.fromText $ mkPathName mLoc "/html/index.html" ) indexHtmlFile
4344
mkMessage "Generating html/index.html..."
45+
46+
writeSrcMainFile :: MonadIO m => Maybe Text -> m ()
47+
writeSrcMainFile mLoc = do
48+
liftIO $ TP.writeTextFile
49+
( Turtle.fromText $ mkPathName mLoc "/src/Main.purs" ) srcMainFile
50+
mkMessage "Generating src/Main.purs..."

‎src/UmuReactBasic/Templates.hs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
{-# LANGUAGE TemplateHaskell #-}
22
module UmuReactBasic.Templates
33
( indexHtmlFile
4+
, srcMainFile
45
) where
56

67
import Import
78
import UmuReactBasic.TH
89

910
indexHtmlFile :: Text
1011
indexHtmlFile = $(embedFileUtf8 "templates/index.html")
12+
13+
srcMainFile :: Text
14+
srcMainFile = $(embedFileUtf8 "templates/SrcMain.purs")

‎templates/SrcMain.purs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
module Main where
2+
3+
import Prelude ( Unit, bind, map, ($), (=<<), const, pure )
4+
import Data.Maybe ( Maybe(..) )
5+
-- Internal Component
6+
import Component.Title
7+
-- Web
8+
import Web.DOM.NonElementParentNode ( getElementById )
9+
import Web.HTML.HTMLDocument ( toNonElementParentNode )
10+
import Web.HTML.Window ( document )
11+
import Web.HTML ( window )
12+
-- Effect
13+
import Effect ( Effect )
14+
import Effect.Exception ( throw )
15+
-- React
16+
import React.Basic.Hooks ( element, ReactComponent, component )
17+
import React.Basic.DOM as R
18+
19+
mkMainComponent :: Effect ( ReactComponent {} )
20+
mkMainComponent = do
21+
title <- mkTitle
22+
component "Main" $ const React.do
23+
pure $
24+
R.div_
25+
[ element title { text: "Hello, World" }
26+
]
27+
28+
main :: Effect Unit
29+
main = do
30+
mApp <- getElementById "app" =<< ( map toNonElementParentNode $ document =<< window )
31+
case mApp of
32+
Nothing -> throw "App element not found."
33+
Just app -> do
34+
mainComponent <- mkMainComponent
35+
R.render ( element mainComponent {} ) app

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /