web: cleanup
This commit is contained in:
		
							parent
							
								
									b5c39dfa8f
								
							
						
					
					
						commit
						f2ac47b567
					
				| @ -1,7 +1,7 @@ | |||||||
| ^{accountsheading} | ^{accountsheading} | ||||||
| <table.balancereport> | <table.balancereport> | ||||||
|  $forall i <- items |  $forall i <- items | ||||||
|   ^{itemAsHtml' i} |   ^{itemAsHtml vd i} | ||||||
|  <tr.totalrule> |  <tr.totalrule> | ||||||
|   <td colspan=2> |   <td colspan=2> | ||||||
|  <tr> |  <tr> | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
|      <tr.item | <tr.item | ||||||
|       <td.account |  <td.account | ||||||
|        #{indent} |   #{indent} | ||||||
|        <a href="@{here}?a=#{acctpat}#{pparam}">#{adisplay} |   <a href="@{here}?a=#{acctpat}#{pparam}">#{adisplay} | ||||||
|       <td.balance align=right>#{mixedAmountAsHtml abal} |  <td.balance align=right>#{mixedAmountAsHtml abal} | ||||||
|  | |||||||
| @ -1,21 +1,21 @@ | |||||||
|  <form#editform method=POST style=display:none; | <form#editform method=POST style=display:none; | ||||||
|   <table.form#editform |  <table.form#editform | ||||||
|    $if manyfiles |   $if manyfiles | ||||||
|     <tr |  | ||||||
|      <td colspan=2 |  | ||||||
|       Editing ^{journalselect $ files j} |  | ||||||
|    <tr |    <tr | ||||||
|     <td colspan=2 |     <td colspan=2 | ||||||
|      <!-- XXX textarea ids are unquoted journal file paths here, not valid html --> |      Editing ^{journalselect $ files j} | ||||||
|      $forall f <- files j |   <tr | ||||||
|       <textarea id=#{fst f}_textarea name=text rows=25 cols=80 style=display:none; disabled=disabled |    <td colspan=2 | ||||||
|        #{snd f} |     <!-- XXX textarea ids are unquoted journal file paths here, not valid html --> | ||||||
|    <tr#addbuttonrow |     $forall f <- files j | ||||||
|     <td |      <textarea id=#{fst f}_textarea name=text rows=25 cols=80 style=display:none; disabled=disabled | ||||||
|      <span.help>^{formathelp} |       #{snd f} | ||||||
|     <td align=right |   <tr#addbuttonrow | ||||||
|      <span.help Are you sure ? This will overwrite the journal. # |    <td | ||||||
|      <input type=hidden name=action value=edit |     <span.help>^{formathelp} | ||||||
|      <input type=submit name=submit value="save journal" |    <td align=right | ||||||
|      \ or # |     <span.help Are you sure ? This will overwrite the journal. # | ||||||
|      <a href onclick="return editformToggle(event)">cancel |     <input type=hidden name=action value=edit | ||||||
|  |     <input type=submit name=submit value="save journal" | ||||||
|  |     \ or # | ||||||
|  |     <a href onclick="return editformToggle(event)">cancel | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
|   <a#addformlink href onclick="return addformToggle(event)">add transaction | <a#addformlink href onclick="return addformToggle(event)">add transaction | ||||||
|   <a#importformlink href onclick="return importformToggle(event)" style="display:none;">import transactions | <a#importformlink href onclick="return importformToggle(event)" style="display:none;">import transactions | ||||||
|   \ | # | \ | # | ||||||
|   <a#editformlink href onclick="return editformToggle(event)">edit journal | <a#editformlink href onclick="return editformToggle(event)">edit journal | ||||||
|  | |||||||
| @ -1,25 +1,25 @@ | |||||||
|  <div#filterformdiv | <div#filterformdiv | ||||||
|   <form#filterform.form method=GET style=display:#{visible}; |  <form#filterform.form method=GET style=display:#{visible}; | ||||||
|    <table.form |   <table.form | ||||||
|     <tr.#{filteringperiodclass} |    <tr.#{filteringperiodclass} | ||||||
|      <td |     <td | ||||||
|       filter by period: |      filter by period: | ||||||
|       \ # |      \ # | ||||||
|      <td |     <td | ||||||
|       <input name=p size=60 value=#{p} |      <input name=p size=60 value=#{p} | ||||||
|       ^{phelp} |      ^{phelp} | ||||||
|       \ # |      \ # | ||||||
|      <td align=right |     <td align=right | ||||||
|       ^{stopfilteringperiod} |      ^{stopfilteringperiod} | ||||||
|     <tr.#{filteringclass} |    <tr.#{filteringclass} | ||||||
|      <td |     <td | ||||||
|       filter by account/description: |      filter by account/description: | ||||||
|       \ # |      \ # | ||||||
|      <td |     <td | ||||||
|       <input name=a size=60 value=#{a} |      <input name=a size=60 value=#{a} | ||||||
|       ^{ahelp} |      ^{ahelp} | ||||||
|       \ # |      \ # | ||||||
|       <input type=submit value=filter # |      <input type=submit value=filter # | ||||||
|       \ # |      \ # | ||||||
|      <td align=right |     <td align=right | ||||||
|       ^{stopfiltering} |      ^{stopfiltering} | ||||||
|  | |||||||
| @ -1,9 +1,9 @@ | |||||||
|  <form#importform method=POST style=display:none; | <form#importform method=POST style=display:none; | ||||||
|   <table.form |  <table.form | ||||||
|    <tr |   <tr | ||||||
|     <td |    <td | ||||||
|      <input type=file name=file |     <input type=file name=file | ||||||
|      <input type=hidden name=action value=import |     <input type=hidden name=action value=import | ||||||
|      <input type=submit name=submit value="import from file" |     <input type=submit name=submit value="import from file" | ||||||
|      \ or # |     \ or # | ||||||
|      <a href onclick="return importformToggle(event)" cancel |     <a href onclick="return importformToggle(event)" cancel | ||||||
|  | |||||||
| @ -1,3 +1,3 @@ | |||||||
| <table.journalreport> | <table.journalreport> | ||||||
|  $forall i <- number items |  $forall i <- numbered items | ||||||
|   ^{itemAsHtml' i} |   ^{itemAsHtml vd i} | ||||||
|  | |||||||
| @ -1,3 +1,3 @@ | |||||||
|      <tr.item.#{evenodd} > | <tr.item.#{evenodd}> | ||||||
|       <td.transaction> |  <td.transaction> | ||||||
|        <pre> #{txn} |   <pre>#{txn} | ||||||
|  | |||||||
| @ -1,3 +1,3 @@ | |||||||
|      <select id=journalselect name=journal onchange="editformJournalSelect(event)" | <select id=journalselect name=journal onchange="editformJournalSelect(event)" | ||||||
|       $forall f <- journalfiles |  $forall f <- journalfiles | ||||||
|        <option value=#{fst f}>#{fst f} |   <option value=#{fst f}>#{fst f} | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
|  <div#navlinks | <div#navlinks | ||||||
|   ^{accountsjournallink} |  ^{accountsjournallink} | ||||||
|   \ | # |  \ | # | ||||||
|   ^{accountsregisterlink} |  ^{accountsregisterlink} | ||||||
|   \ | # |  \ | # | ||||||
|   ^{editlinks} |  ^{editlinks} | ||||||
|  | |||||||
| @ -1,15 +1,15 @@ | |||||||
|  <tr#postingrow | <tr#postingrow | ||||||
|   <td align=right>#{acctlabel}: |  <td align=right>#{acctlabel}: | ||||||
|   <td |  <td | ||||||
|    <select id=#{acctvar} name=#{acctvar} |   <select id=#{acctvar} name=#{acctvar} | ||||||
|     <option |    <option | ||||||
|     $forall a <- acctnames |    $forall a <- acctnames | ||||||
|      <option value=#{a}>#{a} |     <option value=#{a}>#{a} | ||||||
|   ^{amtfield} |  ^{amtfield} | ||||||
|  <tr.helprow | <tr.helprow | ||||||
|   <td |  <td | ||||||
|   <td |  <td | ||||||
|    <span.help>#{accthelp} |   <span.help>#{accthelp} | ||||||
|   <td |  <td | ||||||
|   <td |  <td | ||||||
|    <span.help>#{amthelp} |   <span.help>#{amthelp} | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
|                        <td style=padding-left:1em; | <td style=padding-left:1em; | ||||||
|                         Amount: |  Amount: | ||||||
|                        <td | <td | ||||||
|                         <input.textinput size=15 name=#{amtvar} value="" |  <input.textinput size=15 name=#{amtvar} value="" | ||||||
|  | |||||||
| @ -5,5 +5,5 @@ | |||||||
|   <th.account align=left Account |   <th.account align=left Account | ||||||
|   <th.amount align=right Amount |   <th.amount align=right Amount | ||||||
|   <th.balance align=right Balance |   <th.balance align=right Balance | ||||||
|  $forall i <- number items |  $forall i <- numbered items | ||||||
|   ^{itemAsHtml' i} |   ^{itemAsHtml vd i} | ||||||
|  | |||||||
| @ -1,7 +1,6 @@ | |||||||
|      <tr.item.#{evenodd}.#{firstposting} | <tr.item.#{evenodd}.#{firstposting} | ||||||
|       <td.date>#{date} |  <td.date>#{date} | ||||||
|       <td.description>#{desc} |  <td.description>#{desc} | ||||||
|       <td.account |  <td.account><a href="@{here}?a=#{acctpat}#{pparam}">#{acct} | ||||||
|        <a href="@{here}?a=#{acctpat}#{pparam}">#{acct} |  <td.amount align=right>#{mixedAmountAsHtml $ pamount posting} | ||||||
|       <td.amount align=right>#{mixedAmountAsHtml $ pamount posting} |  <td.balance align=right>#{mixedAmountAsHtml b} | ||||||
|       <td.balance align=right>#{mixedAmountAsHtml b} |  | ||||||
|  | |||||||
| @ -81,8 +81,8 @@ instance Yesod App where | |||||||
|             addCassius $(Settings.cassiusFile "default-layout") |             addCassius $(Settings.cassiusFile "default-layout") | ||||||
|         hamletToRepHtml $(Settings.hamletFile "default-layout") |         hamletToRepHtml $(Settings.hamletFile "default-layout") | ||||||
| 
 | 
 | ||||||
|     -- This is done to provide an optimization for serving static files from |     -- -- This is done to provide an optimization for serving static files from | ||||||
|     -- a separate domain. Please see the staticroot setting in Settings.hs |     -- -- a separate domain. Please see the staticroot setting in Settings.hs | ||||||
|     -- urlRenderOverride a (StaticR s) = |     -- urlRenderOverride a (StaticR s) = | ||||||
|     --     Just $ uncurry (joinPath a Settings.staticroot) $ renderRoute s |     --     Just $ uncurry (joinPath a Settings.staticroot) $ renderRoute s | ||||||
|     -- urlRenderOverride _ _ = Nothing |     -- urlRenderOverride _ _ = Nothing | ||||||
|  | |||||||
| @ -2,24 +2,22 @@ | |||||||
| {-# LANGUAGE MultiParamTypeClasses #-} | {-# LANGUAGE MultiParamTypeClasses #-} | ||||||
| {-# LANGUAGE OverloadedStrings #-} | {-# LANGUAGE OverloadedStrings #-} | ||||||
| {-# OPTIONS_GHC -fno-warn-orphans #-} | {-# OPTIONS_GHC -fno-warn-orphans #-} | ||||||
| module AppRun | module AppRun ( | ||||||
|     ( withApp |                withApp | ||||||
|     , withDevelApp |               ,withDevelApp | ||||||
|     ) where |               ) | ||||||
|  | where | ||||||
| 
 | 
 | ||||||
| import App |  | ||||||
| import Settings |  | ||||||
| import Yesod.Helpers.Static |  | ||||||
| -- import Data.ByteString (ByteString) |  | ||||||
| import Network.Wai (Application) |  | ||||||
| import Data.Dynamic (Dynamic, toDyn) | import Data.Dynamic (Dynamic, toDyn) | ||||||
| -- import System.FilePath ((</>)) | import Network.Wai (Application) | ||||||
| 
 | import Yesod.Helpers.Static | ||||||
| -- Import all relevant handler modules here. |  | ||||||
| import Handlers |  | ||||||
| 
 | 
 | ||||||
| import Hledger.Data (nulljournal) | import Hledger.Data (nulljournal) | ||||||
| 
 | 
 | ||||||
|  | import App | ||||||
|  | import Handlers | ||||||
|  | import Settings | ||||||
|  | 
 | ||||||
| -- This line actually creates our YesodSite instance. It is the second half | -- This line actually creates our YesodSite instance. It is the second half | ||||||
| -- of the call to mkYesodData which occurs in App.hs. Please see | -- of the call to mkYesodData which occurs in App.hs. Please see | ||||||
| -- the comments there for more details. | -- the comments there for more details. | ||||||
| @ -30,13 +28,9 @@ mkYesodDispatch "App" resourcesApp | |||||||
| -- place to put your migrate statements to have automatic database | -- place to put your migrate statements to have automatic database | ||||||
| -- migrations handled by Yesod. | -- migrations handled by Yesod. | ||||||
| withApp :: App -> (Application -> IO a) -> IO a | withApp :: App -> (Application -> IO a) -> IO a | ||||||
| withApp a f = do | withApp a f = toWaiApp a >>= f | ||||||
|     toWaiApp a >>= f |  | ||||||
|   -- where |  | ||||||
|   --   s = static Settings.staticdir |  | ||||||
| 
 | 
 | ||||||
| withDevelApp :: Dynamic | withDevelApp :: Dynamic | ||||||
| -- withDevelApp = undefined |  | ||||||
| withDevelApp = toDyn (withApp a :: (Application -> IO ()) -> IO ()) | withDevelApp = toDyn (withApp a :: (Application -> IO ()) -> IO ()) | ||||||
|    where a = App{ |    where a = App{ | ||||||
|               getStatic=static Settings.staticdir |               getStatic=static Settings.staticdir | ||||||
| @ -45,4 +39,3 @@ withDevelApp = toDyn (withApp a :: (Application -> IO ()) -> IO ()) | |||||||
|              ,appArgs=[] |              ,appArgs=[] | ||||||
|              ,appJournal=nulljournal |              ,appJournal=nulljournal | ||||||
|              } |              } | ||||||
| 
 |  | ||||||
|  | |||||||
| @ -57,7 +57,6 @@ getJournalR = do | |||||||
|   vd@VD{opts=opts,fspec=fspec,j=j} <- getViewData |   vd@VD{opts=opts,fspec=fspec,j=j} <- getViewData | ||||||
|   let sidecontent = balanceReportAsHtml opts vd $ balanceReport opts fspec j |   let sidecontent = balanceReportAsHtml opts vd $ balanceReport opts fspec j | ||||||
|       maincontent = journalReportAsHtml opts vd $ journalReport opts fspec j |       maincontent = journalReportAsHtml opts vd $ journalReport opts fspec j | ||||||
|       editform' = editform vd |  | ||||||
|   defaultLayout $ do |   defaultLayout $ do | ||||||
|       setTitle "hledger-web journal" |       setTitle "hledger-web journal" | ||||||
|       addHamlet $(Settings.hamletFile "journal") |       addHamlet $(Settings.hamletFile "journal") | ||||||
| @ -115,7 +114,6 @@ getAccountsOnlyR = do | |||||||
| balanceReportAsHtml :: [Opt] -> ViewData -> BalanceReport -> Hamlet AppRoute | balanceReportAsHtml :: [Opt] -> ViewData -> BalanceReport -> Hamlet AppRoute | ||||||
| balanceReportAsHtml _ vd@VD{here=here,a=a,p=p} (items,total) = $(Settings.hamletFile "balancereport") | balanceReportAsHtml _ vd@VD{here=here,a=a,p=p} (items,total) = $(Settings.hamletFile "balancereport") | ||||||
|  where |  where | ||||||
|    itemAsHtml' = itemAsHtml vd |  | ||||||
|    itemAsHtml :: ViewData -> BalanceReportItem -> Hamlet AppRoute |    itemAsHtml :: ViewData -> BalanceReportItem -> Hamlet AppRoute | ||||||
|    itemAsHtml VD{p=p} (acct, adisplay, adepth, abal) = $(Settings.hamletFile "balancereportitem") |    itemAsHtml VD{p=p} (acct, adisplay, adepth, abal) = $(Settings.hamletFile "balancereportitem") | ||||||
|      where |      where | ||||||
| @ -143,8 +141,6 @@ balanceReportAsHtml _ vd@VD{here=here,a=a,p=p} (items,total) = $(Settings.hamlet | |||||||
| journalReportAsHtml :: [Opt] -> ViewData -> JournalReport -> Hamlet AppRoute | journalReportAsHtml :: [Opt] -> ViewData -> JournalReport -> Hamlet AppRoute | ||||||
| journalReportAsHtml _ vd items = $(Settings.hamletFile "journalreport") | journalReportAsHtml _ vd items = $(Settings.hamletFile "journalreport") | ||||||
|  where |  where | ||||||
|    number = zip [1..] |  | ||||||
|    itemAsHtml' = itemAsHtml vd |  | ||||||
|    itemAsHtml :: ViewData -> (Int, JournalReportItem) -> Hamlet AppRoute |    itemAsHtml :: ViewData -> (Int, JournalReportItem) -> Hamlet AppRoute | ||||||
|    itemAsHtml _ (n, t) = $(Settings.hamletFile "journalreportitem") |    itemAsHtml _ (n, t) = $(Settings.hamletFile "journalreportitem") | ||||||
|      where |      where | ||||||
| @ -155,8 +151,6 @@ journalReportAsHtml _ vd items = $(Settings.hamletFile "journalreport") | |||||||
| registerReportAsHtml :: [Opt] -> ViewData -> RegisterReport -> Hamlet AppRoute | registerReportAsHtml :: [Opt] -> ViewData -> RegisterReport -> Hamlet AppRoute | ||||||
| registerReportAsHtml _ vd items = $(Settings.hamletFile "registerreport") | registerReportAsHtml _ vd items = $(Settings.hamletFile "registerreport") | ||||||
|  where |  where | ||||||
|    number = zip [1..] |  | ||||||
|    itemAsHtml' = itemAsHtml vd |  | ||||||
|    itemAsHtml :: ViewData -> (Int, RegisterReportItem) -> Hamlet AppRoute |    itemAsHtml :: ViewData -> (Int, RegisterReportItem) -> Hamlet AppRoute | ||||||
|    itemAsHtml VD{here=here,p=p} (n, (ds, posting, b)) = $(Settings.hamletFile "registerreportitem") |    itemAsHtml VD{here=here,p=p} (n, (ds, posting, b)) = $(Settings.hamletFile "registerreportitem") | ||||||
|      where |      where | ||||||
| @ -494,3 +488,4 @@ words' = fromparse . parsewith ((quotedPattern <|> pattern) `sepBy` many1 spacen | |||||||
|       pattern = many (noneOf " \n\r\"") |       pattern = many (noneOf " \n\r\"") | ||||||
|       quotedPattern = between (oneOf "'\"") (oneOf "'\"") $ many $ noneOf "'\"" |       quotedPattern = between (oneOf "'\"") (oneOf "'\"") $ many $ noneOf "'\"" | ||||||
| 
 | 
 | ||||||
|  | numbered = zip [1..] | ||||||
|  | |||||||
| @ -16,10 +16,10 @@ module Settings | |||||||
|     , widgetFile |     , widgetFile | ||||||
|     , datadir |     , datadir | ||||||
|     , staticdir |     , staticdir | ||||||
|  |     -- , staticroot | ||||||
|     , defhost |     , defhost | ||||||
|     , defport |     , defport | ||||||
|     , defapproot |     , defapproot | ||||||
|     -- , staticroot |  | ||||||
|     -- , browserstartdelay |     -- , browserstartdelay | ||||||
|     , hledgerorgurl |     , hledgerorgurl | ||||||
|     , manualurl |     , manualurl | ||||||
| @ -65,27 +65,27 @@ defapproot = pack $ printf "http://%s:%d" defhost defport | |||||||
| datadir :: FilePath | datadir :: FilePath | ||||||
| datadir = "./.hledger/web/" | datadir = "./.hledger/web/" | ||||||
| 
 | 
 | ||||||
|  | -- -- | The base URL for your static files. As you can see by the default | ||||||
|  | -- -- value, this can simply be "static" appended to your application root. | ||||||
|  | -- -- A powerful optimization can be serving static files from a separate | ||||||
|  | -- -- domain name. This allows you to use a web server optimized for static | ||||||
|  | -- -- files, more easily set expires and cache values, and avoid possibly | ||||||
|  | -- -- costly transference of cookies on static files. For more information, | ||||||
|  | -- -- please see: | ||||||
|  | -- --   http://code.google.com/speed/page-speed/docs/request.html#ServeFromCookielessDomain | ||||||
|  | -- -- | ||||||
|  | -- -- If you change the resource pattern for StaticR in hledger-web.hs, you will | ||||||
|  | -- -- have to make a corresponding change here. | ||||||
|  | -- -- | ||||||
|  | -- -- To see how this value is used, see urlRenderOverride in hledger-web.hs | ||||||
|  | -- staticroot :: Text | ||||||
|  | -- staticroot = defapproot `mappend` "/static" | ||||||
|  | 
 | ||||||
| -- | The location of static files on your system. This is a file system | -- | The location of static files on your system. This is a file system | ||||||
| -- path. The default value works properly with your scaffolded site. | -- path. The default value works properly with your scaffolded site. | ||||||
| staticdir :: FilePath | staticdir :: FilePath | ||||||
| staticdir = datadir++"static" | staticdir = datadir++"static" | ||||||
| 
 | 
 | ||||||
| -- | The base URL for your static files. As you can see by the default |  | ||||||
| -- value, this can simply be "static" appended to your application root. |  | ||||||
| -- A powerful optimization can be serving static files from a separate |  | ||||||
| -- domain name. This allows you to use a web server optimized for static |  | ||||||
| -- files, more easily set expires and cache values, and avoid possibly |  | ||||||
| -- costly transference of cookies on static files. For more information, |  | ||||||
| -- please see: |  | ||||||
| --   http://code.google.com/speed/page-speed/docs/request.html#ServeFromCookielessDomain |  | ||||||
| -- |  | ||||||
| -- If you change the resource pattern for StaticR in hledger-web.hs, you will |  | ||||||
| -- have to make a corresponding change here. |  | ||||||
| -- |  | ||||||
| -- To see how this value is used, see urlRenderOverride in hledger-web.hs |  | ||||||
| -- staticroot :: Text |  | ||||||
| -- staticroot = defapproot `mappend` "/static" |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| -- The rest of this file contains settings which rarely need changing by a | -- The rest of this file contains settings which rarely need changing by a | ||||||
|  | |||||||
| @ -43,7 +43,6 @@ Flag devel | |||||||
| 
 | 
 | ||||||
| executable hledger-web | executable hledger-web | ||||||
|   main-is:        hledger-web.hs |   main-is:        hledger-web.hs | ||||||
|   -- hs-source-dirs: ., config |  | ||||||
|   if flag(devel) |   if flag(devel) | ||||||
|       Buildable: False |       Buildable: False | ||||||
|   if flag(production) |   if flag(production) | ||||||
| @ -109,33 +108,3 @@ library | |||||||
|                      Settings |                      Settings | ||||||
|                      StaticFiles |                      StaticFiles | ||||||
|                      Handlers |                      Handlers | ||||||
| 
 |  | ||||||
| -- executable         hledger-web |  | ||||||
|     -- if flag(devel) |  | ||||||
|     --     Buildable: False |  | ||||||
| 
 |  | ||||||
|     -- if flag(production) |  | ||||||
|     --     cpp-options:   -DPRODUCTION |  | ||||||
|     --     ghc-options:   -Wall -threaded -O2 |  | ||||||
|     -- else |  | ||||||
|     --     ghc-options:   -Wall -threaded |  | ||||||
| 
 |  | ||||||
|     -- main-is:       config/hledger-web.hs |  | ||||||
|     -- hs-source-dirs: ., config |  | ||||||
| 
 |  | ||||||
|     -- build-depends: base         >= 4       && < 5 |  | ||||||
|     --              , yesod-core   >= 0.8     && < 0.9 |  | ||||||
|     --              , yesod-static |  | ||||||
|     --              , wai-extra |  | ||||||
|     --              , directory |  | ||||||
|     --              , bytestring |  | ||||||
|     --              , text |  | ||||||
|     --              , template-haskell |  | ||||||
|     --              , hamlet |  | ||||||
|     --              , web-routes |  | ||||||
|     --              , transformers |  | ||||||
|     --              , wai |  | ||||||
|     --              , warp |  | ||||||
|     --              , blaze-builder |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| /static          StaticR Static getStatic | /static          StaticR        Static getStatic | ||||||
| /favicon.ico     FaviconR       GET | /favicon.ico     FaviconR       GET | ||||||
| /robots.txt      RobotsR        GET | /robots.txt      RobotsR        GET | ||||||
| /                RootR          GET | /                RootR          GET | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user