mirror of
https://gitlab.com/upRootNutrition/website.git
synced 2025-06-16 12:25:12 -05:00
feat: refactoring and tidying up
This commit is contained in:
parent
62be86f2f9
commit
2295c85fca
112 changed files with 862 additions and 1698 deletions
145
frontend/src/Config/Helpers/Articles/Article.elm
Normal file
145
frontend/src/Config/Helpers/Articles/Article.elm
Normal file
|
@ -0,0 +1,145 @@
|
|||
module Config.Helpers.Articles.Article exposing (..)
|
||||
|
||||
import Config.Data.Identity exposing (pageNames)
|
||||
import Config.Helpers.Articles.Types exposing (References)
|
||||
import Config.Helpers.CardFormat
|
||||
exposing
|
||||
( cardContentSpacing
|
||||
, cardFormatter
|
||||
, cardMaker
|
||||
, cardSubTitleMaker
|
||||
, cardTitleMaker
|
||||
, desktopCardMaker
|
||||
, desktopImageBoxSize
|
||||
, desktopImageSize
|
||||
, fieldSpacer
|
||||
, mobileCardMaker
|
||||
, mobileImageBoxSize
|
||||
, mobileImageSize
|
||||
, topLevelBox
|
||||
)
|
||||
import Config.Helpers.Format exposing (..)
|
||||
import Config.Helpers.Headers.Header exposing (headerMaker)
|
||||
import Config.Helpers.Headers.Types exposing (Header)
|
||||
import Config.Helpers.Markdown exposing (..)
|
||||
import Config.Helpers.Response
|
||||
exposing
|
||||
( pageList
|
||||
, topLevelContainer
|
||||
)
|
||||
import Config.Helpers.StrengthBar
|
||||
exposing
|
||||
( barMaker
|
||||
, barPadding
|
||||
)
|
||||
import Config.Helpers.ToolTip exposing (..)
|
||||
import Config.Helpers.Viewport exposing (resetViewport)
|
||||
import Config.Pages.Blog.Types exposing (BlogArticle)
|
||||
import Config.Pages.Contact.Types exposing (..)
|
||||
import Config.Pages.Interviews.Types exposing (..)
|
||||
import Config.Pages.Products.Types exposing (..)
|
||||
import Config.Style.Colour exposing (colourTheme)
|
||||
import Config.Style.Transitions
|
||||
exposing
|
||||
( hoverFontDarkOrange
|
||||
, transitionStyleFast
|
||||
, transitionStyleSlow
|
||||
)
|
||||
import Effect exposing (Effect)
|
||||
import Element as E exposing (..)
|
||||
import Element.Background as B
|
||||
import Element.Border as D
|
||||
import Element.Font as F
|
||||
import Html
|
||||
import Html.Attributes as H exposing (style)
|
||||
import Layouts
|
||||
import Page exposing (Page)
|
||||
import Route exposing (Route)
|
||||
import Shared exposing (..)
|
||||
import View exposing (View)
|
||||
|
||||
|
||||
articleMaker : BlogArticle -> Element msg
|
||||
articleMaker article =
|
||||
column
|
||||
topLevelBox
|
||||
[ cardMaker
|
||||
[ cardTitleMaker (String.toUpper article.articleName)
|
||||
, cardFormatter
|
||||
[ cardContentSpacing
|
||||
[ column
|
||||
fieldSpacer
|
||||
[ cardSubTitleMaker
|
||||
[ articleImage article.articleImage
|
||||
, renderDeviceMarkdown article.articleBody
|
||||
, case article.hasReferences of
|
||||
True ->
|
||||
articleReferences article
|
||||
|
||||
False ->
|
||||
none
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
articleReferences : BlogArticle -> Element msg
|
||||
articleReferences article =
|
||||
el
|
||||
[ width fill
|
||||
, height fill
|
||||
]
|
||||
<|
|
||||
column [ width fill, F.size 15, spacing 10 ] <|
|
||||
List.map2 (\x y -> makeReference x y)
|
||||
article.articleReferences
|
||||
(List.range 1 (List.length article.articleReferences))
|
||||
|
||||
|
||||
makeReference : References -> Int -> Element msg
|
||||
makeReference references index =
|
||||
el
|
||||
[ F.regular
|
||||
, F.alignLeft
|
||||
]
|
||||
<|
|
||||
paragraph []
|
||||
[ newTabLink
|
||||
[ F.bold
|
||||
, F.color colourTheme.textLightOrange
|
||||
, hoverFontDarkOrange
|
||||
, transitionStyleFast
|
||||
]
|
||||
{ url = references.link, label = text (String.fromInt index ++ ". ") }
|
||||
, text (references.author ++ ", ")
|
||||
, text (references.title ++ ", ")
|
||||
, text (references.journal ++ ", ")
|
||||
, text references.year
|
||||
]
|
||||
|
||||
|
||||
extractFirstWords : String -> String
|
||||
extractFirstWords text =
|
||||
let
|
||||
words =
|
||||
text
|
||||
|> String.split " "
|
||||
|> List.filter (not << String.isEmpty)
|
||||
|
||||
truncatedWords =
|
||||
List.take 80 words
|
||||
|
||||
wasTextTruncated =
|
||||
List.length words > 80
|
||||
|
||||
result =
|
||||
String.join " " truncatedWords
|
||||
in
|
||||
if wasTextTruncated then
|
||||
result ++ "..."
|
||||
|
||||
else
|
||||
result
|
10
frontend/src/Config/Helpers/Articles/Types.elm
Executable file
10
frontend/src/Config/Helpers/Articles/Types.elm
Executable file
|
@ -0,0 +1,10 @@
|
|||
module Config.Helpers.Articles.Types exposing (..)
|
||||
|
||||
|
||||
type alias References =
|
||||
{ author : String
|
||||
, title : String
|
||||
, link : String
|
||||
, year : String
|
||||
, journal : String
|
||||
}
|
|
@ -37,12 +37,7 @@ topLevelBox =
|
|||
, E.height fill
|
||||
, E.alignTop
|
||||
, E.alignRight
|
||||
, paddingEach
|
||||
{ top = 10
|
||||
, bottom = 10
|
||||
, left = 10
|
||||
, right = 10
|
||||
}
|
||||
, padding 10
|
||||
]
|
||||
|
||||
|
||||
|
@ -64,12 +59,7 @@ cardFormatter =
|
|||
, E.width fill
|
||||
, centerX
|
||||
, B.color colourTheme.backgroundDarkGrey
|
||||
, paddingEach
|
||||
{ top = 10
|
||||
, bottom = 10
|
||||
, left = 10
|
||||
, right = 10
|
||||
}
|
||||
, padding 10
|
||||
, D.roundEach
|
||||
{ topLeft = 0
|
||||
, topRight = 0
|
||||
|
@ -178,6 +168,18 @@ cardImageMaker size1 size2 image urlLink =
|
|||
|| urlLink
|
||||
== Path.toString Path.Blog_Quacksmashing
|
||||
|| urlLink
|
||||
== Path.toString Path.Blog_Bigfatsurprise
|
||||
|| urlLink
|
||||
== Path.toString Path.Blog_Everettvegans
|
||||
|| urlLink
|
||||
== Path.toString Path.Blog_Meatapologetics
|
||||
|| urlLink
|
||||
== Path.toString Path.Blog_Plantbasedmeta
|
||||
|| urlLink
|
||||
== Path.toString Path.Blog_Shenanigans
|
||||
|| urlLink
|
||||
== Path.toString Path.Blog_Sweetdeception
|
||||
|| urlLink
|
||||
== Path.toString Path.Interviews
|
||||
|| urlLink
|
||||
== Path.toString Path.Nutridex
|
||||
|
|
|
@ -2,6 +2,7 @@ module Config.Helpers.Format exposing (..)
|
|||
|
||||
import Config.Style.Colour exposing (..)
|
||||
import Element exposing (..)
|
||||
import Element.Border as D
|
||||
import Element.Font as F
|
||||
|
||||
|
||||
|
@ -15,19 +16,19 @@ paragraphSpacing =
|
|||
spacing 3
|
||||
|
||||
|
||||
headerFontSizeBig : Int
|
||||
headerFontSizeBig : Attr decorative msg
|
||||
headerFontSizeBig =
|
||||
23
|
||||
F.size 23
|
||||
|
||||
|
||||
headerFontSizeMedium : Int
|
||||
headerFontSizeMedium : Attr decorative msg
|
||||
headerFontSizeMedium =
|
||||
20
|
||||
F.size 20
|
||||
|
||||
|
||||
headerFontSizeSmall : Int
|
||||
headerFontSizeSmall : Attr decorative msg
|
||||
headerFontSizeSmall =
|
||||
18
|
||||
F.size 18
|
||||
|
||||
|
||||
renderCodeLine : SyntaxColors -> List (Element msg) -> Element msg
|
||||
|
@ -39,3 +40,29 @@ renderCodeLine colors elements =
|
|||
[ F.monospace ]
|
||||
]
|
||||
elements
|
||||
|
||||
|
||||
divider : Element msg
|
||||
divider =
|
||||
el
|
||||
[ width fill
|
||||
, height fill
|
||||
, spacing 20
|
||||
, centerX
|
||||
, width (fill |> maximum 600)
|
||||
, D.widthEach
|
||||
{ bottom = 1
|
||||
, top = 0
|
||||
, left = 0
|
||||
, right = 0
|
||||
}
|
||||
, D.color colourTheme.textLightOrange
|
||||
, paddingEach
|
||||
{ top = 20
|
||||
, bottom = 0
|
||||
, left = 0
|
||||
, right = 0
|
||||
}
|
||||
]
|
||||
<|
|
||||
none
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
module Config.Helpers.Header exposing
|
||||
( Header
|
||||
, headerMaker
|
||||
)
|
||||
module Config.Helpers.Headers.Header exposing (headerMaker)
|
||||
|
||||
import Config.Helpers.CardFormat exposing (..)
|
||||
import Config.Helpers.Headers.Types exposing (Header)
|
||||
import Element as E
|
||||
exposing
|
||||
( Element
|
||||
|
@ -30,9 +28,3 @@ headerMaker header =
|
|||
]
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
type alias Header =
|
||||
{ headerTitle : String
|
||||
, headerBody : String
|
||||
}
|
7
frontend/src/Config/Helpers/Headers/Types.elm
Normal file
7
frontend/src/Config/Helpers/Headers/Types.elm
Normal file
|
@ -0,0 +1,7 @@
|
|||
module Config.Helpers.Headers.Types exposing (..)
|
||||
|
||||
|
||||
type alias Header =
|
||||
{ headerTitle : String
|
||||
, headerBody : String
|
||||
}
|
|
@ -4,7 +4,8 @@ import Browser
|
|||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
import Config.Helpers.Format
|
||||
exposing
|
||||
( headerFontSizeBig
|
||||
( divider
|
||||
, headerFontSizeBig
|
||||
, headerFontSizeMedium
|
||||
, headerFontSizeSmall
|
||||
, paragraphFontSize
|
||||
|
@ -76,7 +77,9 @@ renderMarkdown markdown =
|
|||
|> Markdown.Parser.parse
|
||||
of
|
||||
Ok okAst ->
|
||||
case Markdown.Renderer.render elmUiRenderer okAst of
|
||||
case
|
||||
Markdown.Renderer.render elmUiRenderer okAst
|
||||
of
|
||||
Ok rendered ->
|
||||
Ok ( buildToc okAst, rendered )
|
||||
|
||||
|
@ -87,6 +90,45 @@ renderMarkdown markdown =
|
|||
Err (error |> List.map Markdown.Parser.deadEndToString |> String.join "\n")
|
||||
|
||||
|
||||
renderDeviceMarkdownNoToc : String -> Element msg
|
||||
renderDeviceMarkdownNoToc markdown =
|
||||
case renderMarkdownNoToc markdown of
|
||||
Ok ( _, renderedMarkdown ) ->
|
||||
-- Pattern match to get just the List (Element msg)
|
||||
column
|
||||
[ width fill
|
||||
, centerX
|
||||
, spacing 10
|
||||
]
|
||||
renderedMarkdown
|
||||
|
||||
Err error ->
|
||||
E.text error
|
||||
|
||||
|
||||
renderMarkdownNoToc :
|
||||
String
|
||||
-> Result String ( TableOfContents, List (Element msg) ) -- Keep original return type
|
||||
renderMarkdownNoToc markdown =
|
||||
case
|
||||
markdown
|
||||
|> Markdown.Parser.parse
|
||||
of
|
||||
Ok okAst ->
|
||||
case
|
||||
Markdown.Renderer.render elmUiRenderer okAst
|
||||
of
|
||||
Ok rendered ->
|
||||
Ok ( buildToc okAst, rendered )
|
||||
|
||||
-- Keep building TOC but don't use it
|
||||
Err errors ->
|
||||
Err errors
|
||||
|
||||
Err error ->
|
||||
Err (error |> List.map Markdown.Parser.deadEndToString |> String.join "\n")
|
||||
|
||||
|
||||
tocView : TableOfContents -> Element msg
|
||||
tocView toc =
|
||||
column
|
||||
|
@ -154,23 +196,7 @@ tocView toc =
|
|||
}
|
||||
]
|
||||
<|
|
||||
row
|
||||
[ centerX
|
||||
, D.widthEach
|
||||
{ bottom = 1
|
||||
, top = 0
|
||||
, left = 0
|
||||
, right = 0
|
||||
}
|
||||
, D.color colourTheme.textLightOrange
|
||||
, paddingEach
|
||||
{ top = 10
|
||||
, bottom = 0
|
||||
, left = 0
|
||||
, right = 0
|
||||
}
|
||||
]
|
||||
[]
|
||||
divider
|
||||
, el
|
||||
[]
|
||||
<|
|
||||
|
@ -451,42 +477,18 @@ codeBlock details =
|
|||
|
||||
heading : { level : Block.HeadingLevel, rawText : String, children : List (Element msg) } -> Element msg
|
||||
heading { level, rawText, children } =
|
||||
column [ width fill ]
|
||||
[ el
|
||||
[ width fill
|
||||
, height fill
|
||||
, spacing 20
|
||||
, paddingEach
|
||||
{ top = 10
|
||||
, bottom = 20
|
||||
, left = 100
|
||||
, right = 100
|
||||
}
|
||||
]
|
||||
<|
|
||||
row
|
||||
[ centerX
|
||||
, D.widthEach
|
||||
{ bottom = 1
|
||||
, top = 0
|
||||
, left = 0
|
||||
, right = 0
|
||||
}
|
||||
, D.color colourTheme.textLightOrange
|
||||
]
|
||||
[]
|
||||
column [ width fill, spacing 20 ]
|
||||
[ divider
|
||||
, E.paragraph
|
||||
[ F.size
|
||||
(case level of
|
||||
Block.H1 ->
|
||||
headerFontSizeBig
|
||||
[ case level of
|
||||
Block.H1 ->
|
||||
headerFontSizeBig
|
||||
|
||||
Block.H2 ->
|
||||
headerFontSizeMedium
|
||||
Block.H2 ->
|
||||
headerFontSizeMedium
|
||||
|
||||
_ ->
|
||||
headerFontSizeSmall
|
||||
)
|
||||
_ ->
|
||||
headerFontSizeSmall
|
||||
, F.bold
|
||||
, F.center
|
||||
, width fill
|
||||
|
|
|
@ -1,46 +0,0 @@
|
|||
module Config.Helpers.References exposing (..)
|
||||
|
||||
import Config.Style.Colour exposing (colourTheme)
|
||||
import Config.Style.Transitions
|
||||
exposing
|
||||
( hoverFontDarkOrange
|
||||
, transitionStyleFast
|
||||
)
|
||||
import Element as E exposing (..)
|
||||
import Element.Font as F
|
||||
exposing
|
||||
( alignLeft
|
||||
, color
|
||||
, regular
|
||||
)
|
||||
|
||||
|
||||
makeReference : References -> Int -> Element msg
|
||||
makeReference references index =
|
||||
paragraph
|
||||
[ F.regular
|
||||
, F.alignLeft
|
||||
]
|
||||
[ row []
|
||||
[ newTabLink
|
||||
[ F.bold
|
||||
, F.color colourTheme.textLightOrange
|
||||
, hoverFontDarkOrange
|
||||
, transitionStyleFast
|
||||
]
|
||||
{ url = references.link, label = text (String.fromInt index ++ ". ") }
|
||||
, text (references.author ++ ", ")
|
||||
, text (references.title ++ ", ")
|
||||
, text (references.journal ++ ", ")
|
||||
, text references.year
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
type alias References =
|
||||
{ author : String
|
||||
, title : String
|
||||
, link : String
|
||||
, year : String
|
||||
, journal : String
|
||||
}
|
|
@ -1,9 +1,10 @@
|
|||
module Config.Helpers.ArticleFormat exposing (..)
|
||||
module Config.Helpers.ServiceFormat exposing (..)
|
||||
|
||||
import Config.Data.Identity exposing (pageNames)
|
||||
import Config.Helpers.Format
|
||||
exposing
|
||||
( paragraphFontSize
|
||||
( headerFontSizeBig
|
||||
, paragraphFontSize
|
||||
, paragraphSpacing
|
||||
)
|
||||
import Config.Style.Colour exposing (colourTheme)
|
||||
|
@ -17,6 +18,7 @@ import Element as E exposing (..)
|
|||
import Element.Background as B
|
||||
import Element.Border as D
|
||||
import Element.Font as F
|
||||
import Config.Helpers.Format exposing (headerFontSizeMedium)
|
||||
|
||||
|
||||
bodyFormat : List (Attribute msg)
|
||||
|
@ -49,12 +51,11 @@ titleMaker : String -> Element msg
|
|||
titleMaker title =
|
||||
el
|
||||
[ paragraphSpacing
|
||||
, paragraphFontSize
|
||||
, headerFontSizeMedium
|
||||
, F.bold
|
||||
, F.center
|
||||
, width fill
|
||||
, F.color colourTheme.textLightOrange
|
||||
, F.size 18
|
||||
, paddingEach
|
||||
{ top = 10
|
||||
, bottom = 10
|
|
@ -7,10 +7,11 @@ import Route.Path as Path
|
|||
articleBigFatSurprise : BlogArticle
|
||||
articleBigFatSurprise =
|
||||
{ articleName = "The Big Fat Surprise: A Critical Review"
|
||||
, articleDescription = ""
|
||||
, articleLink = Path.toString Path.Blog_Bigfatsurprise
|
||||
, articleAuthor = "Seth Yoder"
|
||||
, isNewTabLink = False
|
||||
, hasReferences = True
|
||||
, hasTableOfContents = True
|
||||
, articleImage = "bigfatsurprise"
|
||||
, articlePublished = "Aug 10, 2014"
|
||||
, articleBody = """
|
||||
|
|
|
@ -7,10 +7,11 @@ import Route.Path as Path
|
|||
articleEverettVegans : BlogArticle
|
||||
articleEverettVegans =
|
||||
{ articleName = "A Case Study of Joseph Everett's Reading Comprehension"
|
||||
, articleDescription = "This article systematically debunks a number of ludicrous claims about veganism made by the borderline illiterate ancestral diet proponent, Joseph Everett. These claims were the primary focus of a YouTube video he released on his channel, tackling everything from nutritional status on a vegan diet to a bizarre tirade about laboratory cats that were fed shitty diets. Apparently, Joseph's capacity for abject retardation is matched only by his video editing skills."
|
||||
, articleLink = Path.toString Path.Blog_Everettvegans
|
||||
, articleAuthor = "Nick Hiebert"
|
||||
, isNewTabLink = False
|
||||
, hasReferences = True
|
||||
, hasTableOfContents = True
|
||||
, articleImage = "everettvegans"
|
||||
, articlePublished = "May 1, 2023"
|
||||
, articleBody = """
|
||||
|
|
|
@ -7,10 +7,11 @@ import Route.Path as Path
|
|||
articleHunterGatherers : BlogArticle
|
||||
articleHunterGatherers =
|
||||
{ articleName = "Should Modern Humans Eat Like Hunter-Gatherers?"
|
||||
, articleDescription = "This article presents a philosophical critique of the belief that a diet consisting solely of natural or ancestral foods is the best way for modern humans to achieve optimal health. I argue that even if a hunter-gatherer diet may be superior to a Western diet, it is still not necessarily the healthiest choice due to factors like the potential risks of ancestral foods and the ability to improve food quality through scientific manipulation."
|
||||
, articleLink = Path.toString Path.Blog_Huntergatherers
|
||||
, articleAuthor = "Nick Hiebert"
|
||||
, isNewTabLink = False
|
||||
, hasReferences = True
|
||||
, hasTableOfContents = True
|
||||
, articleImage = "huntergatherers"
|
||||
, articlePublished = "May 14, 2021"
|
||||
, articleBody = """
|
||||
|
|
|
@ -7,10 +7,11 @@ import Route.Path as Path
|
|||
articleMeatApologetics : BlogArticle
|
||||
articleMeatApologetics =
|
||||
{ articleName = "A Systematic Appraisal of Pro-meat Apologetics"
|
||||
, articleDescription = "This article systematically deconstructs the first section of a well-known scientific paper about animal foods, exposing numerous logical fallacies in the paper's arguments against nutritional research. By meticulously analyzing the text's claims about meat consumption and health risks, the critique reveals multiple methodological errors, including misleading citations, inconsistent reasoning, and speculative arguments that fail to challenge existing scientific evidence about the potential health impacts of meat consumption."
|
||||
, articleLink = Path.toString Path.Blog_Meatapologetics
|
||||
, articleAuthor = "Nick Hiebert"
|
||||
, isNewTabLink = False
|
||||
, hasReferences = True
|
||||
, hasTableOfContents = True
|
||||
, articleImage = "meatapologetics"
|
||||
, articlePublished = "Apr 13, 2022"
|
||||
, articleBody = """
|
||||
|
|
|
@ -7,10 +7,11 @@ import Route.Path as Path
|
|||
articleNagraGoodrich : BlogArticle
|
||||
articleNagraGoodrich =
|
||||
{ articleName = "Grading Tucker Goodrich: A Lesson in Debate Etiquette"
|
||||
, articleDescription = "This article catalogs the results of Nagra's and my debate preparation. Our hard work paid off in the sweetest way possible. Matt was able to expose an enormous number of dodges, strawman arguments, and outright contradictions from Tucker. It exceeded all of our expectations and truly highlighted the weaknesses of Tucker's arguments. The number of self-defeating points Tucker attempted to defend in order to stay ahead in the debate was remarkable— a true treat."
|
||||
, articleLink = Path.toString Path.Blog_Nagragoodrich
|
||||
, articleAuthor = "Nick Hiebert"
|
||||
, isNewTabLink = False
|
||||
, hasReferences = False
|
||||
, hasTableOfContents = True
|
||||
, articleImage = "nagragoodrich"
|
||||
, articlePublished = "May 12, 2022"
|
||||
, articleBody = """
|
||||
|
|
|
@ -7,10 +7,11 @@ import Route.Path as Path
|
|||
articlePlantBasedMeta : BlogArticle
|
||||
articlePlantBasedMeta =
|
||||
{ articleName = "Plant-Based Diets (An Independent Meta-Analysis)"
|
||||
, articleDescription = ""
|
||||
, articleLink = Path.toString Path.Blog_Plantbasedmeta
|
||||
, articleAuthor = "Nick Hiebert"
|
||||
, isNewTabLink = False
|
||||
, hasReferences = False
|
||||
, hasTableOfContents = True
|
||||
, articleImage = "plantbasedmeta"
|
||||
, articlePublished = "Feb 5, 2021"
|
||||
, articleBody = """
|
||||
|
|
|
@ -7,10 +7,11 @@ import Route.Path as Path
|
|||
articleQuackSmashing : BlogArticle
|
||||
articleQuackSmashing =
|
||||
{ articleName = "The Hitchhiker's Guide to Quack-Smashing"
|
||||
, articleDescription = "This article explores the prevalence of quackery on social media, focusing on how to identify and confront it. The article categorizes quacks and delves into their behaviours and motivations. It emphasizes that quackery often stems from flawed epistemic frameworks rather than ignorance of scientific facts. The article suggests a method for addressing quackery by questioning the underlying reasoning behind a quack’s beliefs, forcing them to confront the deficiencies in their reasoning."
|
||||
, articleLink = Path.toString Path.Blog_Quacksmashing
|
||||
, articleAuthor = "Nick Hiebert"
|
||||
, isNewTabLink = False
|
||||
, hasReferences = True
|
||||
, hasTableOfContents = True
|
||||
, articleImage = "quacksmashing"
|
||||
, articlePublished = "Dec 24, 2022"
|
||||
, articleBody = """
|
||||
|
|
|
@ -7,10 +7,11 @@ import Route.Path as Path
|
|||
articleSapienDiet : BlogArticle
|
||||
articleSapienDiet =
|
||||
{ articleName = "The Sapien Diet: Peak Human or Food Lies?"
|
||||
, articleDescription = "This article tackles many of the dubious claims made by ancestral diet advocate, Brian Sanders, during his popular 2020 talk, \"Despite what you've been told COWS CAN SAVE THE WORLD\". In this talk, Brian makes a number of baseless claims related to health, nutrition, argiculture, environmental science, and ethical philsophy. Make no mistake— virtually every listener was likely rendered slightly dumber for each word they heard leave Brian's mouth during his 26 minute presentation."
|
||||
, articleLink = Path.toString Path.Blog_Sapiendiet
|
||||
, articleAuthor = "Nick Hiebert"
|
||||
, isNewTabLink = False
|
||||
, hasReferences = True
|
||||
, hasTableOfContents = True
|
||||
, articleImage = "sapiendiet"
|
||||
, articlePublished = "Aug 24, 2022"
|
||||
, articleBody = """
|
||||
|
|
|
@ -7,10 +7,11 @@ import Route.Path as Path
|
|||
articleSeedOils : BlogArticle
|
||||
articleSeedOils =
|
||||
{ articleName = "A Comprehensive Rebuttal to Seed Oil Sophistry"
|
||||
, articleDescription = "This article argues that vegetable oils, often criticized in recent years, are not harmful and may even offer health benefits, such as preventing heart disease and type 2 diabetes. It challenges claims based on mechanistic or ecological research, which lack strong evidence linking vegetable oils to chronic diseases. Instead, the article supports their inclusion in a balanced diet, cautioning against overconsumption, and debunking myths based on speculative studies."
|
||||
, articleLink = Path.toString Path.Blog_Seedoils
|
||||
, articleAuthor = "Nick Hiebert"
|
||||
, isNewTabLink = False
|
||||
, hasReferences = True
|
||||
, hasTableOfContents = True
|
||||
, articleImage = "seedoils"
|
||||
, articlePublished = "Oct 31, 2021"
|
||||
, articleBody = """
|
||||
|
|
|
@ -7,10 +7,11 @@ import Route.Path as Path
|
|||
articleShenanigans : BlogArticle
|
||||
articleShenanigans =
|
||||
{ articleName = "Cuckery 101: Cate Shanahan's Masterclass in Debate Dodging"
|
||||
, articleDescription = ""
|
||||
, articleLink = Path.toString Path.Blog_Shenanigans
|
||||
, articleAuthor = "Nick Hiebert"
|
||||
, isNewTabLink = False
|
||||
, hasReferences = False
|
||||
, hasTableOfContents = True
|
||||
, articleImage = "shenanigans"
|
||||
, articlePublished = "Jun 6, 2024"
|
||||
, articleBody = """
|
||||
|
|
|
@ -7,10 +7,11 @@ import Route.Path as Path
|
|||
articleSweetDeception : BlogArticle
|
||||
articleSweetDeception =
|
||||
{ articleName = "Sweet Deception: Debunking Meme Diabetes Diets"
|
||||
, articleDescription = ""
|
||||
, articleLink = Path.toString Path.Blog_Sweetdeception
|
||||
, articleAuthor = "Nick Hiebert"
|
||||
, isNewTabLink = False
|
||||
, hasReferences = True
|
||||
, hasTableOfContents = True
|
||||
, articleImage = "sweetdeception"
|
||||
, articlePublished = "Apr 16, 2024"
|
||||
, articleBody = """
|
||||
|
|
|
@ -7,10 +7,11 @@ import Route.Path as Path
|
|||
article : BlogArticle
|
||||
article =
|
||||
{ articleName = ""
|
||||
, articleDescription = ""
|
||||
, articleLink = Path.toString Path.Blog_
|
||||
, articleAuthor = "Nick Hiebert"
|
||||
, isNewTabLink = False
|
||||
, hasReferences = True
|
||||
, hasTableOfContents = True
|
||||
, articleImage = ""
|
||||
, articlePublished = ""
|
||||
, articleBody = """
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
module Config.Pages.Blog.Types exposing (..)
|
||||
|
||||
import Config.Helpers.References exposing (..)
|
||||
import Config.Helpers.Articles.Types exposing (..)
|
||||
|
||||
|
||||
type alias BlogArticle =
|
||||
|
@ -10,7 +10,8 @@ type alias BlogArticle =
|
|||
, articleLink : String
|
||||
, articleAuthor : String
|
||||
, isNewTabLink : Bool
|
||||
, hasReferences : Bool
|
||||
, hasTableOfContents : Bool
|
||||
, articlePublished : String
|
||||
, articleDescription : String
|
||||
, articleReferences : List References
|
||||
}
|
||||
|
|
|
@ -33,6 +33,7 @@ import Config.Pages.Debate.Arguments.Records.HealthyPlantFoods exposing (argumen
|
|||
import Config.Pages.Debate.Arguments.Records.HealthySeedOils exposing (argumentHealthySeedOils)
|
||||
import Config.Pages.Debate.Arguments.Records.HealthySoy exposing (argumentHealthySoy)
|
||||
import Config.Pages.Debate.Arguments.Records.ImmortalityReductio exposing (argumentImmortalityReductio)
|
||||
import Config.Pages.Debate.Arguments.Records.LuigiTerrorist exposing (argumentLuigiTerrorist)
|
||||
import Config.Pages.Debate.Arguments.Records.Malondialdehyde exposing (argumentMalondialdehyde)
|
||||
import Config.Pages.Debate.Arguments.Records.OddOrderPredators exposing (argumentOddOrderPredators)
|
||||
import Config.Pages.Debate.Arguments.Records.Omega3Omega6Ratio exposing (argumentOmega3Omega6Ratio)
|
||||
|
@ -52,6 +53,7 @@ import Config.Pages.Debate.Arguments.Records.UnhealthyRedMeat exposing (argument
|
|||
import Config.Pages.Debate.Arguments.Records.UnhealthySaturatedFat exposing (argumentUnhealthySaturatedFat)
|
||||
import Config.Pages.Debate.Arguments.Records.VeganSocietyReductio exposing (argumentVeganSocietyReductio)
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentList : List Argument
|
||||
|
@ -75,6 +77,7 @@ argumentList =
|
|||
, argumentMalondialdehyde
|
||||
, argumentOmega3Omega6Ratio
|
||||
, argumentPlantBasedCVDReversal
|
||||
, argumentLuigiTerrorist
|
||||
, argumentPolyphenolReductio
|
||||
, argumentSodiumCVD
|
||||
, argumentTMAOCausality
|
||||
|
@ -106,8 +109,3 @@ argumentList =
|
|||
, argumentFlatEarthDebunk
|
||||
, argumentTruncatedMeta
|
||||
]
|
||||
|
||||
|
||||
argumentListNumber : Int
|
||||
argumentListNumber =
|
||||
List.length argumentList
|
||||
|
|
|
@ -1,19 +1,20 @@
|
|||
module Config.Pages.Debate.Arguments.Records.Abortion exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Data.Hashtags.Types exposing (Hashtags(..))
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
|
||||
|
||||
argumentAbortion : Argument
|
||||
argumentAbortion =
|
||||
{ argumentTitle = "Argument Against Sentient Abortions"
|
||||
{ argumentTitle = toTitleCase "Argument Against Sentient Abortions"
|
||||
, propositionTitle = "One's whims are not a sufficient justification for the termination of sentient human life."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "Consenting to becoming pregnant, or at least implicitly accepting the risks of pregnancy by engaging in reckless sex, should disqualify one from having the opportunity to a abort a sentient fetus if the pregnancy doesn't pose a significant health risk to the mother."
|
||||
, proofLink = "https://www.umsu.de/trees/#(P~2Q~5R),(P),(Q),((R~1F~1~3H)~5M),(F),(~3H),(M~5~3W)%7C=(~3W)"
|
||||
, argumentCertainty = 6
|
||||
, argumentImage = "abortion"
|
||||
, argumentHashtags = [PoliticsAbortion, PhilosophySentience, PhilosophyEthics]
|
||||
, argumentHashtags = [ PoliticsAbortion, PhilosophySentience, PhilosophyEthics ]
|
||||
, definitionTable =
|
||||
[ { definiendum = "P"
|
||||
, definiens = "one consents to becoming pregnant"
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.Agnosticism exposing (..)
|
||||
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
|
||||
|
||||
argumentAgnosticism : Argument
|
||||
argumentAgnosticism =
|
||||
{ argumentTitle = "Agnosticism Consistency Checker"
|
||||
{ argumentTitle = toTitleCase "Agnosticism Consistency Checker"
|
||||
, propositionTitle = "An interlocutor (who cannot unpack what evidence would lead them to change their doxastic attitude on a proposition) should temporarily withhold the belief that the proposition at hand is true."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "Listen, if one doesn't know what would change their mind on a topic, about which they form strong opinions, then it's not clear why they'd even hold said opinions strongly in the first place. Given this, it would make more sense just to suspend your judgement in the meantime and form no opinions on the subject."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.AgriculturalPredation exposing (..)
|
||||
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
|
||||
|
||||
argumentAgriculturalPredation : Argument
|
||||
argumentAgriculturalPredation =
|
||||
{ argumentTitle = "Argument for Animal Agirculture as Predation"
|
||||
{ argumentTitle = toTitleCase "Argument for Animal Agirculture as Predation"
|
||||
, propositionTitle = "Animal agriculture counts as predation."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "Some vegans suggest that killing odd order predators is wrong because predation is permissible. However, if animal agriculture also counts as predation, it's analytically entailed that animal agriculture is permissible as well."
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
module Config.Pages.Debate.Arguments.Records.AnabolicKeto exposing (..)
|
||||
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
|
||||
|
||||
argumentAnabolicKeto : Argument
|
||||
argumentAnabolicKeto =
|
||||
{ argumentTitle = "Anabolic Opportunity Cost on Keto"
|
||||
{ argumentTitle = toTitleCase "Anabolic Opportunity Cost on Keto"
|
||||
, propositionTitle = "Ketogenic diets are likely to cost anabolic potential compared to non-ketogenic diets."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "A higher proportion of amino acids are spent on gluconeogenesis while on ketogenic diets, reducing the amount available for hypertrophy. This likely costs anabolic potential on ketogenic diets compared to non-ketogenic diets."
|
||||
, proofLink = "https://www.umsu.de/trees/#(P~5Q),(P),(Q~5R)|=(R)"
|
||||
|
||||
, argumentCertainty = 5
|
||||
, argumentImage = "anabolicketo"
|
||||
, argumentHashtags = []
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.AnimalRights exposing (..)
|
||||
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
|
||||
|
||||
argumentAnimalRights : Argument
|
||||
argumentAnimalRights =
|
||||
{ argumentTitle = "Argument for Animal Rights"
|
||||
{ argumentTitle = toTitleCase "Argument for Animal Rights"
|
||||
, propositionTitle = "We should not exploit animals to any greater degree than we would tolerate for humans."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "I view animal rights as the logical extension of trait-adjusted human rights to non-human animals. As such, if one wants to deny that animals should be given these trait-adjusted rights, they'll have to name a trait that accounts for the differential normative evaluation. Typically this is done by rejecting P3 and saying something retarded."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.AntagonisticPleiotropy exposing (..)
|
||||
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
|
||||
|
||||
argumentAntagonisticPleiotropy : Argument
|
||||
argumentAntagonisticPleiotropy =
|
||||
{ argumentTitle = "Argument Against Ancestral Diets"
|
||||
{ argumentTitle = toTitleCase "Argument Against Ancestral Diets"
|
||||
, propositionTitle = "Ancestral diets have inherent disadvantages over novel diets"
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "Humans have more genetic adaptations to ancestral foods than novel foods, which makes the long-term negative consequences of antagonistic pleiotropy a greater concern for ancestral foods."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.AntiRewilding exposing (..)
|
||||
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
|
||||
|
||||
argumentAntiRewilding : Argument
|
||||
argumentAntiRewilding =
|
||||
{ argumentTitle = "Argument Against Rewilding"
|
||||
{ argumentTitle = toTitleCase "Argument Against Rewilding"
|
||||
, propositionTitle = "Rewilding sentient animals is immoral."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "I view animal rights as the logical extension of trait-adjusted human rights to non-human animals. I think humans have the right not to be bred into wild circumstances where they're faced with the full brutality of the natural world, and by extension I think non-human animals have this right too."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.AntiVandalism exposing (..)
|
||||
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
|
||||
|
||||
argumentAntiVandalism : Argument
|
||||
argumentAntiVandalism =
|
||||
{ argumentTitle = "Argument Against Zoo Vandalism"
|
||||
{ argumentTitle = toTitleCase "Argument Against Zoo Vandalism"
|
||||
, propositionTitle = "Vandalizing zoos increases the probability of harming the animals they keep."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "The more we pressure institutions that hold innocent animals captive to direct their funds to endeavours or projects unrelated to animal care, the less money those institutions are going to have to devote to animal care."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.ApoBCVD exposing (..)
|
||||
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
|
||||
|
||||
argumentApoBCVD : Argument
|
||||
argumentApoBCVD =
|
||||
{ argumentTitle = "Argument for Atherogenic ApoB"
|
||||
{ argumentTitle = toTitleCase "Argument for Atherogenic ApoB"
|
||||
, propositionTitle = "ApoB-containing lipoproteins dose-dependently cause atherosclerosis."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "ApoB-containing lipoproteins consistently and proportionately associate with increased plaque volume after controlling for relevant confounders, which satisfies the conditions outlined for an exposure to cause atherosclerosis."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.BoobyTrapPagers exposing (..)
|
||||
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
|
||||
|
||||
argumentBoobyTrapPagers : Argument
|
||||
argumentBoobyTrapPagers =
|
||||
{ argumentTitle = "Argument Against Israeli Pagers as Booby-Traps"
|
||||
{ argumentTitle = toTitleCase "Argument Against Israeli Pagers as Booby-Traps"
|
||||
, propositionTitle = "The Israeli pagers were not booby-traps."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "Based on the definitions found in the IHL Databases, it's unlikely that the Israeli pager bombs qualify as booby-traps. However, there is sufficient ambiguity in the language that I'm not convinced it's necessarily an analytical truth."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.CarbsObesity exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentCarbsObesity : Argument
|
||||
argumentCarbsObesity =
|
||||
{ argumentTitle = "Argument Against the Obesogenic Carbohydrates"
|
||||
{ argumentTitle = toTitleCase "Argument Against the Obesogenic Carbohydrates"
|
||||
, propositionTitle = "Carbohydrates do not uniquely cause fat accumulation or obesity."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "There are a number of predictions made from the hypothesis that carbohydrates uniquely cause obesity. One of those predictions is that obesity would track with carbohydrate intake, but it doesn't"
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.ColonizingNature exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentColonizingNature : Argument
|
||||
argumentColonizingNature =
|
||||
{ argumentTitle = "Argument for Colonizing Nature"
|
||||
{ argumentTitle = toTitleCase "Argument for Colonizing Nature"
|
||||
, propositionTitle = "We are justified in displacing nature into non-existence"
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "Summary"
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.CropDeaths exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentCropDeaths : Argument
|
||||
argumentCropDeaths =
|
||||
{ argumentTitle = "Cropland vs Wildland Argument"
|
||||
{ argumentTitle = toTitleCase "Cropland vs Wildland Argument"
|
||||
, propositionTitle = "Proposition"
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "We can't claim to know that cropland kills more animals than wildland, because if we did know this, there would be evidence for it, and there isn't any such evidence."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.DairyCowRape exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentDairyCowRape : Argument
|
||||
argumentDairyCowRape =
|
||||
{ argumentTitle = "Argument for Animal Sex Counting as Rape"
|
||||
{ argumentTitle = toTitleCase "Argument for Animal Sex Counting as Rape"
|
||||
, propositionTitle = "An animal mating with another animal qualifies as rape."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "It's not clear that non-human animal procreation isn't an example of rape if we take sexual interaction in the absence of informed consent to be rape. So, it seems to follow that a bull mating with a cow is rape, for example."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.DietaryCholesterol exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentDietaryCholesterol : Argument
|
||||
argumentDietaryCholesterol =
|
||||
{ argumentTitle = "Argument for Atherogenic Dietary Cholesterol"
|
||||
{ argumentTitle = toTitleCase "Argument for Atherogenic Dietary Cholesterol"
|
||||
, propositionTitle = "Consuming high amounts of dietary cholesterol increases heart disease risk."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "LDL causally associates with heart disease in a linear and proportional manner, and in all cases exposures that durably increase LDL over time produce likewise increases in heart disease risk. Dietary cholesterol is one such exposure."
|
||||
|
|
|
@ -2,11 +2,12 @@ module Config.Pages.Debate.Arguments.Records.Dummy exposing (..)
|
|||
|
||||
import Config.Data.Hashtags.Types exposing (Hashtags(..))
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentDummy : Argument
|
||||
argumentDummy =
|
||||
{ argumentTitle = ""
|
||||
{ argumentTitle = toTitleCase ""
|
||||
, propositionTitle = ""
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = ""
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.EfilismPatrolSquad exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentEfilismPatrolSquad : Argument
|
||||
argumentEfilismPatrolSquad =
|
||||
{ argumentTitle = "The Eternal Intergalactic Sentience Patrol Squad"
|
||||
{ argumentTitle = toTitleCase "The Eternal Intergalactic Sentience Patrol Squad"
|
||||
, propositionTitle = "Efilists are committed to pragmatic natalism."
|
||||
, propositionReductio = "Efilists fundamentally believe that sentient life is inherently characterized by suffering and that the most ethical action is to prevent the creation of any new sentient beings, ultimately aiming to completely eliminate all conscious life in the universe to end suffering permanently."
|
||||
, propositionSummary = "If efilists follow their own logic to its ultimate conclusion, they would paradoxically be committed to a form of pragmatic natalism - the very opposite of their core philosophical stance."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.EpidemiologyCausality exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentEpidemiologyCausality : Argument
|
||||
argumentEpidemiologyCausality =
|
||||
{ argumentTitle = "Argument for Nutritional Epidemiology"
|
||||
{ argumentTitle = toTitleCase "Argument for Nutritional Epidemiology"
|
||||
, propositionTitle = "Nutritional epidemiology generally provides good causal estimates."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "It's just straightforwardly the case that nutritional epidemiology has outstanding translation rates with randomized controlled trials, or at least these is overwhelmingly consistent compatibility in the results. If randomized controlled trials are the standard against which other research methods are to be evaluated, it's not clear why nutritional epidemiology wouldn't be trustworthy in the aggregate."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.EthicalSlurs exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentEthicalSlurs : Argument
|
||||
argumentEthicalSlurs =
|
||||
{ argumentTitle = "Argument for Using the Term Retard"
|
||||
{ argumentTitle = toTitleCase "Argument for Using the Term Retard"
|
||||
, propositionTitle = "It is generally permissible to use the term retard with an altered non-bigoted meaning."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "The only historical examples of bigoted terms, such as slurs, becoming non-harmful to the demographics toward which they were historically targeted involve literally changing the usage of the term to something non-bigoted. I don’t see any historical precedent for a methodology that has been as successful in achieving this goal as altering the term's usage. Such as using the term \"nigga\" to mean \"friend\", for example."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.FineTuning exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentFineTuning : Argument
|
||||
argumentFineTuning =
|
||||
{ argumentTitle = "Fine Tuning Debunk"
|
||||
{ argumentTitle = toTitleCase "Fine Tuning Debunk"
|
||||
, propositionTitle = "Fine tuning is an infinitely regressive explanation for God"
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "It's not clear why God's constitution wouldn't count as finely tuned, and to the extent that it does count as finely-tuned, it's by extension unclear why fine-tuning wouldn't be an infinitely regressive argument for God's existence."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.FlatEarthDebunk exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentFlatEarthDebunk : Argument
|
||||
argumentFlatEarthDebunk =
|
||||
{ argumentTitle = "Flat Earth Internal Critique"
|
||||
{ argumentTitle = toTitleCase "Flat Earth Internal Critique"
|
||||
, propositionTitle = "The stars in the sky will not be perceived as rotating clockwise from anywhere else on the flat Earth, as long as you are looking towards the rotational plane."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "The argument is structured to demonstrate that, within the context of a flat Earth model, if the stars are perceived as rotating counter-clockwise from the center, they cannot also be perceived as rotating clockwise from any point on the Earth."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.FructoseNAFLD exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentFructoseNAFLD : Argument
|
||||
argumentFructoseNAFLD =
|
||||
{ argumentTitle = "Argument Against Lipogenic Fructose"
|
||||
{ argumentTitle = toTitleCase "Argument Against Lipogenic Fructose"
|
||||
, propositionTitle = "Fructose doesn't seem to uniquely cause fatty liver disease."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "Experimental investigations into fructose overfeeding have consistently failed to produce a fatty liver phenotype in humans. This suggests that fructose, contrary to popular belief in some domains, does not uniquely cause fatty liver disease."
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
module Config.Pages.Debate.Arguments.Records.HealthPromotingFoods exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
argumentHealthPromotingFoods : Argument
|
||||
argumentHealthPromotingFoods =
|
||||
{ argumentTitle = "Argument for Food's Inherent Health Value"
|
||||
{ argumentTitle = toTitleCase "Argument for Food's Inherent Health Value"
|
||||
, propositionTitle = "All foods are definitionally health-promoting."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "Given that food is, by its very definition, material that provides essential nutrients and energy to sustain bodily functions and growth, it follows that anything classified as food must be inherently health-promoting by its very nature."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.HealthSeeker exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentHealthSeeker : Argument
|
||||
argumentHealthSeeker =
|
||||
{ argumentTitle = "Ancestral Health Consistency Checker"
|
||||
{ argumentTitle = toTitleCase "Ancestral Health Consistency Checker"
|
||||
, propositionTitle = "If someone (who favours consuming ancestral foods to the exclusion of novel foods because they value reducing disease risk) is not in favour of consuming a novel food (that reduces disease risk when replacing an ancestral food), then that person would be acting against their values."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "If someone values consuming ancestral foods over novel foods because they have the overall value of reducing disease risk, but a novel food reduces disease risk when replacing an ancestral food, they would be acting against their values by rejecting the novel food."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.HealthyChocolate exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentHealthyChocolate : Argument
|
||||
argumentHealthyChocolate =
|
||||
{ argumentTitle = "Argument for Healthy Chocolate"
|
||||
{ argumentTitle = toTitleCase "Argument for Healthy Chocolate"
|
||||
, propositionTitle = "Chocolate does not cause atherosclerosis."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "Despite chocolate containing high amounts of saturated fat, populations that consume more chocolate do not exhibit higher rates of atherosclerosis, suggesting that chocolate does not have the same effect on heart disease risk as most other saturated fat sources."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.HealthyDairy exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentHealthyDairy : Argument
|
||||
argumentHealthyDairy =
|
||||
{ argumentTitle = "Argument for Healthy Dairy Products"
|
||||
{ argumentTitle = toTitleCase "Argument for Healthy Dairy Products"
|
||||
, propositionTitle = "Non-churned, non-homogenized dairy do not cause atherosclerosis."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "The diet-heart hypothesis would predict that populations consuming more dairy foods should have higher rates of the disease. However, even when you account for factors that could plausibly influence the results, non-churned, non-homogenized dairy have been shown to consistently reduce the risk of morbidity and mortality, strongly suggesting that they directly contribute to better health outcomes, particularly with respect to cardiovascular disease and colorectal cancer."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.HealthyFattyFish exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentHealthyFattyFish : Argument
|
||||
argumentHealthyFattyFish =
|
||||
{ argumentTitle = "Argument for Overwhelmingly Healthy Fatty Fish"
|
||||
{ argumentTitle = toTitleCase "Argument for Overwhelmingly Healthy Fatty Fish"
|
||||
, propositionTitle = "Fatty fish is overwhelmingly healthy."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "Even when you account for factors that could plausibly influence the results, fatty fish have been shown to consistently reduce the risk of morbidity and mortality, strongly suggesting that they directly contribute to better health outcomes, particularly with respect to cardiovascular disease."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.HealthyFibre exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentHealthyFibre : Argument
|
||||
argumentHealthyFibre =
|
||||
{ argumentTitle = "Argument for Overwhelmingly Healthy Fibre"
|
||||
{ argumentTitle = toTitleCase "Argument for Overwhelmingly Healthy Fibre"
|
||||
, propositionTitle = "Fibre, whether whole or refined, is overwhelmingly healthy."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "Even when you account for factors that could plausibly influence the results, both refined and whole fibre have been shown to consistently reduce the risk of morbidity and mortality, strongly suggesting that they directly contribute to better health outcomes, particularly with respect to cardiovascular disease."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.HealthyFood exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentHealthyFood : Argument
|
||||
argumentHealthyFood =
|
||||
{ argumentTitle = "Argument For Healthy Food Substitution"
|
||||
{ argumentTitle = toTitleCase "Argument For Healthy Food Substitution"
|
||||
, propositionTitle = "Pepsi is healthy compared to leafy greens when trapped on a desert island."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "A food is considered healthier than another in a specific context if it increases the time before illness or disease sets in when replacing the other food. On a desert island, since Pepsi can extend the time before starvation compared to leafy greens, it is considered healthier than leafy greens in that context."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.HealthyPlantFoods exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentHealthyPlantFoods : Argument
|
||||
argumentHealthyPlantFoods =
|
||||
{ argumentTitle = "Argument for Overwhelmingly Healthy Plant Foods"
|
||||
{ argumentTitle = toTitleCase "Argument for Overwhelmingly Healthy Plant Foods"
|
||||
, propositionTitle = "Whole plant foods are overwhelmingly healthy."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "Since whole plant foods consistently consistently associate with reduced risk of illness and death, it is reasonable to conclude that whole plant foods are overwhelmingly healthy."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.HealthySeedOils exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentHealthySeedOils : Argument
|
||||
argumentHealthySeedOils =
|
||||
{ argumentTitle = "Argument for Overwhelmingly Healthy Seed Oils"
|
||||
{ argumentTitle = toTitleCase "Argument for Overwhelmingly Healthy Seed Oils"
|
||||
, propositionTitle = "Non-hydrogenated vegetable oils are overwhelmingly healthy."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "Even when you account for known factors, or model a reasonable accounting of unknown factors, that could plausibly influence the results (such as with adjustment models in prospective cohort studies or randomization in controlled trials), non-hydrogenated vegetable oils have been shown to consistently reduce the risk of morbidity and mortality in both prospective cohort studies and randomized controlled trials, strongly suggesting that they directly contribute to better health outcomes."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.HealthySoy exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentHealthySoy : Argument
|
||||
argumentHealthySoy =
|
||||
{ argumentTitle = "Argument for Healthy Soy Products"
|
||||
{ argumentTitle = toTitleCase "Argument for Healthy Soy Products"
|
||||
, propositionTitle = "Soy products are overwhelmingly healthy."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "Even when you account for factors that could plausibly influence the results, non-hydrogenated soy products have been shown to consistently reduce the risk of morbidity and mortality, strongly suggesting that they directly contribute to better health outcomes, particularly with respect to cardiovascular disease."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.ImmortalityReductio exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentImmortalityReductio : Argument
|
||||
argumentImmortalityReductio =
|
||||
{ argumentTitle = "Appeal to Nature Immortality Reductio"
|
||||
{ argumentTitle = toTitleCase "Appeal to Nature Immortality Reductio"
|
||||
, propositionTitle = "Senescence does not result in death."
|
||||
, propositionReductio = "People who appeal to nature in this fashion assert that death cannot result from natural biological processes. Usually this is asserted in order to avoid accepting that LDL is causative of atherosclerosis."
|
||||
, propositionSummary = "If one commits to this variation of the appeal to nature fallacy, it's unclear why they wouldn't be subsequently committed to affirm that humans are immortal, like Connor fucking MacLeod."
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
module Config.Pages.Debate.Arguments.Records.LuigiTerrorist exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentLuigiTerrorist : Argument
|
||||
argumentLuigiTerrorist =
|
||||
{ argumentTitle = toTitleCase "Argumnent for Luigi Mangione Being a Terrorist"
|
||||
, propositionTitle = "Luigi Mangione is a domestic terrorist"
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "According to the FBI's definition of a \" domestic terrorist \", it is quite clear that Luigi Mangione qualifies, based on his actions. It just seems like an analytic truth."
|
||||
, proofLink = "https://www.umsu.de/trees/#~6x(Px~4Qx),Qm|=Pm"
|
||||
, argumentCertainty = 10
|
||||
, argumentImage = "luigiterrorist"
|
||||
, argumentHashtags = []
|
||||
, definitionTable =
|
||||
[ { definiendum = "P(x)"
|
||||
, definiens = "(x) commits violent, criminal acts to further ideological goals stemming from domestic influence"
|
||||
}
|
||||
, { definiendum = "Q(x)"
|
||||
, definiens = "(x) is a domestic terrorist"
|
||||
}
|
||||
, { definiendum = "x"
|
||||
, definiens = "an individual"
|
||||
}
|
||||
, { definiendum = "m"
|
||||
, definiens = "Luigi Mangione"
|
||||
}
|
||||
]
|
||||
, argumentFormalization =
|
||||
[ { premises =
|
||||
[ { premise = "An individual is a domestic terrorist if, and only if, the individual commits violent, criminal acts to further ideological goals stemming from domestic influences."
|
||||
, notation = "∀x(Px↔Qx)"
|
||||
}
|
||||
, { premise = "Luigi Mangione committed violent, criminal acts to further ideological goals stemming from domestic influence."
|
||||
, notation = "Qm"
|
||||
}
|
||||
]
|
||||
, conclusion = "Therefore, Luigi Mangione is a domestic terrorist."
|
||||
, conclusionNotation = "Pm"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.Malondialdehyde exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentMalondialdehyde : Argument
|
||||
argumentMalondialdehyde =
|
||||
{ argumentTitle = "Atherogenic Omega-3 Reductio"
|
||||
{ argumentTitle = toTitleCase "Atherogenic Omega-3 Reductio"
|
||||
, propositionTitle = "Omega-3s are atherogenic."
|
||||
, propositionReductio = "Certain anti-seed oil proponents assert that seed oils cause atherosclerosis via omega-6-derived malondialdehyde, and that this is the only cause of atherosclerosis. However, they often also assert that omega-3 fatty acids are anti-atherogenic, despite the fact that omega-3s actually produce more malondialdehyde than omega-6s."
|
||||
, propositionSummary = "If one takes the view that in order for a substance to increase the risk of atherosclerosis, it must facilitate the oxidative modification of LDL particles via malondialdehyde production, and one also affirms that omega-3s are anti-atherogenic, then this would imply that all fatty acids that produce malondialdehyde, including omega-3s, must also be atherogenic, which contradicts the their belief that omega-3s are heart-healthy."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.OddOrderPredators exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentOddOrderPredators : Argument
|
||||
argumentOddOrderPredators =
|
||||
{ argumentTitle = "Argument for Culling Odd Order Predators"
|
||||
{ argumentTitle = toTitleCase "Argument for Culling Odd Order Predators"
|
||||
, propositionTitle = "It is permissible to prevent predation with lethal force to the same degree we would tolerate for humans."
|
||||
, propositionReductio = "I view animal rights as the logical extension of trait-adjusted human rights to non-human animals. I think humans have the right not to be exposed to circumstances where they're hunted for food, and I think it is permissible to use lethal force to save the lives of the hunted, all else equal. By extension I think non-human animals have this right too."
|
||||
, propositionSummary = "Summary"
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
module Config.Pages.Debate.Arguments.Records.Omega3Omega6Ratio exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
argumentOmega3Omega6Ratio : Argument
|
||||
argumentOmega3Omega6Ratio =
|
||||
{ argumentTitle = "Argument Against the Omega-6/Omega-3 Ratio"
|
||||
{ argumentTitle = toTitleCase "Argument Against the Omega-6/Omega-3 Ratio"
|
||||
, propositionTitle = "The omega-6/omega-3 ratio is unlikely to matter for health."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "More often than not, the associated risks of a high omega-6/omega-3 ratio are better explained by omega-3 alone. In multivariable analyses, the ratio looks like it matters, but in univariable anaylses, low omega-3 is almost always driving the risk via lowering the denominator."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.Ostroveganism exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentOstroveganism : Argument
|
||||
argumentOstroveganism =
|
||||
{ argumentTitle = "Argument for Vegan Bivalves"
|
||||
{ argumentTitle = toTitleCase "Argument for Vegan Bivalves"
|
||||
, propositionTitle = "Bivalves are not likely to be sentient."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "I view animal rights as the logical extension of trait-adjusted human rights to non-human animals. However, I do not believe that non-sentient human bodies, such as brainless or brain-dead human bodies, have such human rights. By extension, I don't believe that non-human animals that lack brains possess these rights either."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.PlantBasedCVDReversal exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentPlantBasedCVDReversal : Argument
|
||||
argumentPlantBasedCVDReversal =
|
||||
{ argumentTitle = "Argument Against Plant-Based CVD Reversal"
|
||||
{ argumentTitle = toTitleCase "Argument Against Plant-Based CVD Reversal"
|
||||
, propositionTitle = "Plant-based diets do not appear to clinically reverse atherosclerosis."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "To date, there is not a single case of supposed heart disease reversal from a plant-based diet that is actually compatible with established definitions of heart disease reversal in the literature."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.PollinationReductio exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentPollinationReductio : Argument
|
||||
argumentPollinationReductio =
|
||||
{ argumentTitle = "Vegan Anti-Pollination Reductio"
|
||||
{ argumentTitle = toTitleCase "Vegan Anti-Pollination Reductio"
|
||||
, propositionTitle = "Apples are not vegan"
|
||||
, propositionReductio = "Some vegans hold to a deontic principle that any form of animal exploitation is wrong, and the products of exploitation are to be boycotted and designated non-vegan."
|
||||
, propositionSummary = "If one accepts that no animal exploitation is permissible, they're committed to some truly hilarious positions, such as apples not being vegan because we exploit the natural behaviour of bees to pollinate our apple trees."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.PolyphenolReductio exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentPolyphenolReductio : Argument
|
||||
argumentPolyphenolReductio =
|
||||
{ argumentTitle = "Anti-Polyphenol Reductio"
|
||||
{ argumentTitle = toTitleCase "Anti-Polyphenol Reductio"
|
||||
, propositionTitle = "Anti-polyphenol, ancestral diet advocates are committed to favouring GMOs."
|
||||
, propositionReductio = "Some carnivore diet proponents suggest that phytochemical compounds, such as polyphenols, are actually harmful to human beings."
|
||||
, propositionSummary = "If one is committed to the notions that polyphenols in plants are bad for humans, and that grass-fed red meat is the healthiest available type of red meat, then they're pragmatically committed to being pro-GMO to lower the grass-derived polyphenol content of grass-fed beef."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.ScratcherPioneers exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentScratcherPioneers : Argument
|
||||
argumentScratcherPioneers =
|
||||
{ argumentTitle = "Tattoo Pioneers were Scratchers"
|
||||
{ argumentTitle = toTitleCase "Tattoo Pioneers were Scratchers"
|
||||
, propositionTitle = "The original trailblazers of modern tattooing were scratchers."
|
||||
, propositionReductio = "Some tattoo artists condemn scratchers and their associated culture due to poor observation of sanitation standards and lack of mentorship and also simultaneously hold the original trailblazers of the tattoo industry in high esteem."
|
||||
, propositionSummary = "If what qualifies a given tattoo artist as a scratcher is poor observation of sanitation standards and lack of mentorship, then it's just straightforwardly entailed that the original trailblazers of the tattoo industry were scratchers."
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
module Config.Pages.Debate.Arguments.Records.SodiumCVD exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
argumentSodiumCVD : Argument
|
||||
argumentSodiumCVD =
|
||||
{ argumentTitle = "Argument for Atherogenic Sodium"
|
||||
{ argumentTitle = toTitleCase "Argument for Atherogenic Sodium"
|
||||
, propositionTitle = "Higher intakes of sodium increases cardiovascular disease risk."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "In all of the strongest analysis on the relationship between sodium intake and cardiovascular disease risk, there is a linear and proportional relationship. Particularly when the strongest measurement methods are used, such as multiple 24-hour urinary collections."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.TMAOCausality exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentTMAOCausality : Argument
|
||||
argumentTMAOCausality =
|
||||
{ argumentTitle = "Argument Against TMAO Being Causal in CVD"
|
||||
{ argumentTitle = toTitleCase "Argument Against TMAO Being Causal in CVD"
|
||||
, propositionReductio = ""
|
||||
, propositionTitle = "TMAO is not likely to be causative of heart disease."
|
||||
, propositionSummary = "In the strongest research we have on the relationship between TMAO and heart disease risk, such as with Mendelian randomization and genome-wide associational studies, there is no persuasive causal link between TMAO in the blood and heart disease risk."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.Template exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argument : Argument
|
||||
argument =
|
||||
{ argumentTitle = ""
|
||||
{ argumentTitle = toTitleCase ""
|
||||
, propositionTitle = ""
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = ""
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.TransPeople exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentTransPeople : Argument
|
||||
argumentTransPeople =
|
||||
{ argumentTitle = "Argument For Trans Identity"
|
||||
{ argumentTitle = toTitleCase "Argument For Trans Identity"
|
||||
, propositionTitle = "A trans person of the male sex is a woman and a trans person with female sex is a man."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "Virtually 100% of the debate surrounding trans identity is merely a trivial semantic disagreement about what constitutes a man or a woman. Below is a formal argument for characterization of a man and a women that maximally satisfies both parties and minimizes absurdities."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.TruncatedMeta exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentTruncatedMeta : Argument
|
||||
argumentTruncatedMeta =
|
||||
{ argumentTitle = "Argument For Truncated Meta-Analysis"
|
||||
{ argumentTitle = toTitleCase "Argument For Truncated Meta-Analysis"
|
||||
, propositionTitle = "Meta-analytic summations that include adequately powered studies to the exclusion of insufficiently powered studies will provide better causal estimates than meta-analytic summations that include both adequately powered studies and insufficiently powered studies."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "Some people argue that omission of studies from meta-analysis is bad form because the more point estimates, the better. However, I argue that there are circumstances where including more studies can actually lower the quality of causal estimates."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.UnhealthyCoconutOil exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentUnhealthyCoconutOil : Argument
|
||||
argumentUnhealthyCoconutOil =
|
||||
{ argumentTitle = "Argument For Atherogenic Coconut Oil"
|
||||
{ argumentTitle = toTitleCase "Argument For Atherogenic Coconut Oil"
|
||||
, propositionTitle = "There is not a reason to believe that coconut oil is any better for heart health than other saturated fat sources that increase LDL-C."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "LDL causally associates with heart disease in a linear and proportional manner, and in all cases exposures that durably increase LDL over time produce likewise increases in heart disease risk. Coconut oil is one such exposure."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.UnhealthyProcessedMeat exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentUnhealthyProcessedMeat : Argument
|
||||
argumentUnhealthyProcessedMeat =
|
||||
{ argumentTitle = "Argument for Unhealthy Processed Meat"
|
||||
{ argumentTitle = toTitleCase "Argument for Unhealthy Processed Meat"
|
||||
, propositionTitle = "Processed meat is overwhelmingly unhealthy."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "Even when you account for factors that could plausibly influence the results, processed meat has been shown to consistently increase the risk of morbidity and mortality, strongly suggesting that they directly contribute to worse health outcomes, particularly with respect to colorectal cancer and heart disease."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.UnhealthyRedMeat exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentUnhealthyRedMeat : Argument
|
||||
argumentUnhealthyRedMeat =
|
||||
{ argumentTitle = "Argument for Unhealthy Red Meat"
|
||||
{ argumentTitle = toTitleCase "Argument for Unhealthy Red Meat"
|
||||
, propositionTitle = "Red meat and processed meat are overwhelmingly unhealthy."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "Even when you account for factors that could plausibly influence the results, unprocessed red meat has been shown to consistently increase the risk of morbidity and mortality, strongly suggesting that they directly contribute to worse health outcomes, particularly with respect to colorectal cancer and heart disease."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.UnhealthySaturatedFat exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentUnhealthySaturatedFat : Argument
|
||||
argumentUnhealthySaturatedFat =
|
||||
{ argumentTitle = "Argument Against Saturated Fat"
|
||||
{ argumentTitle = toTitleCase "Argument Against Saturated Fat"
|
||||
, propositionTitle = "Most sources of saturated fat are overwhelmingly unhealthy."
|
||||
, propositionReductio = ""
|
||||
, propositionSummary = "Even when you account for factors that could plausibly influence the results, most animal-derived saturated fats have been shown to consistently increase the risk of morbidity and mortality, strongly suggesting that they directly contribute to worse health outcomes, particularly with respect to heart disease and non-alcoholic fatty liver disease."
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
module Config.Pages.Debate.Arguments.Records.VeganSocietyReductio exposing (..)
|
||||
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
|
||||
|
||||
argumentVeganSocietyReductio : Argument
|
||||
argumentVeganSocietyReductio =
|
||||
{ argumentTitle = "Vegan Society Definition Reductio"
|
||||
{ argumentTitle = toTitleCase "Vegan Society Definition Reductio"
|
||||
, propositionTitle = "It is vegan to eat Groot."
|
||||
, propositionReductio = "Those who hold to the Vegan Society's definition of veganism index the object of moral value to belonging to the animal kingdom."
|
||||
, propositionSummary = "If one holds to the position that exploiting a being is wrong so long as that being is an animal, then it is straightforwardly entailed that exploiting creatures like Groot would be an action compatible with veganism."
|
||||
|
|
|
@ -10,12 +10,14 @@ import Config.Pages.Debate.Gibberish.Records.Theology exposing (theologyGibberis
|
|||
import Config.Pages.Debate.Gibberish.Types exposing (..)
|
||||
|
||||
|
||||
gibberishListNumber : Int
|
||||
gibberishListNumber =
|
||||
List.length Config.Pages.Debate.Gibberish.Records.Epistemology.epistemologyGibberish.gibberishTerms
|
||||
+ List.length Config.Pages.Debate.Gibberish.Records.Metaphysics.metaphysicsGibberish.gibberishTerms
|
||||
+ List.length Config.Pages.Debate.Gibberish.Records.Normativity.normativityGibberish.gibberishTerms
|
||||
+ List.length Config.Pages.Debate.Gibberish.Records.Ontology.ontologyGibberish.gibberishTerms
|
||||
+ List.length Config.Pages.Debate.Gibberish.Records.PhilOfLanguage.philOfLanguageGibberish.gibberishTerms
|
||||
+ List.length Config.Pages.Debate.Gibberish.Records.PhilOfMind.philOfMindGibberish.gibberishTerms
|
||||
+ List.length Config.Pages.Debate.Gibberish.Records.Theology.theologyGibberish.gibberishTerms
|
||||
gibberishList : List Terms
|
||||
gibberishList =
|
||||
List.concat
|
||||
[ epistemologyGibberish.gibberishTerms
|
||||
, metaphysicsGibberish.gibberishTerms
|
||||
, normativityGibberish.gibberishTerms
|
||||
, ontologyGibberish.gibberishTerms
|
||||
, philOfLanguageGibberish.gibberishTerms
|
||||
, philOfMindGibberish.gibberishTerms
|
||||
, theologyGibberish.gibberishTerms
|
||||
]
|
||||
|
|
|
@ -17,7 +17,7 @@ metaphysicsGibberish =
|
|||
, gibberishTerms =
|
||||
[ { term = "Correspondence Theory of Truth"
|
||||
, strength = 10
|
||||
, explanation = SpecificExplanation "While I do take there to be a world outside my perception, and I do believe that the correspondence between my perceptions and the world outside of my perceptions would be a good way to infer the relative truth value of a proposition, this doesn't seem a definition of truth that is in any way actionable. This, to me, makes the correspondence theory of truth to be practically useless."
|
||||
, explanation = SpecificExplanation "While I do take there to be a world outside my perception, and I do believe that the correspondence between my perceptions and the world outside of my perceptions would be a good way to infer the relative truth value of a proposition, this doesn't seem to be in any way actionable or useful, as humans don't have access to the means of verifying truth under this model. This, to me, makes the correspondence theory of truth to be practically useless."
|
||||
}
|
||||
, { term = "Metaphysical Essence"
|
||||
, strength = 5
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
module Config.Pages.Products.Types exposing (..)
|
||||
|
||||
import Config.Helpers.References exposing (..)
|
||||
import Config.Helpers.Articles.Types exposing (References)
|
||||
|
||||
|
||||
type alias NutriDex =
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
module Pages.Blog exposing (Model, Msg, page)
|
||||
|
||||
import Config.Data.Identity exposing (pageNames)
|
||||
import Config.Helpers.Articles.Article exposing (extractFirstWords)
|
||||
import Config.Helpers.CardFormat
|
||||
exposing
|
||||
( cardContentSpacing
|
||||
|
@ -24,10 +25,17 @@ import Config.Helpers.Converters
|
|||
)
|
||||
import Config.Helpers.Format
|
||||
exposing
|
||||
( paragraphFontSize
|
||||
( headerFontSizeSmall
|
||||
, paragraphFontSize
|
||||
, paragraphSpacing
|
||||
)
|
||||
import Config.Helpers.Header exposing (..)
|
||||
import Config.Helpers.Headers.Header exposing (headerMaker)
|
||||
import Config.Helpers.Headers.Types exposing (Header)
|
||||
import Config.Helpers.Markdown
|
||||
exposing
|
||||
( renderDeviceMarkdown
|
||||
, renderDeviceMarkdownNoToc
|
||||
)
|
||||
import Config.Helpers.Response
|
||||
exposing
|
||||
( pageList
|
||||
|
@ -263,7 +271,7 @@ articleMaker article =
|
|||
, right = 0
|
||||
}
|
||||
]
|
||||
[ text article.articleDescription ]
|
||||
[ renderDeviceMarkdownNoToc (extractFirstWords article.articleBody) ]
|
||||
]
|
||||
]
|
||||
)
|
||||
|
@ -273,16 +281,16 @@ articleMaker article =
|
|||
infoRow : String -> String -> Element msg
|
||||
infoRow label value =
|
||||
row [ width fill ]
|
||||
[ el [ width <| px 85 ] <|
|
||||
paragraph
|
||||
[ el [ width <| px 88 ] <|
|
||||
el
|
||||
[ F.color colourTheme.textLightOrange
|
||||
, paragraphSpacing
|
||||
, paragraphFontSize
|
||||
, F.bold
|
||||
, F.size 18
|
||||
, headerFontSizeSmall
|
||||
, E.width fill
|
||||
]
|
||||
[ text label ]
|
||||
<|
|
||||
text label
|
||||
, el [ width fill ] <|
|
||||
paragraph
|
||||
[ F.color colourTheme.textLightGrey
|
||||
|
@ -296,8 +304,18 @@ infoRow label value =
|
|||
|
||||
articleRows : BlogArticle -> List (Element msg)
|
||||
articleRows article =
|
||||
[ infoRow "Author:" article.articleAuthor
|
||||
, infoRow "Published:" article.articlePublished
|
||||
let
|
||||
referenceCount =
|
||||
List.length article.articleReferences
|
||||
in
|
||||
[ infoRow "Published:" article.articlePublished
|
||||
, infoRow "Author:" article.articleAuthor
|
||||
, infoRow "Duration:" (String.fromInt (wordCount article.articleBody // 225) ++ " minutes")
|
||||
, infoRow "Words:" (String.fromInt (wordCount article.articleBody))
|
||||
]
|
||||
++ (if referenceCount > 2 then
|
||||
[ infoRow "Sources:" (String.fromInt referenceCount) ]
|
||||
|
||||
else
|
||||
[]
|
||||
)
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
module Pages.Blog.Bigfatsurprise exposing (Model, Msg, page)
|
||||
|
||||
import Config.Data.Identity exposing (pageNames)
|
||||
import Config.Helpers.Articles.Article exposing (articleMaker)
|
||||
import Config.Helpers.CardFormat
|
||||
exposing
|
||||
( cardContentSpacing
|
||||
|
@ -17,45 +18,16 @@ import Config.Helpers.CardFormat
|
|||
, mobileImageSize
|
||||
, topLevelBox
|
||||
)
|
||||
import Config.Helpers.Format exposing (..)
|
||||
import Config.Helpers.Header
|
||||
exposing
|
||||
( Header
|
||||
, headerMaker
|
||||
)
|
||||
import Config.Helpers.Markdown exposing (..)
|
||||
import Config.Helpers.References exposing (makeReference)
|
||||
import Config.Helpers.Headers.Types exposing (Header)
|
||||
import Config.Helpers.Response
|
||||
exposing
|
||||
( pageList
|
||||
, topLevelContainer
|
||||
)
|
||||
import Config.Helpers.StrengthBar
|
||||
exposing
|
||||
( barMaker
|
||||
, barPadding
|
||||
)
|
||||
import Config.Helpers.ToolTip exposing (..)
|
||||
import Config.Helpers.Viewport exposing (resetViewport)
|
||||
import Config.Pages.Blog.Records.BigFatSurprise exposing (articleBigFatSurprise)
|
||||
import Config.Pages.Blog.Types exposing (BlogArticle)
|
||||
import Config.Pages.Contact.Types exposing (..)
|
||||
import Config.Pages.Interviews.Types exposing (..)
|
||||
import Config.Pages.Products.Types exposing (..)
|
||||
import Config.Style.Colour exposing (colourTheme)
|
||||
import Config.Style.Transitions
|
||||
exposing
|
||||
( hoverFontDarkOrange
|
||||
, transitionStyleFast
|
||||
, transitionStyleSlow
|
||||
)
|
||||
import Effect exposing (Effect)
|
||||
import Element as E exposing (..)
|
||||
import Element.Background as B
|
||||
import Element.Border as D
|
||||
import Element.Font as F
|
||||
import Html
|
||||
import Html.Attributes as H exposing (style)
|
||||
import Layouts
|
||||
import Page exposing (Page)
|
||||
import Route exposing (Route)
|
||||
|
@ -90,7 +62,9 @@ type alias Model =
|
|||
init : () -> ( Model, Effect Msg )
|
||||
init () =
|
||||
( {}
|
||||
, Effect.none
|
||||
, Effect.map
|
||||
(\_ -> NoOp)
|
||||
(Effect.sendCmd resetViewport)
|
||||
)
|
||||
|
||||
|
||||
|
@ -152,44 +126,3 @@ articleList device =
|
|||
)
|
||||
[ articleBigFatSurprise ]
|
||||
]
|
||||
|
||||
|
||||
articleMaker : BlogArticle -> Element msg
|
||||
articleMaker article =
|
||||
column
|
||||
topLevelBox
|
||||
[ cardMaker
|
||||
[ cardTitleMaker (String.toUpper articleBigFatSurprise.articleName)
|
||||
, cardFormatter
|
||||
[ cardContentSpacing
|
||||
[ column
|
||||
fieldSpacer
|
||||
[ cardSubTitleMaker
|
||||
[ articleImage articleBigFatSurprise.articleImage
|
||||
, renderDeviceMarkdown articleBigFatSurprise.articleBody
|
||||
, articleReferences article
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
articleReferences : BlogArticle -> Element msg
|
||||
articleReferences article =
|
||||
column
|
||||
[ width fill
|
||||
, height fill
|
||||
, paddingEach
|
||||
{ top = 10
|
||||
, right = 0
|
||||
, bottom = 0
|
||||
, left = 0
|
||||
}
|
||||
]
|
||||
[ column [ width fill, F.size 15, spacing 10 ] <|
|
||||
List.map2 (\x y -> makeReference x y)
|
||||
article.articleReferences
|
||||
(List.range 1 (List.length article.articleReferences))
|
||||
]
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
module Pages.Blog.Everettvegans exposing (Model, Msg, page)
|
||||
|
||||
import Config.Data.Identity exposing (pageNames)
|
||||
import Config.Helpers.Articles.Article exposing (articleMaker)
|
||||
import Config.Helpers.CardFormat
|
||||
exposing
|
||||
( cardContentSpacing
|
||||
|
@ -17,45 +18,16 @@ import Config.Helpers.CardFormat
|
|||
, mobileImageSize
|
||||
, topLevelBox
|
||||
)
|
||||
import Config.Helpers.Format exposing (..)
|
||||
import Config.Helpers.Header
|
||||
exposing
|
||||
( Header
|
||||
, headerMaker
|
||||
)
|
||||
import Config.Helpers.Markdown exposing (..)
|
||||
import Config.Helpers.References exposing (makeReference)
|
||||
import Config.Helpers.Headers.Types exposing (Header)
|
||||
import Config.Helpers.Response
|
||||
exposing
|
||||
( pageList
|
||||
, topLevelContainer
|
||||
)
|
||||
import Config.Helpers.StrengthBar
|
||||
exposing
|
||||
( barMaker
|
||||
, barPadding
|
||||
)
|
||||
import Config.Helpers.ToolTip exposing (..)
|
||||
import Config.Helpers.Viewport exposing (resetViewport)
|
||||
import Config.Pages.Blog.Records.EverettVegans exposing (articleEverettVegans)
|
||||
import Config.Pages.Blog.Types exposing (BlogArticle)
|
||||
import Config.Pages.Contact.Types exposing (..)
|
||||
import Config.Pages.Interviews.Types exposing (..)
|
||||
import Config.Pages.Products.Types exposing (..)
|
||||
import Config.Style.Colour exposing (colourTheme)
|
||||
import Config.Style.Transitions
|
||||
exposing
|
||||
( hoverFontDarkOrange
|
||||
, transitionStyleFast
|
||||
, transitionStyleSlow
|
||||
)
|
||||
import Effect exposing (Effect)
|
||||
import Element as E exposing (..)
|
||||
import Element.Background as B
|
||||
import Element.Border as D
|
||||
import Element.Font as F
|
||||
import Html
|
||||
import Html.Attributes as H exposing (style)
|
||||
import Layouts
|
||||
import Page exposing (Page)
|
||||
import Route exposing (Route)
|
||||
|
@ -90,7 +62,9 @@ type alias Model =
|
|||
init : () -> ( Model, Effect Msg )
|
||||
init () =
|
||||
( {}
|
||||
, Effect.none
|
||||
, Effect.map
|
||||
(\_ -> NoOp)
|
||||
(Effect.sendCmd resetViewport)
|
||||
)
|
||||
|
||||
|
||||
|
@ -152,44 +126,3 @@ articleList device =
|
|||
)
|
||||
[ articleEverettVegans ]
|
||||
]
|
||||
|
||||
|
||||
articleMaker : BlogArticle -> Element msg
|
||||
articleMaker article =
|
||||
column
|
||||
topLevelBox
|
||||
[ cardMaker
|
||||
[ cardTitleMaker (String.toUpper articleEverettVegans.articleName)
|
||||
, cardFormatter
|
||||
[ cardContentSpacing
|
||||
[ column
|
||||
fieldSpacer
|
||||
[ cardSubTitleMaker
|
||||
[ articleImage articleEverettVegans.articleImage
|
||||
, renderDeviceMarkdown articleEverettVegans.articleBody
|
||||
, articleReferences article
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
articleReferences : BlogArticle -> Element msg
|
||||
articleReferences article =
|
||||
column
|
||||
[ width fill
|
||||
, height fill
|
||||
, paddingEach
|
||||
{ top = 10
|
||||
, right = 0
|
||||
, bottom = 0
|
||||
, left = 0
|
||||
}
|
||||
]
|
||||
[ column [ width fill, F.size 15, spacing 10 ] <|
|
||||
List.map2 (\x y -> makeReference x y)
|
||||
article.articleReferences
|
||||
(List.range 1 (List.length article.articleReferences))
|
||||
]
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
module Pages.Blog.Huntergatherers exposing (Model, Msg, page)
|
||||
|
||||
import Config.Data.Identity exposing (pageNames)
|
||||
import Config.Helpers.Articles.Article exposing (articleMaker)
|
||||
import Config.Helpers.CardFormat
|
||||
exposing
|
||||
( cardContentSpacing
|
||||
|
@ -17,45 +18,16 @@ import Config.Helpers.CardFormat
|
|||
, mobileImageSize
|
||||
, topLevelBox
|
||||
)
|
||||
import Config.Helpers.Format exposing (..)
|
||||
import Config.Helpers.Header
|
||||
exposing
|
||||
( Header
|
||||
, headerMaker
|
||||
)
|
||||
import Config.Helpers.Markdown exposing (..)
|
||||
import Config.Helpers.References exposing (makeReference)
|
||||
import Config.Helpers.Headers.Types exposing (Header)
|
||||
import Config.Helpers.Response
|
||||
exposing
|
||||
( pageList
|
||||
, topLevelContainer
|
||||
)
|
||||
import Config.Helpers.StrengthBar
|
||||
exposing
|
||||
( barMaker
|
||||
, barPadding
|
||||
)
|
||||
import Config.Helpers.ToolTip exposing (..)
|
||||
import Config.Helpers.Viewport exposing (resetViewport)
|
||||
import Config.Pages.Blog.Records.HunterGatherers exposing (articleHunterGatherers)
|
||||
import Config.Pages.Blog.Types exposing (BlogArticle)
|
||||
import Config.Pages.Contact.Types exposing (..)
|
||||
import Config.Pages.Interviews.Types exposing (..)
|
||||
import Config.Pages.Products.Types exposing (..)
|
||||
import Config.Style.Colour exposing (colourTheme)
|
||||
import Config.Style.Transitions
|
||||
exposing
|
||||
( hoverFontDarkOrange
|
||||
, transitionStyleFast
|
||||
, transitionStyleSlow
|
||||
)
|
||||
import Effect exposing (Effect)
|
||||
import Element as E exposing (..)
|
||||
import Element.Background as B
|
||||
import Element.Border as D
|
||||
import Element.Font as F
|
||||
import Html
|
||||
import Html.Attributes as H exposing (style)
|
||||
import Layouts
|
||||
import Page exposing (Page)
|
||||
import Route exposing (Route)
|
||||
|
@ -90,7 +62,9 @@ type alias Model =
|
|||
init : () -> ( Model, Effect Msg )
|
||||
init () =
|
||||
( {}
|
||||
, Effect.none
|
||||
, Effect.map
|
||||
(\_ -> NoOp)
|
||||
(Effect.sendCmd resetViewport)
|
||||
)
|
||||
|
||||
|
||||
|
@ -152,44 +126,3 @@ articleList device =
|
|||
)
|
||||
[ articleHunterGatherers ]
|
||||
]
|
||||
|
||||
|
||||
articleMaker : BlogArticle -> Element msg
|
||||
articleMaker article =
|
||||
column
|
||||
topLevelBox
|
||||
[ cardMaker
|
||||
[ cardTitleMaker (String.toUpper articleHunterGatherers.articleName)
|
||||
, cardFormatter
|
||||
[ cardContentSpacing
|
||||
[ column
|
||||
fieldSpacer
|
||||
[ cardSubTitleMaker
|
||||
[ articleImage articleHunterGatherers.articleImage
|
||||
, renderDeviceMarkdown articleHunterGatherers.articleBody
|
||||
, articleReferences article
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
articleReferences : BlogArticle -> Element msg
|
||||
articleReferences article =
|
||||
column
|
||||
[ width fill
|
||||
, height fill
|
||||
, paddingEach
|
||||
{ top = 10
|
||||
, right = 0
|
||||
, bottom = 0
|
||||
, left = 0
|
||||
}
|
||||
]
|
||||
[ column [ width fill, F.size 15, spacing 10 ] <|
|
||||
List.map2 (\x y -> makeReference x y)
|
||||
article.articleReferences
|
||||
(List.range 1 (List.length article.articleReferences))
|
||||
]
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
module Pages.Blog.Meatapologetics exposing (Model, Msg, page)
|
||||
|
||||
import Config.Data.Identity exposing (pageNames)
|
||||
import Config.Helpers.Articles.Article exposing (articleMaker)
|
||||
import Config.Helpers.CardFormat
|
||||
exposing
|
||||
( cardContentSpacing
|
||||
|
@ -17,45 +18,17 @@ import Config.Helpers.CardFormat
|
|||
, mobileImageSize
|
||||
, topLevelBox
|
||||
)
|
||||
import Config.Helpers.Format exposing (..)
|
||||
import Config.Helpers.Header
|
||||
exposing
|
||||
( Header
|
||||
, headerMaker
|
||||
)
|
||||
import Config.Helpers.Markdown exposing (..)
|
||||
import Config.Helpers.References exposing (makeReference)
|
||||
import Config.Helpers.Headers.Header exposing (headerMaker)
|
||||
import Config.Helpers.Headers.Types exposing (Header)
|
||||
import Config.Helpers.Response
|
||||
exposing
|
||||
( pageList
|
||||
, topLevelContainer
|
||||
)
|
||||
import Config.Helpers.StrengthBar
|
||||
exposing
|
||||
( barMaker
|
||||
, barPadding
|
||||
)
|
||||
import Config.Helpers.ToolTip exposing (..)
|
||||
import Config.Helpers.Viewport exposing (resetViewport)
|
||||
import Config.Pages.Blog.Records.MeatApologetics exposing (articleMeatApologetics)
|
||||
import Config.Pages.Blog.Types exposing (BlogArticle)
|
||||
import Config.Pages.Contact.Types exposing (..)
|
||||
import Config.Pages.Interviews.Types exposing (..)
|
||||
import Config.Pages.Products.Types exposing (..)
|
||||
import Config.Style.Colour exposing (colourTheme)
|
||||
import Config.Style.Transitions
|
||||
exposing
|
||||
( hoverFontDarkOrange
|
||||
, transitionStyleFast
|
||||
, transitionStyleSlow
|
||||
)
|
||||
import Effect exposing (Effect)
|
||||
import Element as E exposing (..)
|
||||
import Element.Background as B
|
||||
import Element.Border as D
|
||||
import Element.Font as F
|
||||
import Html
|
||||
import Html.Attributes as H exposing (style)
|
||||
import Layouts
|
||||
import Page exposing (Page)
|
||||
import Route exposing (Route)
|
||||
|
@ -90,7 +63,9 @@ type alias Model =
|
|||
init : () -> ( Model, Effect Msg )
|
||||
init () =
|
||||
( {}
|
||||
, Effect.none
|
||||
, Effect.map
|
||||
(\_ -> NoOp)
|
||||
(Effect.sendCmd resetViewport)
|
||||
)
|
||||
|
||||
|
||||
|
@ -152,44 +127,3 @@ articleList device =
|
|||
)
|
||||
[ articleMeatApologetics ]
|
||||
]
|
||||
|
||||
|
||||
articleMaker : BlogArticle -> Element msg
|
||||
articleMaker article =
|
||||
column
|
||||
topLevelBox
|
||||
[ cardMaker
|
||||
[ cardTitleMaker (String.toUpper articleMeatApologetics.articleName)
|
||||
, cardFormatter
|
||||
[ cardContentSpacing
|
||||
[ column
|
||||
fieldSpacer
|
||||
[ cardSubTitleMaker
|
||||
[ articleImage articleMeatApologetics.articleImage
|
||||
, renderDeviceMarkdown articleMeatApologetics.articleBody
|
||||
, articleReferences article
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
articleReferences : BlogArticle -> Element msg
|
||||
articleReferences article =
|
||||
column
|
||||
[ width fill
|
||||
, height fill
|
||||
, paddingEach
|
||||
{ top = 10
|
||||
, right = 0
|
||||
, bottom = 0
|
||||
, left = 0
|
||||
}
|
||||
]
|
||||
[ column [ width fill, F.size 15, spacing 10 ] <|
|
||||
List.map2 (\x y -> makeReference x y)
|
||||
article.articleReferences
|
||||
(List.range 1 (List.length article.articleReferences))
|
||||
]
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
module Pages.Blog.Nagragoodrich exposing (Model, Msg, page)
|
||||
|
||||
import Config.Data.Identity exposing (pageNames)
|
||||
import Config.Helpers.Articles.Article exposing (articleMaker)
|
||||
import Config.Helpers.CardFormat
|
||||
exposing
|
||||
( cardContentSpacing
|
||||
|
@ -17,45 +18,17 @@ import Config.Helpers.CardFormat
|
|||
, mobileImageSize
|
||||
, topLevelBox
|
||||
)
|
||||
import Config.Helpers.Format exposing (..)
|
||||
import Config.Helpers.Header
|
||||
exposing
|
||||
( Header
|
||||
, headerMaker
|
||||
)
|
||||
import Config.Helpers.Markdown exposing (..)
|
||||
import Config.Helpers.References exposing (makeReference)
|
||||
import Config.Helpers.Headers.Header exposing (headerMaker)
|
||||
import Config.Helpers.Headers.Types exposing (Header)
|
||||
import Config.Helpers.Response
|
||||
exposing
|
||||
( pageList
|
||||
, topLevelContainer
|
||||
)
|
||||
import Config.Helpers.StrengthBar
|
||||
exposing
|
||||
( barMaker
|
||||
, barPadding
|
||||
)
|
||||
import Config.Helpers.ToolTip exposing (..)
|
||||
import Config.Helpers.Viewport exposing (resetViewport)
|
||||
import Config.Pages.Blog.Records.NagraGoodrich exposing (articleNagraGoodrich)
|
||||
import Config.Pages.Blog.Types exposing (BlogArticle)
|
||||
import Config.Pages.Contact.Types exposing (..)
|
||||
import Config.Pages.Interviews.Types exposing (..)
|
||||
import Config.Pages.Products.Types exposing (..)
|
||||
import Config.Style.Colour exposing (colourTheme)
|
||||
import Config.Style.Transitions
|
||||
exposing
|
||||
( hoverFontDarkOrange
|
||||
, transitionStyleFast
|
||||
, transitionStyleSlow
|
||||
)
|
||||
import Effect exposing (Effect)
|
||||
import Element as E exposing (..)
|
||||
import Element.Background as B
|
||||
import Element.Border as D
|
||||
import Element.Font as F
|
||||
import Html
|
||||
import Html.Attributes as H exposing (style)
|
||||
import Layouts
|
||||
import Page exposing (Page)
|
||||
import Route exposing (Route)
|
||||
|
@ -90,7 +63,9 @@ type alias Model =
|
|||
init : () -> ( Model, Effect Msg )
|
||||
init () =
|
||||
( {}
|
||||
, Effect.none
|
||||
, Effect.map
|
||||
(\_ -> NoOp)
|
||||
(Effect.sendCmd resetViewport)
|
||||
)
|
||||
|
||||
|
||||
|
@ -152,43 +127,3 @@ articleList device =
|
|||
)
|
||||
[ articleNagraGoodrich ]
|
||||
]
|
||||
|
||||
|
||||
articleMaker : BlogArticle -> Element msg
|
||||
articleMaker article =
|
||||
column
|
||||
topLevelBox
|
||||
[ cardMaker
|
||||
[ cardTitleMaker (String.toUpper articleNagraGoodrich.articleName)
|
||||
, cardFormatter
|
||||
[ cardContentSpacing
|
||||
[ column
|
||||
fieldSpacer
|
||||
[ cardSubTitleMaker
|
||||
[ articleImage articleNagraGoodrich.articleImage
|
||||
, renderDeviceMarkdown articleNagraGoodrich.articleBody
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
articleReferences : BlogArticle -> Element msg
|
||||
articleReferences article =
|
||||
column
|
||||
[ width fill
|
||||
, height fill
|
||||
, paddingEach
|
||||
{ top = 10
|
||||
, right = 0
|
||||
, bottom = 0
|
||||
, left = 0
|
||||
}
|
||||
]
|
||||
[ column [ width fill, F.size 15, spacing 10 ] <|
|
||||
List.map2 (\x y -> makeReference x y)
|
||||
article.articleReferences
|
||||
(List.range 1 (List.length article.articleReferences))
|
||||
]
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
module Pages.Blog.Plantbasedmeta exposing (Model, Msg, page)
|
||||
|
||||
import Config.Data.Identity exposing (pageNames)
|
||||
import Config.Helpers.Articles.Article exposing (articleMaker)
|
||||
import Config.Helpers.CardFormat
|
||||
exposing
|
||||
( cardContentSpacing
|
||||
|
@ -17,45 +18,17 @@ import Config.Helpers.CardFormat
|
|||
, mobileImageSize
|
||||
, topLevelBox
|
||||
)
|
||||
import Config.Helpers.Format exposing (..)
|
||||
import Config.Helpers.Header
|
||||
exposing
|
||||
( Header
|
||||
, headerMaker
|
||||
)
|
||||
import Config.Helpers.Markdown exposing (..)
|
||||
import Config.Helpers.References exposing (makeReference)
|
||||
import Config.Helpers.Headers.Header exposing (headerMaker)
|
||||
import Config.Helpers.Headers.Types exposing (Header)
|
||||
import Config.Helpers.Response
|
||||
exposing
|
||||
( pageList
|
||||
, topLevelContainer
|
||||
)
|
||||
import Config.Helpers.StrengthBar
|
||||
exposing
|
||||
( barMaker
|
||||
, barPadding
|
||||
)
|
||||
import Config.Helpers.ToolTip exposing (..)
|
||||
import Config.Helpers.Viewport exposing (resetViewport)
|
||||
import Config.Pages.Blog.Records.PlantBasedMeta exposing (articlePlantBasedMeta)
|
||||
import Config.Pages.Blog.Types exposing (BlogArticle)
|
||||
import Config.Pages.Contact.Types exposing (..)
|
||||
import Config.Pages.Interviews.Types exposing (..)
|
||||
import Config.Pages.Products.Types exposing (..)
|
||||
import Config.Style.Colour exposing (colourTheme)
|
||||
import Config.Style.Transitions
|
||||
exposing
|
||||
( hoverFontDarkOrange
|
||||
, transitionStyleFast
|
||||
, transitionStyleSlow
|
||||
)
|
||||
import Effect exposing (Effect)
|
||||
import Element as E exposing (..)
|
||||
import Element.Background as B
|
||||
import Element.Border as D
|
||||
import Element.Font as F
|
||||
import Html
|
||||
import Html.Attributes as H exposing (style)
|
||||
import Layouts
|
||||
import Page exposing (Page)
|
||||
import Route exposing (Route)
|
||||
|
@ -90,7 +63,9 @@ type alias Model =
|
|||
init : () -> ( Model, Effect Msg )
|
||||
init () =
|
||||
( {}
|
||||
, Effect.none
|
||||
, Effect.map
|
||||
(\_ -> NoOp)
|
||||
(Effect.sendCmd resetViewport)
|
||||
)
|
||||
|
||||
|
||||
|
@ -152,43 +127,3 @@ articleList device =
|
|||
)
|
||||
[ articlePlantBasedMeta ]
|
||||
]
|
||||
|
||||
|
||||
articleMaker : BlogArticle -> Element msg
|
||||
articleMaker article =
|
||||
column
|
||||
topLevelBox
|
||||
[ cardMaker
|
||||
[ cardTitleMaker (String.toUpper articlePlantBasedMeta.articleName)
|
||||
, cardFormatter
|
||||
[ cardContentSpacing
|
||||
[ column
|
||||
fieldSpacer
|
||||
[ cardSubTitleMaker
|
||||
[ articleImage articlePlantBasedMeta.articleImage
|
||||
, renderDeviceMarkdown articlePlantBasedMeta.articleBody
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
articleReferences : BlogArticle -> Element msg
|
||||
articleReferences article =
|
||||
column
|
||||
[ width fill
|
||||
, height fill
|
||||
, paddingEach
|
||||
{ top = 10
|
||||
, right = 0
|
||||
, bottom = 0
|
||||
, left = 0
|
||||
}
|
||||
]
|
||||
[ column [ width fill, F.size 15, spacing 10 ] <|
|
||||
List.map2 (\x y -> makeReference x y)
|
||||
article.articleReferences
|
||||
(List.range 1 (List.length article.articleReferences))
|
||||
]
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
module Pages.Blog.Quacksmashing exposing (Model, Msg, page)
|
||||
|
||||
import Config.Data.Identity exposing (pageNames)
|
||||
import Config.Helpers.Articles.Article exposing (articleMaker)
|
||||
import Config.Helpers.CardFormat
|
||||
exposing
|
||||
( cardContentSpacing
|
||||
|
@ -17,45 +18,17 @@ import Config.Helpers.CardFormat
|
|||
, mobileImageSize
|
||||
, topLevelBox
|
||||
)
|
||||
import Config.Helpers.Format exposing (..)
|
||||
import Config.Helpers.Header
|
||||
exposing
|
||||
( Header
|
||||
, headerMaker
|
||||
)
|
||||
import Config.Helpers.Markdown exposing (..)
|
||||
import Config.Helpers.References exposing (makeReference)
|
||||
import Config.Helpers.Headers.Header exposing (headerMaker)
|
||||
import Config.Helpers.Headers.Types exposing (Header)
|
||||
import Config.Helpers.Response
|
||||
exposing
|
||||
( pageList
|
||||
, topLevelContainer
|
||||
)
|
||||
import Config.Helpers.StrengthBar
|
||||
exposing
|
||||
( barMaker
|
||||
, barPadding
|
||||
)
|
||||
import Config.Helpers.ToolTip exposing (..)
|
||||
import Config.Helpers.Viewport exposing (resetViewport)
|
||||
import Config.Pages.Blog.Records.QuackSmashing exposing (articleQuackSmashing)
|
||||
import Config.Pages.Blog.Types exposing (BlogArticle)
|
||||
import Config.Pages.Contact.Types exposing (..)
|
||||
import Config.Pages.Interviews.Types exposing (..)
|
||||
import Config.Pages.Products.Types exposing (..)
|
||||
import Config.Style.Colour exposing (colourTheme)
|
||||
import Config.Style.Transitions
|
||||
exposing
|
||||
( hoverFontDarkOrange
|
||||
, transitionStyleFast
|
||||
, transitionStyleSlow
|
||||
)
|
||||
import Effect exposing (Effect)
|
||||
import Element as E exposing (..)
|
||||
import Element.Background as B
|
||||
import Element.Border as D
|
||||
import Element.Font as F
|
||||
import Html
|
||||
import Html.Attributes as H exposing (style)
|
||||
import Layouts
|
||||
import Page exposing (Page)
|
||||
import Route exposing (Route)
|
||||
|
@ -90,7 +63,9 @@ type alias Model =
|
|||
init : () -> ( Model, Effect Msg )
|
||||
init () =
|
||||
( {}
|
||||
, Effect.none
|
||||
, Effect.map
|
||||
(\_ -> NoOp)
|
||||
(Effect.sendCmd resetViewport)
|
||||
)
|
||||
|
||||
|
||||
|
@ -152,44 +127,3 @@ articleList device =
|
|||
)
|
||||
[ articleQuackSmashing ]
|
||||
]
|
||||
|
||||
|
||||
articleMaker : BlogArticle -> Element msg
|
||||
articleMaker article =
|
||||
column
|
||||
topLevelBox
|
||||
[ cardMaker
|
||||
[ cardTitleMaker (String.toUpper articleQuackSmashing.articleName)
|
||||
, cardFormatter
|
||||
[ cardContentSpacing
|
||||
[ column
|
||||
fieldSpacer
|
||||
[ cardSubTitleMaker
|
||||
[ articleImage articleQuackSmashing.articleImage
|
||||
, renderDeviceMarkdown articleQuackSmashing.articleBody
|
||||
, articleReferences article
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
articleReferences : BlogArticle -> Element msg
|
||||
articleReferences article =
|
||||
column
|
||||
[ width fill
|
||||
, height fill
|
||||
, paddingEach
|
||||
{ top = 10
|
||||
, right = 0
|
||||
, bottom = 0
|
||||
, left = 0
|
||||
}
|
||||
]
|
||||
[ column [ width fill, F.size 15, spacing 10 ] <|
|
||||
List.map2 (\x y -> makeReference x y)
|
||||
article.articleReferences
|
||||
(List.range 1 (List.length article.articleReferences))
|
||||
]
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
module Pages.Blog.Sapiendiet exposing (Model, Msg, page)
|
||||
|
||||
import Config.Data.Identity exposing (pageNames)
|
||||
import Config.Helpers.Articles.Article exposing (articleMaker)
|
||||
import Config.Helpers.CardFormat
|
||||
exposing
|
||||
( cardContentSpacing
|
||||
|
@ -17,45 +18,17 @@ import Config.Helpers.CardFormat
|
|||
, mobileImageSize
|
||||
, topLevelBox
|
||||
)
|
||||
import Config.Helpers.Format exposing (..)
|
||||
import Config.Helpers.Header
|
||||
exposing
|
||||
( Header
|
||||
, headerMaker
|
||||
)
|
||||
import Config.Helpers.Markdown exposing (..)
|
||||
import Config.Helpers.References exposing (makeReference)
|
||||
import Config.Helpers.Headers.Header exposing (headerMaker)
|
||||
import Config.Helpers.Headers.Types exposing (Header)
|
||||
import Config.Helpers.Response
|
||||
exposing
|
||||
( pageList
|
||||
, topLevelContainer
|
||||
)
|
||||
import Config.Helpers.StrengthBar
|
||||
exposing
|
||||
( barMaker
|
||||
, barPadding
|
||||
)
|
||||
import Config.Helpers.ToolTip exposing (..)
|
||||
import Config.Helpers.Viewport exposing (resetViewport)
|
||||
import Config.Pages.Blog.Records.SapienDiet exposing (articleSapienDiet)
|
||||
import Config.Pages.Blog.Types exposing (BlogArticle)
|
||||
import Config.Pages.Contact.Types exposing (..)
|
||||
import Config.Pages.Interviews.Types exposing (..)
|
||||
import Config.Pages.Products.Types exposing (..)
|
||||
import Config.Style.Colour exposing (colourTheme)
|
||||
import Config.Style.Transitions
|
||||
exposing
|
||||
( hoverFontDarkOrange
|
||||
, transitionStyleFast
|
||||
, transitionStyleSlow
|
||||
)
|
||||
import Effect exposing (Effect)
|
||||
import Element as E exposing (..)
|
||||
import Element.Background as B
|
||||
import Element.Border as D
|
||||
import Element.Font as F
|
||||
import Html
|
||||
import Html.Attributes as H exposing (style)
|
||||
import Layouts
|
||||
import Page exposing (Page)
|
||||
import Route exposing (Route)
|
||||
|
@ -90,7 +63,9 @@ type alias Model =
|
|||
init : () -> ( Model, Effect Msg )
|
||||
init () =
|
||||
( {}
|
||||
, Effect.none
|
||||
, Effect.map
|
||||
(\_ -> NoOp)
|
||||
(Effect.sendCmd resetViewport)
|
||||
)
|
||||
|
||||
|
||||
|
@ -152,44 +127,3 @@ articleList device =
|
|||
)
|
||||
[ articleSapienDiet ]
|
||||
]
|
||||
|
||||
|
||||
articleMaker : BlogArticle -> Element msg
|
||||
articleMaker article =
|
||||
column
|
||||
topLevelBox
|
||||
[ cardMaker
|
||||
[ cardTitleMaker (String.toUpper articleSapienDiet.articleName)
|
||||
, cardFormatter
|
||||
[ cardContentSpacing
|
||||
[ column
|
||||
fieldSpacer
|
||||
[ cardSubTitleMaker
|
||||
[ articleImage articleSapienDiet.articleImage
|
||||
, renderDeviceMarkdown articleSapienDiet.articleBody
|
||||
, articleReferences article
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
articleReferences : BlogArticle -> Element msg
|
||||
articleReferences article =
|
||||
column
|
||||
[ width fill
|
||||
, height fill
|
||||
, paddingEach
|
||||
{ top = 10
|
||||
, right = 0
|
||||
, bottom = 0
|
||||
, left = 0
|
||||
}
|
||||
]
|
||||
[ column [ width fill, F.size 15, spacing 10 ] <|
|
||||
List.map2 (\x y -> makeReference x y)
|
||||
article.articleReferences
|
||||
(List.range 1 (List.length article.articleReferences))
|
||||
]
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
module Pages.Blog.Seedoils exposing (Model, Msg, page)
|
||||
|
||||
import Config.Data.Identity exposing (pageNames)
|
||||
import Config.Helpers.Articles.Article exposing (articleMaker)
|
||||
import Config.Helpers.CardFormat
|
||||
exposing
|
||||
( cardContentSpacing
|
||||
|
@ -17,45 +18,17 @@ import Config.Helpers.CardFormat
|
|||
, mobileImageSize
|
||||
, topLevelBox
|
||||
)
|
||||
import Config.Helpers.Format exposing (..)
|
||||
import Config.Helpers.Header
|
||||
exposing
|
||||
( Header
|
||||
, headerMaker
|
||||
)
|
||||
import Config.Helpers.Markdown exposing (..)
|
||||
import Config.Helpers.References exposing (makeReference)
|
||||
import Config.Helpers.Headers.Header exposing (headerMaker)
|
||||
import Config.Helpers.Headers.Types exposing (Header)
|
||||
import Config.Helpers.Response
|
||||
exposing
|
||||
( pageList
|
||||
, topLevelContainer
|
||||
)
|
||||
import Config.Helpers.StrengthBar
|
||||
exposing
|
||||
( barMaker
|
||||
, barPadding
|
||||
)
|
||||
import Config.Helpers.ToolTip exposing (..)
|
||||
import Config.Helpers.Viewport exposing (resetViewport)
|
||||
import Config.Pages.Blog.Records.SeedOils exposing (articleSeedOils)
|
||||
import Config.Pages.Blog.Types exposing (BlogArticle)
|
||||
import Config.Pages.Contact.Types exposing (..)
|
||||
import Config.Pages.Interviews.Types exposing (..)
|
||||
import Config.Pages.Products.Types exposing (..)
|
||||
import Config.Style.Colour exposing (colourTheme)
|
||||
import Config.Style.Transitions
|
||||
exposing
|
||||
( hoverFontDarkOrange
|
||||
, transitionStyleFast
|
||||
, transitionStyleSlow
|
||||
)
|
||||
import Effect exposing (Effect)
|
||||
import Element as E exposing (..)
|
||||
import Element.Background as B
|
||||
import Element.Border as D
|
||||
import Element.Font as F
|
||||
import Html
|
||||
import Html.Attributes as H exposing (style)
|
||||
import Layouts
|
||||
import Page exposing (Page)
|
||||
import Route exposing (Route)
|
||||
|
@ -90,7 +63,9 @@ type alias Model =
|
|||
init : () -> ( Model, Effect Msg )
|
||||
init () =
|
||||
( {}
|
||||
, Effect.none
|
||||
, Effect.map
|
||||
(\_ -> NoOp)
|
||||
(Effect.sendCmd resetViewport)
|
||||
)
|
||||
|
||||
|
||||
|
@ -152,44 +127,3 @@ articleList device =
|
|||
)
|
||||
[ articleSeedOils ]
|
||||
]
|
||||
|
||||
|
||||
articleMaker : BlogArticle -> Element msg
|
||||
articleMaker article =
|
||||
column
|
||||
topLevelBox
|
||||
[ cardMaker
|
||||
[ cardTitleMaker (String.toUpper articleSeedOils.articleName)
|
||||
, cardFormatter
|
||||
[ cardContentSpacing
|
||||
[ column
|
||||
fieldSpacer
|
||||
[ cardSubTitleMaker
|
||||
[ articleImage articleSeedOils.articleImage
|
||||
, renderDeviceMarkdown articleSeedOils.articleBody
|
||||
, articleReferences article
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
articleReferences : BlogArticle -> Element msg
|
||||
articleReferences article =
|
||||
column
|
||||
[ width fill
|
||||
, height fill
|
||||
, paddingEach
|
||||
{ top = 10
|
||||
, right = 0
|
||||
, bottom = 0
|
||||
, left = 0
|
||||
}
|
||||
]
|
||||
[ column [ width fill, F.size 15, spacing 10 ] <|
|
||||
List.map2 (\x y -> makeReference x y)
|
||||
article.articleReferences
|
||||
(List.range 1 (List.length article.articleReferences))
|
||||
]
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
module Pages.Blog.Shenanigans exposing (Model, Msg, page)
|
||||
|
||||
import Config.Data.Identity exposing (pageNames)
|
||||
import Config.Helpers.Articles.Article exposing (articleMaker)
|
||||
import Config.Helpers.CardFormat
|
||||
exposing
|
||||
( cardContentSpacing
|
||||
|
@ -17,45 +18,17 @@ import Config.Helpers.CardFormat
|
|||
, mobileImageSize
|
||||
, topLevelBox
|
||||
)
|
||||
import Config.Helpers.Format exposing (..)
|
||||
import Config.Helpers.Header
|
||||
exposing
|
||||
( Header
|
||||
, headerMaker
|
||||
)
|
||||
import Config.Helpers.Markdown exposing (..)
|
||||
import Config.Helpers.References exposing (makeReference)
|
||||
import Config.Helpers.Headers.Header exposing (headerMaker)
|
||||
import Config.Helpers.Headers.Types exposing (Header)
|
||||
import Config.Helpers.Response
|
||||
exposing
|
||||
( pageList
|
||||
, topLevelContainer
|
||||
)
|
||||
import Config.Helpers.StrengthBar
|
||||
exposing
|
||||
( barMaker
|
||||
, barPadding
|
||||
)
|
||||
import Config.Helpers.ToolTip exposing (..)
|
||||
import Config.Helpers.Viewport exposing (resetViewport)
|
||||
import Config.Pages.Blog.Records.Shenangians exposing (articleShenanigans)
|
||||
import Config.Pages.Blog.Types exposing (BlogArticle)
|
||||
import Config.Pages.Contact.Types exposing (..)
|
||||
import Config.Pages.Interviews.Types exposing (..)
|
||||
import Config.Pages.Products.Types exposing (..)
|
||||
import Config.Style.Colour exposing (colourTheme)
|
||||
import Config.Style.Transitions
|
||||
exposing
|
||||
( hoverFontDarkOrange
|
||||
, transitionStyleFast
|
||||
, transitionStyleSlow
|
||||
)
|
||||
import Effect exposing (Effect)
|
||||
import Element as E exposing (..)
|
||||
import Element.Background as B
|
||||
import Element.Border as D
|
||||
import Element.Font as F
|
||||
import Html
|
||||
import Html.Attributes as H exposing (style)
|
||||
import Layouts
|
||||
import Page exposing (Page)
|
||||
import Route exposing (Route)
|
||||
|
@ -90,7 +63,9 @@ type alias Model =
|
|||
init : () -> ( Model, Effect Msg )
|
||||
init () =
|
||||
( {}
|
||||
, Effect.none
|
||||
, Effect.map
|
||||
(\_ -> NoOp)
|
||||
(Effect.sendCmd resetViewport)
|
||||
)
|
||||
|
||||
|
||||
|
@ -152,43 +127,3 @@ articleList device =
|
|||
)
|
||||
[ articleShenanigans ]
|
||||
]
|
||||
|
||||
|
||||
articleMaker : BlogArticle -> Element msg
|
||||
articleMaker article =
|
||||
column
|
||||
topLevelBox
|
||||
[ cardMaker
|
||||
[ cardTitleMaker (String.toUpper articleShenanigans.articleName)
|
||||
, cardFormatter
|
||||
[ cardContentSpacing
|
||||
[ column
|
||||
fieldSpacer
|
||||
[ cardSubTitleMaker
|
||||
[ articleImage articleShenanigans.articleImage
|
||||
, renderDeviceMarkdown articleShenanigans.articleBody
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
articleReferences : BlogArticle -> Element msg
|
||||
articleReferences article =
|
||||
column
|
||||
[ width fill
|
||||
, height fill
|
||||
, paddingEach
|
||||
{ top = 10
|
||||
, right = 0
|
||||
, bottom = 0
|
||||
, left = 0
|
||||
}
|
||||
]
|
||||
[ column [ width fill, F.size 15, spacing 10 ] <|
|
||||
List.map2 (\x y -> makeReference x y)
|
||||
article.articleReferences
|
||||
(List.range 1 (List.length article.articleReferences))
|
||||
]
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
module Pages.Blog.Sweetdeception exposing (Model, Msg, page)
|
||||
|
||||
import Config.Data.Identity exposing (pageNames)
|
||||
import Config.Helpers.Articles.Article exposing (articleMaker)
|
||||
import Config.Helpers.CardFormat
|
||||
exposing
|
||||
( cardContentSpacing
|
||||
|
@ -17,45 +18,17 @@ import Config.Helpers.CardFormat
|
|||
, mobileImageSize
|
||||
, topLevelBox
|
||||
)
|
||||
import Config.Helpers.Format exposing (..)
|
||||
import Config.Helpers.Header
|
||||
exposing
|
||||
( Header
|
||||
, headerMaker
|
||||
)
|
||||
import Config.Helpers.Markdown exposing (..)
|
||||
import Config.Helpers.References exposing (makeReference)
|
||||
import Config.Helpers.Headers.Header exposing (headerMaker)
|
||||
import Config.Helpers.Headers.Types exposing (Header)
|
||||
import Config.Helpers.Response
|
||||
exposing
|
||||
( pageList
|
||||
, topLevelContainer
|
||||
)
|
||||
import Config.Helpers.StrengthBar
|
||||
exposing
|
||||
( barMaker
|
||||
, barPadding
|
||||
)
|
||||
import Config.Helpers.ToolTip exposing (..)
|
||||
import Config.Helpers.Viewport exposing (resetViewport)
|
||||
import Config.Pages.Blog.Records.SweetDeception exposing (articleSweetDeception)
|
||||
import Config.Pages.Blog.Types exposing (BlogArticle)
|
||||
import Config.Pages.Contact.Types exposing (..)
|
||||
import Config.Pages.Interviews.Types exposing (..)
|
||||
import Config.Pages.Products.Types exposing (..)
|
||||
import Config.Style.Colour exposing (colourTheme)
|
||||
import Config.Style.Transitions
|
||||
exposing
|
||||
( hoverFontDarkOrange
|
||||
, transitionStyleFast
|
||||
, transitionStyleSlow
|
||||
)
|
||||
import Effect exposing (Effect)
|
||||
import Element as E exposing (..)
|
||||
import Element.Background as B
|
||||
import Element.Border as D
|
||||
import Element.Font as F
|
||||
import Html
|
||||
import Html.Attributes as H exposing (style)
|
||||
import Layouts
|
||||
import Page exposing (Page)
|
||||
import Route exposing (Route)
|
||||
|
@ -90,7 +63,9 @@ type alias Model =
|
|||
init : () -> ( Model, Effect Msg )
|
||||
init () =
|
||||
( {}
|
||||
, Effect.none
|
||||
, Effect.map
|
||||
(\_ -> NoOp)
|
||||
(Effect.sendCmd resetViewport)
|
||||
)
|
||||
|
||||
|
||||
|
@ -152,44 +127,3 @@ articleList device =
|
|||
)
|
||||
[ articleSweetDeception ]
|
||||
]
|
||||
|
||||
|
||||
articleMaker : BlogArticle -> Element msg
|
||||
articleMaker article =
|
||||
column
|
||||
topLevelBox
|
||||
[ cardMaker
|
||||
[ cardTitleMaker (String.toUpper articleSweetDeception.articleName)
|
||||
, cardFormatter
|
||||
[ cardContentSpacing
|
||||
[ column
|
||||
fieldSpacer
|
||||
[ cardSubTitleMaker
|
||||
[ articleImage articleSweetDeception.articleImage
|
||||
, renderDeviceMarkdown articleSweetDeception.articleBody
|
||||
, articleReferences article
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
articleReferences : BlogArticle -> Element msg
|
||||
articleReferences article =
|
||||
column
|
||||
[ width fill
|
||||
, height fill
|
||||
, paddingEach
|
||||
{ top = 10
|
||||
, right = 0
|
||||
, bottom = 0
|
||||
, left = 0
|
||||
}
|
||||
]
|
||||
[ column [ width fill, F.size 15, spacing 10 ] <|
|
||||
List.map2 (\x y -> makeReference x y)
|
||||
article.articleReferences
|
||||
(List.range 1 (List.length article.articleReferences))
|
||||
]
|
||||
|
|
|
@ -18,26 +18,21 @@ import Config.Helpers.CardFormat
|
|||
, topLevelBox
|
||||
)
|
||||
import Config.Helpers.Format exposing (..)
|
||||
import Config.Helpers.Header
|
||||
exposing
|
||||
( Header
|
||||
, headerMaker
|
||||
)
|
||||
import Config.Helpers.Headers.Header exposing (headerMaker)
|
||||
import Config.Helpers.Headers.Types exposing (Header)
|
||||
import Config.Helpers.Response
|
||||
exposing
|
||||
( pageList
|
||||
, topLevelContainer
|
||||
)
|
||||
import Config.Helpers.StrengthBar
|
||||
import Config.Helpers.ServiceFormat
|
||||
exposing
|
||||
( barMaker
|
||||
, barPadding
|
||||
( chunkMaker
|
||||
, titleMaker
|
||||
)
|
||||
import Config.Helpers.ToolTip exposing (..)
|
||||
import Config.Helpers.Viewport exposing (resetViewport)
|
||||
import Config.Pages.Contact.Types exposing (..)
|
||||
import Config.Pages.Interviews.Types exposing (..)
|
||||
import Config.Pages.Products.Types exposing (..)
|
||||
import Config.Style.Colour exposing (colourTheme)
|
||||
import Config.Style.Transitions
|
||||
exposing
|
||||
|
@ -185,48 +180,16 @@ instructionBody =
|
|||
, right = 0
|
||||
}
|
||||
]
|
||||
[ paragraph
|
||||
([ F.color colourTheme.textLightGrey
|
||||
, paragraphSpacing
|
||||
, paragraphFontSize
|
||||
]
|
||||
++ [ F.alignLeft
|
||||
, width fill
|
||||
]
|
||||
)
|
||||
[ chunkMaker
|
||||
[ text "The following terms may seem unreasonable to some, but after years on a large platform, I've learned the importance of filtering the criticisms I receive. Most feedback I receive is just vague gesturing and lacks substance, making some sort of quality filter essential. Thank you for your patience and understanding." ]
|
||||
, paragraph
|
||||
([ F.color colourTheme.textLightGrey
|
||||
, paragraphSpacing
|
||||
, paragraphFontSize
|
||||
]
|
||||
++ [ F.alignLeft
|
||||
, width fill
|
||||
]
|
||||
)
|
||||
, chunkMaker
|
||||
[ text "Please keep in mind that any failure to comply with the following terms and conditions will forfeit your access to my time and attention. I ask that you respect my time and read these terms carefully. You are the one requesting an audience with me, and my time is mine to donate as I see fit. If you wish to submit your criticisms, you must do so on my terms, following the rules and conditions that streamline the process for me." ]
|
||||
, paragraph
|
||||
([ F.color colourTheme.textLightGrey
|
||||
, paragraphSpacing
|
||||
, paragraphFontSize
|
||||
, F.bold
|
||||
]
|
||||
++ [ F.center
|
||||
, width fill
|
||||
, paddingEach
|
||||
{ top = 10
|
||||
, bottom = 10
|
||||
, left = 0
|
||||
, right = 0
|
||||
}
|
||||
]
|
||||
)
|
||||
[ el
|
||||
[ F.color colourTheme.textLightOrange
|
||||
, F.size 18
|
||||
]
|
||||
<|
|
||||
text "Terms and Conditions"
|
||||
, column
|
||||
[ centerX
|
||||
, width fill
|
||||
]
|
||||
[ divider
|
||||
, titleMaker (String.toUpper "Terms and Conditions")
|
||||
]
|
||||
, column [ spacing 10 ] <|
|
||||
List.indexedMap
|
||||
|
@ -255,38 +218,11 @@ instructionBody =
|
|||
]
|
||||
)
|
||||
termsAndConditions
|
||||
, paragraph
|
||||
([ F.color colourTheme.textLightGrey
|
||||
, paragraphSpacing
|
||||
, paragraphFontSize
|
||||
, F.bold
|
||||
]
|
||||
++ [ F.center
|
||||
, width fill
|
||||
, paddingEach
|
||||
{ top = 10
|
||||
, bottom = 10
|
||||
, left = 0
|
||||
, right = 0
|
||||
}
|
||||
]
|
||||
)
|
||||
[ el
|
||||
[ F.color colourTheme.textLightOrange
|
||||
, F.size 18
|
||||
]
|
||||
<|
|
||||
text "Additional Clarifications"
|
||||
, column [ centerX, width fill ]
|
||||
[ divider
|
||||
, titleMaker (String.toUpper "Additional Clarifications")
|
||||
]
|
||||
, paragraph
|
||||
([ F.color colourTheme.textLightGrey
|
||||
, paragraphSpacing
|
||||
, paragraphFontSize
|
||||
]
|
||||
++ [ F.alignLeft
|
||||
, width fill
|
||||
]
|
||||
)
|
||||
, chunkMaker
|
||||
[ text "• "
|
||||
, text "You are only allowed to post one criticism at a time in the "
|
||||
, newTabLink []
|
||||
|
@ -295,35 +231,11 @@ instructionBody =
|
|||
}
|
||||
, text " channel. You may post an additional criticism only after the previous one has been addressed and resolved to my satisfaction. This policy aims to reduce spamming, rambling, and Gish galloping, and to encourage linear discourse."
|
||||
]
|
||||
, paragraph
|
||||
([ F.color colourTheme.textLightGrey
|
||||
, paragraphSpacing
|
||||
, paragraphFontSize
|
||||
]
|
||||
++ [ F.alignLeft
|
||||
, width fill
|
||||
]
|
||||
)
|
||||
, chunkMaker
|
||||
[ text "• ", text "You may or may not be asked to voice chat about your criticism. While your willingness to engage in voice chat is a necessary condition for submitting your criticism, it does not guarantee that a voice chat will be requested. If your initial criticism is clear and I agree with it, then no voice chat will be required." ]
|
||||
, paragraph
|
||||
([ F.color colourTheme.textLightGrey
|
||||
, paragraphSpacing
|
||||
, paragraphFontSize
|
||||
]
|
||||
++ [ F.alignLeft
|
||||
, width fill
|
||||
]
|
||||
)
|
||||
, chunkMaker
|
||||
[ text "• ", text "You may or may not be asked to have your criticism formalized. While your willingness to have your criticism formalized is a necessary condition for submitting your criticism, it does not guarantee that a formalization will be requested. If your initial criticism is clear and I agree with it, then no formalization will be required." ]
|
||||
, paragraph
|
||||
([ F.color colourTheme.textLightGrey
|
||||
, paragraphSpacing
|
||||
, paragraphFontSize
|
||||
]
|
||||
++ [ F.alignLeft
|
||||
, width fill
|
||||
]
|
||||
)
|
||||
, chunkMaker
|
||||
[ text "• "
|
||||
, text "If I find it necessary to access a text-based channel (for simple clarifying questions, for example), then either I or a moderator will open a new thread in the "
|
||||
, newTabLink []
|
||||
|
@ -332,15 +244,7 @@ instructionBody =
|
|||
}
|
||||
, text " channel. There we can then engage in a text-based discussion and/or ping other users if needed."
|
||||
]
|
||||
, paragraph
|
||||
([ F.color colourTheme.textLightGrey
|
||||
, paragraphSpacing
|
||||
, paragraphFontSize
|
||||
]
|
||||
++ [ F.alignLeft
|
||||
, width fill
|
||||
]
|
||||
)
|
||||
, chunkMaker
|
||||
[ text "• ", text "I will only request that your criticism be formalized if I do not understand it and we have exhausted all other reasonable means of clarification. If formalization is requested, you will not need to do it yourself, as I recognize that not everyone understands formal logic. If formalization is requested and I am unavailable to assist you, you may ping the @Logic role, and another user may help you." ]
|
||||
]
|
||||
|
||||
|
|
|
@ -29,24 +29,23 @@ import Config.Helpers.CardFormat
|
|||
import Config.Helpers.Converters exposing (formatName)
|
||||
import Config.Helpers.Format
|
||||
exposing
|
||||
( paragraphFontSize
|
||||
( headerFontSizeSmall
|
||||
, paragraphFontSize
|
||||
, paragraphSpacing
|
||||
)
|
||||
import Config.Helpers.Headers.Header exposing (headerMaker)
|
||||
import Config.Helpers.Headers.Types exposing (Header)
|
||||
import Config.Helpers.Response
|
||||
exposing
|
||||
( pageList
|
||||
, topLevelContainer
|
||||
)
|
||||
import Config.Helpers.ServiceFormat exposing (chunkMaker)
|
||||
import Config.Helpers.Viewport exposing (resetViewport)
|
||||
import Config.Pages.Debate.Arguments.List exposing (argumentListNumber)
|
||||
import Config.Pages.Debate.Cuckery.List exposing (cuckListNumber)
|
||||
import Config.Pages.Debate.Gibberish.List exposing (gibberishListNumber)
|
||||
import Config.Pages.Debate.Arguments.List exposing (argumentList)
|
||||
import Config.Pages.Debate.Cuckery.List exposing (cuckList)
|
||||
import Config.Pages.Debate.Gibberish.List exposing (gibberishList)
|
||||
import Config.Pages.Debate.Types exposing (..)
|
||||
import Config.Helpers.Header
|
||||
exposing
|
||||
( Header
|
||||
, headerMaker
|
||||
)
|
||||
import Config.Style.Colour as T exposing (colourTheme)
|
||||
import Config.Style.Glow
|
||||
exposing
|
||||
|
@ -219,7 +218,7 @@ mobileDebateMaker debate =
|
|||
[ mobileCardMaker mobileImageBoxSize mobileImageSize (debateImage debate) debate.debateLink
|
||||
, column
|
||||
[ width fill ]
|
||||
[]
|
||||
[ descriptionMaker debate ]
|
||||
]
|
||||
]
|
||||
]
|
||||
|
@ -247,13 +246,12 @@ descriptionMaker debate =
|
|||
, centerX
|
||||
, spacing 3
|
||||
]
|
||||
[ row []
|
||||
[ row [ spacing 5 ]
|
||||
[ paragraph
|
||||
[ F.color colourTheme.textLightOrange
|
||||
, paragraphSpacing
|
||||
, paragraphFontSize
|
||||
, F.bold
|
||||
, F.size 18
|
||||
, headerFontSizeSmall
|
||||
, E.width fill
|
||||
]
|
||||
[ if debate.debateTitle == "Arguments" then
|
||||
|
@ -267,27 +265,18 @@ descriptionMaker debate =
|
|||
|
||||
else
|
||||
text ""
|
||||
, text (String.fromInt debate.debateCount)
|
||||
|> el
|
||||
[ F.color colourTheme.textLightGrey
|
||||
, F.regular
|
||||
, F.size 16
|
||||
]
|
||||
]
|
||||
, text (String.fromInt debate.debateCount)
|
||||
|> el
|
||||
[ F.color colourTheme.textLightGrey
|
||||
, F.regular
|
||||
, F.size 16
|
||||
]
|
||||
]
|
||||
, row [ width fill ]
|
||||
[ paragraph
|
||||
[ F.color colourTheme.textLightGrey
|
||||
, paragraphSpacing
|
||||
, paragraphFontSize
|
||||
, spacing 3
|
||||
, F.regular
|
||||
, F.alignLeft
|
||||
, F.size 16
|
||||
]
|
||||
, el [ width fill ] <|
|
||||
chunkMaker
|
||||
[ text debate.debateDescription
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
|
@ -299,7 +288,7 @@ debateArguments =
|
|||
in
|
||||
{ debateTitle = name
|
||||
, debateLink = Path.toString Path.Debate_Arguments
|
||||
, debateCount = argumentListNumber
|
||||
, debateCount = List.length argumentList
|
||||
, debateImage = formatName name
|
||||
, isNewTabLink = False
|
||||
, debateDescription = "This page features arguments that I hold to be sound, though with varying degrees of confidence. I'm open to hearing all challenges, as I am ready to engage with any substantive critiques and defend any argument listed. I have additionally included a confidence meter with each argument to give readers a clearer understanding of how strongly I hold to the argument."
|
||||
|
@ -314,7 +303,7 @@ debateCuckList =
|
|||
in
|
||||
{ debateTitle = name
|
||||
, debateLink = Path.toString Path.Debate_Cucklist
|
||||
, debateCount = cuckListNumber
|
||||
, debateCount = List.length cuckList
|
||||
, debateImage = formatName name
|
||||
, isNewTabLink = False
|
||||
, debateDescription = "This page features a list of complete fucking morons who wrote cheques with their mouths that their asses ultimately couldn't cash. Each person included in this list has dodged debating me in some way, shape, or form. Whether it's simply ignoring invitations, or outright refusing to engage, or agreeing to debate and then subsequently withdrawing. All such instances are catalogued here."
|
||||
|
@ -329,7 +318,7 @@ debateGibberish =
|
|||
in
|
||||
{ debateTitle = name
|
||||
, debateLink = Path.toString Path.Debate_Gibberish
|
||||
, debateCount = gibberishListNumber
|
||||
, debateCount = List.length gibberishList
|
||||
, debateImage = formatName name
|
||||
, isNewTabLink = False
|
||||
, debateDescription = "This page is specifically for terms and ostensible concepts that I don't have a good reason to believe are understandable from at least one viewpoint. If the clarification of a philosophical term is unsatisfying or unsuccessful, and my interlocutor has exhausted all means of rendering the concept to me, the term ends up here until someone explains to me what the fuck it even means."
|
||||
|
|
|
@ -21,11 +21,8 @@ import Config.Helpers.Format
|
|||
( paragraphFontSize
|
||||
, paragraphSpacing
|
||||
)
|
||||
import Config.Helpers.Header
|
||||
exposing
|
||||
( Header
|
||||
, headerMaker
|
||||
)
|
||||
import Config.Helpers.Headers.Header exposing (headerMaker)
|
||||
import Config.Helpers.Headers.Types exposing (Header)
|
||||
import Config.Helpers.Response
|
||||
exposing
|
||||
( pageList
|
||||
|
@ -41,9 +38,9 @@ import Config.Helpers.Viewport exposing (resetViewport)
|
|||
import Config.Pages.Debate.Arguments.List
|
||||
exposing
|
||||
( argumentList
|
||||
, argumentListNumber
|
||||
)
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
import Config.Style.Colour exposing (colourTheme)
|
||||
import Config.Style.Glow
|
||||
exposing
|
||||
|
@ -693,7 +690,7 @@ formalizationMaker argument padding =
|
|||
[ F.color colourTheme.textLightOrange
|
||||
, F.bold
|
||||
, spacing 3
|
||||
, F.size 17
|
||||
, paragraphFontSize
|
||||
]
|
||||
[ text
|
||||
(if entryIndex < List.length argumentEntry.premises then
|
||||
|
|
|
@ -22,6 +22,8 @@ import Config.Helpers.Format
|
|||
( paragraphFontSize
|
||||
, paragraphSpacing
|
||||
)
|
||||
import Config.Helpers.Headers.Header exposing (headerMaker)
|
||||
import Config.Helpers.Headers.Types exposing (Header)
|
||||
import Config.Helpers.Response
|
||||
exposing
|
||||
( pageList
|
||||
|
@ -34,11 +36,6 @@ import Config.Pages.Debate.Cuckery.List
|
|||
, cuckListNumber
|
||||
)
|
||||
import Config.Pages.Debate.Cuckery.Types exposing (..)
|
||||
import Config.Helpers.Header
|
||||
exposing
|
||||
( Header
|
||||
, headerMaker
|
||||
)
|
||||
import Config.Style.Colour exposing (colourTheme)
|
||||
import Config.Style.Transitions
|
||||
exposing
|
||||
|
|
|
@ -21,6 +21,8 @@ import Config.Helpers.Format
|
|||
( paragraphFontSize
|
||||
, paragraphSpacing
|
||||
)
|
||||
import Config.Helpers.Headers.Header exposing (headerMaker)
|
||||
import Config.Helpers.Headers.Types exposing (Header)
|
||||
import Config.Helpers.Response
|
||||
exposing
|
||||
( pageList
|
||||
|
@ -34,7 +36,8 @@ import Config.Helpers.StrengthBar
|
|||
import Config.Helpers.ToolTip exposing (tooltip)
|
||||
import Config.Helpers.Viewport exposing (resetViewport)
|
||||
import Config.Pages.Debate.Arguments.Types exposing (..)
|
||||
import Config.Pages.Debate.Gibberish.List exposing (gibberishListNumber)
|
||||
import Config.Helpers.Converters exposing (toTitleCase)
|
||||
import Config.Pages.Debate.Gibberish.List exposing (gibberishList)
|
||||
import Config.Pages.Debate.Gibberish.Records.Epistemology exposing (epistemologyGibberish)
|
||||
import Config.Pages.Debate.Gibberish.Records.Metaphysics exposing (metaphysicsGibberish)
|
||||
import Config.Pages.Debate.Gibberish.Records.Normativity exposing (normativityGibberish)
|
||||
|
@ -43,12 +46,6 @@ import Config.Pages.Debate.Gibberish.Records.PhilOfLanguage exposing (philOfLang
|
|||
import Config.Pages.Debate.Gibberish.Records.PhilOfMind exposing (philOfMindGibberish)
|
||||
import Config.Pages.Debate.Gibberish.Records.Theology exposing (theologyGibberish)
|
||||
import Config.Pages.Debate.Gibberish.Types exposing (..)
|
||||
import Config.Helpers.Header exposing (..)
|
||||
import Config.Helpers.Header
|
||||
exposing
|
||||
( Header
|
||||
, headerMaker
|
||||
)
|
||||
import Config.Style.Colour exposing (colourTheme)
|
||||
import Effect exposing (Effect)
|
||||
import Element as E exposing (..)
|
||||
|
|
|
@ -18,9 +18,12 @@ import Config.Helpers.CardFormat
|
|||
)
|
||||
import Config.Helpers.Format
|
||||
exposing
|
||||
( paragraphFontSize
|
||||
( headerFontSizeSmall
|
||||
, paragraphFontSize
|
||||
, paragraphSpacing
|
||||
)
|
||||
import Config.Helpers.Headers.Header exposing (headerMaker)
|
||||
import Config.Helpers.Headers.Types exposing (Header)
|
||||
import Config.Helpers.Response
|
||||
exposing
|
||||
( pageList
|
||||
|
@ -42,12 +45,6 @@ import Config.Pages.Donate.Records.PayPal exposing (donatePayPal)
|
|||
import Config.Pages.Donate.Records.Stripe exposing (donateStripe)
|
||||
import Config.Pages.Donate.Records.YouTube exposing (donateYouTube)
|
||||
import Config.Pages.Donate.Types exposing (..)
|
||||
import Config.Helpers.Header exposing (..)
|
||||
import Config.Helpers.Header
|
||||
exposing
|
||||
( Header
|
||||
, headerMaker
|
||||
)
|
||||
import Config.Style.Colour as T exposing (..)
|
||||
import Effect exposing (Effect)
|
||||
import Element as E exposing (..)
|
||||
|
@ -152,13 +149,13 @@ donateList device =
|
|||
[ donateHeader ]
|
||||
, (case ( device.class, device.orientation ) of
|
||||
( Phone, Portrait ) ->
|
||||
List.map donateMakerMobile
|
||||
List.map (\donate -> donateMakerMobile donate device)
|
||||
|
||||
( Tablet, Portrait ) ->
|
||||
List.map donateMakerMobile
|
||||
List.map (\donate -> donateMakerMobile donate device)
|
||||
|
||||
_ ->
|
||||
List.map donateMaker
|
||||
List.map (\donate -> donateMaker donate device)
|
||||
)
|
||||
[ donateLiberaPay
|
||||
, donateStripe
|
||||
|
@ -182,20 +179,20 @@ donateHeader =
|
|||
}
|
||||
|
||||
|
||||
donateMaker : Donate -> Element msg
|
||||
donateMaker donate =
|
||||
donateMaker : Donate -> Device -> Element msg
|
||||
donateMaker donate device =
|
||||
row
|
||||
topLevelBox
|
||||
[ desktopCardMaker desktopImageBoxSize desktopImageSize (donateImage donate) (donateLink donate)
|
||||
[ desktopCardMaker desktopImageBoxSize desktopImageSize (donateImage donate) donate.donateLink
|
||||
, cardMaker
|
||||
[ cardTitleMaker (donateTitle donate)
|
||||
[ cardTitleMaker donate.donateName
|
||||
, cardFormatter
|
||||
[ cardContentSpacing
|
||||
[ column
|
||||
fieldSpacer
|
||||
[ feeMaker donate
|
||||
, preferenceMaker donate
|
||||
, tableMaker donate
|
||||
, tableMaker donate device
|
||||
, proTitleMaker donate
|
||||
, proMaker donate
|
||||
, conTitleMaker donate
|
||||
|
@ -207,13 +204,13 @@ donateMaker donate =
|
|||
]
|
||||
|
||||
|
||||
donateMakerMobile : Donate -> Element msg
|
||||
donateMakerMobile donate =
|
||||
donateMakerMobile : Donate -> Device -> Element msg
|
||||
donateMakerMobile donate device =
|
||||
row
|
||||
topLevelBox
|
||||
[ column [] []
|
||||
, cardMaker
|
||||
[ cardTitleMaker (donateTitle donate)
|
||||
[ cardTitleMaker donate.donateName
|
||||
, cardFormatter
|
||||
[ cardContentSpacing
|
||||
[ column
|
||||
|
@ -222,14 +219,14 @@ donateMakerMobile donate =
|
|||
[ mobileCardMaker mobileImageBoxSize
|
||||
mobileImageSize
|
||||
(donateImage donate)
|
||||
(donateLink donate)
|
||||
donate.donateLink
|
||||
, column
|
||||
[ width fill ]
|
||||
[ feeMaker donate
|
||||
, preferenceMaker donate
|
||||
]
|
||||
]
|
||||
, tableMakerMobile donate
|
||||
, tableMaker donate device
|
||||
, proTitleMaker donate
|
||||
, proMaker donate
|
||||
, conTitleMaker donate
|
||||
|
@ -253,16 +250,6 @@ donateImage donate =
|
|||
}
|
||||
|
||||
|
||||
donateTitle : Donate -> String
|
||||
donateTitle donate =
|
||||
donate.donateName
|
||||
|
||||
|
||||
donateLink : Donate -> String
|
||||
donateLink donate =
|
||||
donate.donateLink
|
||||
|
||||
|
||||
donateWidth =
|
||||
width <| px 45
|
||||
|
||||
|
@ -270,64 +257,64 @@ donateWidth =
|
|||
feeMaker : Donate -> Element msg
|
||||
feeMaker donate =
|
||||
row
|
||||
([ F.color colourTheme.textLightGrey
|
||||
, paragraphSpacing
|
||||
, paragraphFontSize
|
||||
, F.bold
|
||||
]
|
||||
++ [ F.size 18
|
||||
, E.width fill
|
||||
]
|
||||
)
|
||||
[ F.color colourTheme.textLightOrange
|
||||
, paragraphSpacing
|
||||
, F.bold
|
||||
, headerFontSizeSmall
|
||||
, E.width fill
|
||||
, spacing 5
|
||||
]
|
||||
[ column
|
||||
[ alignTop
|
||||
, donateWidth
|
||||
]
|
||||
[ text "Fees:"
|
||||
]
|
||||
, column
|
||||
, el
|
||||
[ E.width fill
|
||||
, alignLeft
|
||||
]
|
||||
[ paragraph [ F.regular ]
|
||||
[ el [ F.color colourTheme.textLightOrange ] <|
|
||||
text donate.donateFees
|
||||
<|
|
||||
el
|
||||
[ F.regular
|
||||
, paragraphFontSize
|
||||
, F.color colourTheme.textLightGrey
|
||||
]
|
||||
]
|
||||
<|
|
||||
text donate.donateFees
|
||||
]
|
||||
|
||||
|
||||
proTitleMaker : Donate -> Element msg
|
||||
proTitleMaker donate =
|
||||
row
|
||||
[ F.color colourTheme.textLightGrey
|
||||
[ F.color colourTheme.textLightOrange
|
||||
, paragraphSpacing
|
||||
, paragraphFontSize
|
||||
, headerFontSizeSmall
|
||||
, F.bold
|
||||
]
|
||||
[ column
|
||||
[ el
|
||||
[ alignTop
|
||||
, width <| px 80
|
||||
]
|
||||
[ text "Pros:"
|
||||
]
|
||||
<|
|
||||
text "Pros:"
|
||||
]
|
||||
|
||||
|
||||
conTitleMaker : Donate -> Element msg
|
||||
conTitleMaker donate =
|
||||
row
|
||||
[ F.color colourTheme.textLightGrey
|
||||
[ F.color colourTheme.textLightOrange
|
||||
, paragraphSpacing
|
||||
, paragraphFontSize
|
||||
, headerFontSizeSmall
|
||||
, F.bold
|
||||
]
|
||||
[ column
|
||||
[ el
|
||||
[ alignTop
|
||||
, width <| px 80
|
||||
]
|
||||
[ text "Cons:"
|
||||
]
|
||||
<|
|
||||
text "Cons:"
|
||||
]
|
||||
|
||||
|
||||
|
@ -352,16 +339,14 @@ proMaker donate =
|
|||
makePro : Pros -> Element msg
|
||||
makePro pro =
|
||||
column
|
||||
([ F.color colourTheme.textLightGrey
|
||||
, paragraphSpacing
|
||||
, paragraphFontSize
|
||||
, F.bold
|
||||
, alignLeft
|
||||
]
|
||||
++ [ spacing 8
|
||||
, width fill
|
||||
]
|
||||
)
|
||||
[ F.color colourTheme.textLightGrey
|
||||
, paragraphSpacing
|
||||
, paragraphFontSize
|
||||
, F.bold
|
||||
, alignLeft
|
||||
, spacing 8
|
||||
, width fill
|
||||
]
|
||||
[ paragraph [ F.regular ]
|
||||
[ text ("‣ " ++ pro.pro) ]
|
||||
]
|
||||
|
@ -388,18 +373,17 @@ conMaker donate =
|
|||
makeCon : Cons -> Element msg
|
||||
makeCon con =
|
||||
column
|
||||
([ F.color colourTheme.textLightGrey
|
||||
, paragraphSpacing
|
||||
, paragraphFontSize
|
||||
, F.bold
|
||||
, alignLeft
|
||||
]
|
||||
++ [ spacing 8
|
||||
, width fill
|
||||
]
|
||||
)
|
||||
[ paragraph [ F.regular ]
|
||||
[ text ("‣ " ++ con.con) ]
|
||||
[ F.color colourTheme.textLightGrey
|
||||
, paragraphSpacing
|
||||
, paragraphFontSize
|
||||
, F.bold
|
||||
, alignLeft
|
||||
, spacing 8
|
||||
, width fill
|
||||
]
|
||||
[ paragraph [ F.regular ] <|
|
||||
[ text ("‣ " ++ con.con)
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
|
@ -414,16 +398,13 @@ preferenceMaker donate =
|
|||
, E.alignLeft
|
||||
]
|
||||
[ paragraph
|
||||
([ F.color colourTheme.textLightGrey
|
||||
, paragraphSpacing
|
||||
, paragraphFontSize
|
||||
, F.bold
|
||||
]
|
||||
++ [ F.size 18
|
||||
, alignLeft
|
||||
, E.width fill
|
||||
]
|
||||
)
|
||||
[ F.color colourTheme.textLightGrey
|
||||
, paragraphSpacing
|
||||
, F.bold
|
||||
, headerFontSizeSmall
|
||||
, alignLeft
|
||||
, E.width fill
|
||||
]
|
||||
[ el
|
||||
[ tooltip
|
||||
"This represents how strongly I prefer a given platform relative to other platforms."
|
||||
|
@ -435,6 +416,7 @@ preferenceMaker donate =
|
|||
, bottom = 0
|
||||
, left = 0
|
||||
}
|
||||
, F.color colourTheme.textLightOrange
|
||||
]
|
||||
<|
|
||||
text "Preference:"
|
||||
|
@ -486,24 +468,18 @@ getPreferenceTooltip num =
|
|||
"Preference is out of bounds."
|
||||
|
||||
|
||||
tableMaker : Donate -> Element msg
|
||||
tableMaker donate =
|
||||
tableMaker : Donate -> Device -> Element msg
|
||||
tableMaker donate device =
|
||||
column
|
||||
[ centerX
|
||||
, E.width fill
|
||||
]
|
||||
[ wrappedRow
|
||||
([ F.color colourTheme.textLightGrey
|
||||
, paragraphSpacing
|
||||
, paragraphFontSize
|
||||
, F.bold
|
||||
]
|
||||
++ [ E.alignLeft
|
||||
, E.width fill
|
||||
, htmlAttribute <| H.style "position" "relative"
|
||||
]
|
||||
)
|
||||
[ E.table
|
||||
[ el
|
||||
[ E.alignLeft
|
||||
, E.width fill
|
||||
]
|
||||
<|
|
||||
E.table
|
||||
[ spacing 0
|
||||
, D.rounded 10
|
||||
, D.width 2
|
||||
|
@ -513,70 +489,55 @@ tableMaker donate =
|
|||
{ data = donate.donateFeatures
|
||||
, columns =
|
||||
List.map createColumn
|
||||
[ { label = "Zero Fees"
|
||||
, getter = .free
|
||||
}
|
||||
, { label = "Subscriptions"
|
||||
, getter = .subscriptions
|
||||
}
|
||||
, { label = "User Friendly"
|
||||
, getter = .userFriendly
|
||||
}
|
||||
, { label = "Anonymous"
|
||||
, getter = .anonymous
|
||||
}
|
||||
, { label = "Rewards"
|
||||
, getter = .rewardTiers
|
||||
}
|
||||
]
|
||||
(case ( device.class, device.orientation ) of
|
||||
( Phone, Portrait ) ->
|
||||
mobileLabels
|
||||
|
||||
( Tablet, Portrait ) ->
|
||||
mobileLabels
|
||||
|
||||
_ ->
|
||||
desktopLabels
|
||||
)
|
||||
}
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
tableMakerMobile : Donate -> Element msg
|
||||
tableMakerMobile donate =
|
||||
column
|
||||
[ centerX
|
||||
, E.width fill
|
||||
]
|
||||
[ wrappedRow
|
||||
([ F.color colourTheme.textLightGrey
|
||||
, paragraphSpacing
|
||||
, paragraphFontSize
|
||||
, F.bold
|
||||
]
|
||||
++ [ E.alignLeft
|
||||
, E.width fill
|
||||
, htmlAttribute <| H.style "position" "relative"
|
||||
]
|
||||
)
|
||||
[ E.table
|
||||
[ spacing 0
|
||||
, D.rounded 10
|
||||
, D.width 2
|
||||
, D.color colourTheme.textDarkGrey
|
||||
, clip
|
||||
]
|
||||
{ data = donate.donateFeatures
|
||||
, columns =
|
||||
List.map createColumn
|
||||
[ { label = "Free"
|
||||
, getter = .free
|
||||
}
|
||||
, { label = "Subs"
|
||||
, getter = .subscriptions
|
||||
}
|
||||
, { label = "Easy"
|
||||
, getter = .userFriendly
|
||||
}
|
||||
, { label = "Safe"
|
||||
, getter = .anonymous
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
]
|
||||
desktopLabels : List { label : String, getter : { a | free : b, subscriptions : b, userFriendly : b, anonymous : b, rewardTiers : b } -> b }
|
||||
desktopLabels =
|
||||
[ { label = "Zero Fees"
|
||||
, getter = .free
|
||||
}
|
||||
, { label = "Subscriptions"
|
||||
, getter = .subscriptions
|
||||
}
|
||||
, { label = "User Friendly"
|
||||
, getter = .userFriendly
|
||||
}
|
||||
, { label = "Anonymous"
|
||||
, getter = .anonymous
|
||||
}
|
||||
, { label = "Rewards"
|
||||
, getter = .rewardTiers
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
mobileLabels : List { label : String, getter : { a | free : b, subscriptions : b, userFriendly : b, anonymous : b } -> b }
|
||||
mobileLabels =
|
||||
[ { label = "Free"
|
||||
, getter = .free
|
||||
}
|
||||
, { label = "Subs"
|
||||
, getter = .subscriptions
|
||||
}
|
||||
, { label = "Easy"
|
||||
, getter = .userFriendly
|
||||
}
|
||||
, { label = "Safe"
|
||||
, getter = .anonymous
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
createColumn : { label : String, getter : Features -> Maybe Bool } -> Column Features msg
|
||||
|
|
|
@ -6,11 +6,8 @@ import Config.Helpers.Format
|
|||
( paragraphFontSize
|
||||
, paragraphSpacing
|
||||
)
|
||||
import Config.Helpers.Header
|
||||
exposing
|
||||
( Header
|
||||
, headerMaker
|
||||
)
|
||||
import Config.Helpers.Headers.Header exposing (headerMaker)
|
||||
import Config.Helpers.Headers.Types exposing (Header)
|
||||
import Config.Helpers.Response
|
||||
exposing
|
||||
( pageListCenter
|
||||
|
@ -175,7 +172,7 @@ homePage image =
|
|||
]
|
||||
++ [ centerX ]
|
||||
)
|
||||
[ text "upRootNutrition is an open source project, created by Nick Hiebert, designed to elevate the quality of nutrition science communication in online discourse. By applying more rigorous systems of reasoning, such as formal logic, upRootNutrition aims to cut through the misinformation and sophistry that are endemic on social media." ]
|
||||
[ text "upRootNutrition is an open source project, created by Nick Hiebert, designed to elevate the quality of nutrition science communication in online discourse. By applying more rigorous systems of reasoning, such as formal logic and semantic analysis, upRootNutrition aims to cut through the misinformation and sophistry that are endemic on social media." ]
|
||||
]
|
||||
]
|
||||
|
||||
|
|
|
@ -22,6 +22,8 @@ import Config.Helpers.Format
|
|||
( paragraphFontSize
|
||||
, paragraphSpacing
|
||||
)
|
||||
import Config.Helpers.Headers.Header exposing (..)
|
||||
import Config.Helpers.Headers.Types exposing (Header)
|
||||
import Config.Helpers.Response
|
||||
exposing
|
||||
( pageList
|
||||
|
@ -34,12 +36,6 @@ import Config.Helpers.StrengthBar
|
|||
)
|
||||
import Config.Helpers.ToolTip exposing (tooltip)
|
||||
import Config.Helpers.Viewport exposing (resetViewport)
|
||||
import Config.Helpers.Header exposing (..)
|
||||
import Config.Helpers.Header
|
||||
exposing
|
||||
( Header
|
||||
, headerMaker
|
||||
)
|
||||
import Config.Pages.Interviews.Records.DrShawnBakerPodcast exposing (drShawnBakerPodcast)
|
||||
import Config.Pages.Interviews.Records.FitAndFurious exposing (fitAndFurious)
|
||||
import Config.Pages.Interviews.Records.FoolproofMastery exposing (foolproofMastery)
|
||||
|
@ -195,15 +191,14 @@ interviewMaker : Interview -> Element msg
|
|||
interviewMaker interview =
|
||||
row
|
||||
topLevelBox
|
||||
[ desktopCardMaker desktopImageBoxSize desktopImageSize (interviewImage interview) (interviewSocial interview)
|
||||
[ desktopCardMaker desktopImageBoxSize desktopImageSize (interviewImage interview) interview.interviewSocial
|
||||
, cardMaker
|
||||
[ cardTitleMaker (interviewTitle interview)
|
||||
[ cardTitleMaker interview.interviewName
|
||||
, cardFormatter
|
||||
[ cardContentSpacing
|
||||
[ column
|
||||
fieldSpacer
|
||||
[ socialMaker interview
|
||||
, appearanceTitle interview
|
||||
[ appearanceTitle interview
|
||||
, appearanceMaker interview
|
||||
]
|
||||
]
|
||||
|
@ -218,13 +213,13 @@ interviewMakerMobile interview =
|
|||
topLevelBox
|
||||
[ column [] []
|
||||
, cardMaker
|
||||
[ cardTitleMaker (interviewTitle interview)
|
||||
[ cardTitleMaker interview.interviewName
|
||||
, cardFormatter
|
||||
[ cardContentSpacing
|
||||
[ column
|
||||
fieldSpacer
|
||||
[ row [ spacing 10 ]
|
||||
[ mobileCardMaker mobileImageBoxSize mobileImageSize (interviewImage interview) (interviewSocial interview)
|
||||
[ mobileCardMaker mobileImageBoxSize mobileImageSize (interviewImage interview) interview.interviewSocial
|
||||
, socialMaker interview
|
||||
]
|
||||
, appearanceTitle interview
|
||||
|
@ -243,16 +238,6 @@ interviewImage interview =
|
|||
}
|
||||
|
||||
|
||||
interviewTitle : Interview -> String
|
||||
interviewTitle interview =
|
||||
interview.interviewName
|
||||
|
||||
|
||||
interviewSocial : Interview -> String
|
||||
interviewSocial interview =
|
||||
interview.interviewSocial
|
||||
|
||||
|
||||
socialMaker : Interview -> Element msg
|
||||
socialMaker interview =
|
||||
paragraph
|
||||
|
@ -498,7 +483,7 @@ subjectMaker appearanceEntry =
|
|||
|
||||
subjectList : Appearance -> Element msg
|
||||
subjectList appearanceEntry =
|
||||
paragraph
|
||||
column
|
||||
[ spacing 8
|
||||
, width fill
|
||||
, paddingEach
|
||||
|
@ -516,7 +501,7 @@ subjectList appearanceEntry =
|
|||
|
||||
makeSubject : Subjects -> Element msg
|
||||
makeSubject subjects =
|
||||
paragraph
|
||||
el
|
||||
[ E.width fill
|
||||
, alignLeft
|
||||
, paddingEach
|
||||
|
@ -526,6 +511,10 @@ makeSubject subjects =
|
|||
, left = 8
|
||||
}
|
||||
]
|
||||
[ paragraph [ F.regular ]
|
||||
[ text ("‣ " ++ subjects.subject) ]
|
||||
]
|
||||
<|
|
||||
el
|
||||
[ F.regular
|
||||
, paragraphFontSize
|
||||
]
|
||||
<|
|
||||
text ("‣ " ++ subjects.subject)
|
||||
|
|
|
@ -16,17 +16,14 @@ import Config.Helpers.CardFormat
|
|||
, mobileImageSize
|
||||
, topLevelBox
|
||||
)
|
||||
import Config.Helpers.Headers.Header exposing (headerMaker)
|
||||
import Config.Helpers.Headers.Types exposing (Header)
|
||||
import Config.Helpers.Response
|
||||
exposing
|
||||
( pageList
|
||||
, pageListCenter
|
||||
, topLevelContainer
|
||||
)
|
||||
import Config.Helpers.Header
|
||||
exposing
|
||||
( Header
|
||||
, headerMaker
|
||||
)
|
||||
import Effect exposing (Effect)
|
||||
import Element as E exposing (..)
|
||||
import Layouts
|
||||
|
@ -138,6 +135,8 @@ notFoundList device =
|
|||
none
|
||||
]
|
||||
|
||||
|
||||
|
||||
-- import Config.Data.Identity exposing (pageNames)
|
||||
-- import Config.Helpers.CardFormat
|
||||
-- exposing
|
||||
|
@ -183,8 +182,6 @@ notFoundList device =
|
|||
-- import Route.Path
|
||||
-- import Shared
|
||||
-- import View exposing (View)
|
||||
|
||||
|
||||
-- page : Shared.Model -> Route () -> Page Model Msg
|
||||
-- page shared route =
|
||||
-- Page.new
|
||||
|
@ -194,77 +191,44 @@ notFoundList device =
|
|||
-- , view = view shared
|
||||
-- }
|
||||
-- |> Page.withLayout toLayout
|
||||
|
||||
|
||||
-- toLayout : Model -> Layouts.Layout Msg
|
||||
-- toLayout model =
|
||||
-- Layouts.Navbar {}
|
||||
|
||||
|
||||
|
||||
-- -- INIT
|
||||
|
||||
|
||||
-- type alias Model =
|
||||
-- { markdown : String }
|
||||
|
||||
|
||||
-- init : () -> ( Model, Effect Msg )
|
||||
-- init () =
|
||||
-- ( { markdown = """
|
||||
|
||||
-- markdown goes here!
|
||||
|
||||
-- """ }
|
||||
-- , Effect.none
|
||||
-- )
|
||||
|
||||
|
||||
|
||||
-- -- UPDATE
|
||||
|
||||
|
||||
-- type Msg
|
||||
-- = NoOp
|
||||
-- | UpdateMarkdown String
|
||||
|
||||
|
||||
-- update : Msg -> Model -> ( Model, Effect Msg )
|
||||
-- update msg model =
|
||||
-- case msg of
|
||||
-- NoOp ->
|
||||
-- ( model, Effect.none )
|
||||
|
||||
-- UpdateMarkdown newMarkdown ->
|
||||
-- ( { model | markdown = newMarkdown }, Effect.none )
|
||||
|
||||
|
||||
|
||||
-- -- SUBSCRIPTIONS
|
||||
|
||||
|
||||
-- subscriptions : Model -> Sub Msg
|
||||
-- subscriptions model =
|
||||
-- Sub.none
|
||||
|
||||
|
||||
|
||||
-- -- VIEW
|
||||
|
||||
|
||||
-- view : Shared.Model -> Model -> View Msg
|
||||
-- view shared model =
|
||||
-- { title = pageNames.pageNotFound
|
||||
-- , attributes = []
|
||||
-- , element = notFoundContainer shared.device model
|
||||
-- }
|
||||
|
||||
|
||||
-- notFoundContainer : Device -> Model -> Element Msg
|
||||
-- notFoundContainer device model =
|
||||
-- topLevelContainer (notFoundList device model)
|
||||
|
||||
|
||||
-- notFoundList : Device -> Model -> Element Msg
|
||||
-- notFoundList device model =
|
||||
-- column pageListCenter
|
||||
|
@ -277,12 +241,9 @@ notFoundList device =
|
|||
-- , E.centerX
|
||||
-- ]
|
||||
-- renderedMarkdown
|
||||
|
||||
-- Err error ->
|
||||
-- E.text error
|
||||
-- ]
|
||||
|
||||
|
||||
-- renderMarkdown : String -> Result String (List (Element Msg))
|
||||
-- renderMarkdown markdown =
|
||||
-- markdown
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
module Pages.Nutridex exposing (Model, Msg, page)
|
||||
|
||||
import Config.Data.Identity exposing (pageNames)
|
||||
import Config.Helpers.Articles.Article exposing (makeReference)
|
||||
import Config.Helpers.Articles.Types exposing (References)
|
||||
import Config.Helpers.CardFormat
|
||||
exposing
|
||||
( cardContentSpacing
|
||||
|
@ -19,11 +21,12 @@ import Config.Helpers.CardFormat
|
|||
)
|
||||
import Config.Helpers.Format
|
||||
exposing
|
||||
( paragraphFontSize
|
||||
( divider
|
||||
, paragraphFontSize
|
||||
, paragraphSpacing
|
||||
)
|
||||
import Config.Helpers.Header exposing (..)
|
||||
import Config.Helpers.References exposing (..)
|
||||
import Config.Helpers.Headers.Header exposing (..)
|
||||
import Config.Helpers.Headers.Types exposing (Header)
|
||||
import Config.Helpers.Response
|
||||
exposing
|
||||
( pageList
|
||||
|
@ -146,50 +149,39 @@ nutriDexList device =
|
|||
List.concat
|
||||
[ (case ( device.class, device.orientation ) of
|
||||
( Phone, Portrait ) ->
|
||||
List.map nutriDexMakerMobile
|
||||
List.map (\nutridex -> nutriDexMaker nutridex device)
|
||||
|
||||
( Tablet, Portrait ) ->
|
||||
List.map nutriDexMakerMobile
|
||||
List.map (\nutridex -> nutriDexMaker nutridex device)
|
||||
|
||||
_ ->
|
||||
List.map nutriDexMaker
|
||||
List.map (\nutridex -> nutriDexMaker nutridex device)
|
||||
)
|
||||
[ productNutriDex ]
|
||||
]
|
||||
|
||||
|
||||
nutriDexHeader : Header
|
||||
nutriDexHeader =
|
||||
let
|
||||
name =
|
||||
"NutriDex"
|
||||
in
|
||||
{ headerTitle = String.toUpper name
|
||||
, headerBody = "fasdklfjasdlk;fjasdl;fjasdfl;kasjdfl;askdja;lsdkjas;ldfj"
|
||||
}
|
||||
|
||||
|
||||
nutriDexMaker : NutriDex -> Element msg
|
||||
nutriDexMaker nutridex =
|
||||
nutriDexMaker : NutriDex -> Device -> Element msg
|
||||
nutriDexMaker nutridex device =
|
||||
row
|
||||
topLevelBox
|
||||
[ cardMaker
|
||||
[ cardTitleMaker (nutriDexTitle nutridex)
|
||||
[ cardTitleMaker (String.toUpper nutridex.nutriDexTitle)
|
||||
, cardFormatter
|
||||
[ cardContentSpacing
|
||||
[ column
|
||||
fieldSpacer
|
||||
[ cardSubTitleMaker
|
||||
[ featureList nutridex
|
||||
, nutriDexBodyMaker
|
||||
, nutriDexAdjustments
|
||||
[ featureList nutridex device
|
||||
, nutriDexBodyMaker device
|
||||
, nutriDexAdjustments device
|
||||
, column [ spacing 10 ]
|
||||
[ nutriDexVitamins
|
||||
, nutriDexFattyAcids
|
||||
, nutriDexMinerals
|
||||
, nutriDexAminoAcids
|
||||
]
|
||||
, nutriDexReferences nutridex
|
||||
, nutriDexReferences nutridex device
|
||||
]
|
||||
]
|
||||
]
|
||||
|
@ -198,40 +190,6 @@ nutriDexMaker nutridex =
|
|||
]
|
||||
|
||||
|
||||
nutriDexMakerMobile : NutriDex -> Element msg
|
||||
nutriDexMakerMobile nutridex =
|
||||
row
|
||||
topLevelBox
|
||||
[ cardMaker
|
||||
[ cardTitleMaker (nutriDexTitle nutridex)
|
||||
, cardFormatter
|
||||
[ cardContentSpacing
|
||||
[ column
|
||||
fieldSpacer
|
||||
[ cardSubTitleMaker
|
||||
[ featureListMobile nutridex
|
||||
, nutriDexBodyMaker
|
||||
, nutriDexAdjustments
|
||||
, column [ spacing 10 ]
|
||||
[ nutriDexVitamins
|
||||
, nutriDexFattyAcids
|
||||
, nutriDexMinerals
|
||||
, nutriDexAminoAcids
|
||||
]
|
||||
, nutriDexReferences nutridex
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
nutriDexTitle : NutriDex -> String
|
||||
nutriDexTitle nutridex =
|
||||
String.toUpper nutridex.nutriDexTitle
|
||||
|
||||
|
||||
makeFeature : Features -> Element msg
|
||||
makeFeature features =
|
||||
column
|
||||
|
@ -271,8 +229,8 @@ price =
|
|||
}
|
||||
|
||||
|
||||
featureList : NutriDex -> Element msg
|
||||
featureList nutridex =
|
||||
featureList : NutriDex -> Device -> Element msg
|
||||
featureList nutridex device =
|
||||
column
|
||||
[ spacing 8
|
||||
, width fill
|
||||
|
@ -284,17 +242,48 @@ featureList nutridex =
|
|||
, right = 0
|
||||
}
|
||||
]
|
||||
[ row
|
||||
[ spacing 20
|
||||
, width fill
|
||||
, height fill
|
||||
]
|
||||
[ (case ( device.class, device.orientation ) of
|
||||
( Phone, Portrait ) ->
|
||||
column
|
||||
[ spacing 20
|
||||
, centerX
|
||||
]
|
||||
|
||||
( Tablet, Portrait ) ->
|
||||
column
|
||||
[ spacing 20
|
||||
, centerX
|
||||
]
|
||||
|
||||
_ ->
|
||||
row
|
||||
[ spacing 20
|
||||
, width fill
|
||||
, height fill
|
||||
]
|
||||
)
|
||||
[ column
|
||||
[ spacing 20
|
||||
]
|
||||
(case ( device.class, device.orientation ) of
|
||||
( Phone, Portrait ) ->
|
||||
[ spacing 20, centerX ]
|
||||
|
||||
( Tablet, Portrait ) ->
|
||||
[ spacing 20, centerX ]
|
||||
|
||||
_ ->
|
||||
[ spacing 20 ]
|
||||
)
|
||||
[ row
|
||||
[ centerX
|
||||
, E.width <| px 250
|
||||
, case ( device.class, device.orientation ) of
|
||||
( Phone, Portrait ) ->
|
||||
E.width <| px 150
|
||||
|
||||
( Tablet, Portrait ) ->
|
||||
E.width <| px 150
|
||||
|
||||
_ ->
|
||||
E.width <| px 250
|
||||
]
|
||||
[ html nutriDexLogo
|
||||
]
|
||||
|
@ -347,93 +336,10 @@ featureList nutridex =
|
|||
]
|
||||
|
||||
|
||||
featureListMobile : NutriDex -> Element msg
|
||||
featureListMobile nutridex =
|
||||
column
|
||||
[ spacing 8
|
||||
, width fill
|
||||
, height fill
|
||||
, paddingEach
|
||||
{ top = 10
|
||||
, bottom = 0
|
||||
, left = 0
|
||||
, right = 0
|
||||
}
|
||||
]
|
||||
[ column
|
||||
[ spacing 20
|
||||
, centerX
|
||||
]
|
||||
[ row
|
||||
[ centerX
|
||||
, E.width <| px 150
|
||||
]
|
||||
[ html nutriDexLogo
|
||||
]
|
||||
, row
|
||||
[ D.width 5
|
||||
, D.rounded 25
|
||||
, centerX
|
||||
, D.color colourTheme.backgroundLightGrey
|
||||
, B.color colourTheme.backgroundLightGrey
|
||||
]
|
||||
[ row
|
||||
[ B.color colourTheme.textDarkOrange
|
||||
, D.rounded 30
|
||||
, F.size 25
|
||||
, F.bold
|
||||
, paddingEach
|
||||
{ top = 10
|
||||
, right = 25
|
||||
, bottom = 10
|
||||
, left = 25
|
||||
}
|
||||
]
|
||||
[ price
|
||||
]
|
||||
]
|
||||
, column
|
||||
[ centerX ]
|
||||
[ column
|
||||
[ F.size 18
|
||||
, F.bold
|
||||
, F.color colourTheme.textLightOrange
|
||||
]
|
||||
[ newTabLink []
|
||||
{ url = "https://drive.google.com/file/d/1sk7VgjuL2rEqQdnBRdZjr2_Ab9vwrbmo/view?usp=sharing"
|
||||
, label =
|
||||
paragraph
|
||||
[ centerX
|
||||
, centerY
|
||||
]
|
||||
[ text "Free Cost Efficiency Score!" ]
|
||||
}
|
||||
]
|
||||
]
|
||||
]
|
||||
, column [ width fill, F.size 12, spacing 3 ] <|
|
||||
List.map2 (\x y -> makeFeature x)
|
||||
nutridex.nutriDexFeatures
|
||||
(List.range 1 (List.length nutridex.nutriDexFeatures))
|
||||
]
|
||||
|
||||
|
||||
nutriDexTitleMaker : String -> Element msg
|
||||
nutriDexTitleMaker title =
|
||||
column
|
||||
[ width fill
|
||||
, height fill
|
||||
, spacing 20
|
||||
, paddingEach { top = 0, bottom = 0, left = 100, right = 100 }
|
||||
]
|
||||
[ row
|
||||
[ width fill
|
||||
, centerX
|
||||
, D.widthEach { bottom = 1, top = 0, left = 0, right = 0 }
|
||||
, D.color colourTheme.textLightOrange
|
||||
, paddingEach { top = 40, bottom = 0, left = 0, right = 0 }
|
||||
]
|
||||
[]
|
||||
column [ centerX, width fill ]
|
||||
[ divider
|
||||
, paragraph
|
||||
([ F.color colourTheme.textLightGrey
|
||||
, paragraphSpacing
|
||||
|
@ -465,8 +371,8 @@ linkFormat =
|
|||
]
|
||||
|
||||
|
||||
nutriDexBodyMaker : Element msg
|
||||
nutriDexBodyMaker =
|
||||
nutriDexBodyMaker : Device -> Element msg
|
||||
nutriDexBodyMaker device =
|
||||
column
|
||||
[ width fill
|
||||
, height fill
|
||||
|
@ -557,22 +463,21 @@ referenceFormat =
|
|||
]
|
||||
|
||||
|
||||
nutriDexAdjustments : Element msg
|
||||
nutriDexAdjustments =
|
||||
nutriDexAdjustments : Device -> Element msg
|
||||
nutriDexAdjustments device =
|
||||
column
|
||||
[ width fill
|
||||
, height fill
|
||||
, spacing 20
|
||||
]
|
||||
[ nutriDexTitleMaker "Nutrient Density Score Adjustments"
|
||||
, row []
|
||||
[ paragraph
|
||||
([ F.color colourTheme.textLightGrey
|
||||
, paragraphSpacing
|
||||
, paragraphFontSize
|
||||
]
|
||||
++ [ F.alignLeft, width fill ]
|
||||
)
|
||||
, el [] <|
|
||||
paragraph
|
||||
[ F.color colourTheme.textLightGrey
|
||||
, paragraphSpacing
|
||||
, paragraphFontSize
|
||||
, F.alignLeft
|
||||
]
|
||||
[ text "• "
|
||||
, text "No adjustments are made to vitamin B1, vitamin B2, vitamin B3, manganese, phosphorus, and potassium, due to their DRIs only representing total daily intake, or due to the nutrient having close to 100% bioavailability. "
|
||||
, row [ F.regular, F.size 12 ]
|
||||
|
@ -612,25 +517,22 @@ nutriDexAdjustments =
|
|||
}
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
nutridexSubTitleMaker : String -> Element msg
|
||||
nutridexSubTitleMaker title =
|
||||
paragraph
|
||||
([ F.color colourTheme.textLightGrey
|
||||
, paragraphSpacing
|
||||
, paragraphFontSize
|
||||
, F.bold
|
||||
]
|
||||
++ [ F.alignLeft
|
||||
, width fill
|
||||
, F.size 18
|
||||
, F.color colourTheme.textLightOrange
|
||||
]
|
||||
)
|
||||
[ text title ]
|
||||
el
|
||||
[ F.color colourTheme.textLightGrey
|
||||
, paragraphSpacing
|
||||
, paragraphFontSize
|
||||
, F.bold
|
||||
, width fill
|
||||
, F.size 18
|
||||
, F.color colourTheme.textLightOrange
|
||||
]
|
||||
<|
|
||||
text title
|
||||
|
||||
|
||||
nutriDexVitamins : Element msg
|
||||
|
@ -1062,7 +964,7 @@ nutriDexAminoAcids =
|
|||
, left = 0
|
||||
}
|
||||
]
|
||||
[ nutridexSubTitleMaker "Amino Acids"
|
||||
[ nutridexSubTitleMaker (String.toUpper "Amino Acids")
|
||||
]
|
||||
, row []
|
||||
[ paragraph
|
||||
|
@ -1104,73 +1006,15 @@ nutriDexAminoAcids =
|
|||
]
|
||||
|
||||
|
||||
nutriDexReferenceTitleMaker : Element msg
|
||||
nutriDexReferenceTitleMaker =
|
||||
column
|
||||
[ width fill
|
||||
, height fill
|
||||
, spacing 20
|
||||
]
|
||||
[ row
|
||||
[ width fill
|
||||
, centerX
|
||||
, D.widthEach { bottom = 1, top = 0, left = 0, right = 0 }
|
||||
, D.color colourTheme.textLightOrange
|
||||
, paddingEach { top = 40, bottom = 0, left = 0, right = 0 }
|
||||
]
|
||||
[]
|
||||
, paragraph
|
||||
([ F.color colourTheme.textLightGrey
|
||||
, paragraphSpacing
|
||||
, paragraphFontSize
|
||||
, F.bold
|
||||
]
|
||||
++ [ centerX
|
||||
, F.size 25
|
||||
, F.color colourTheme.textLightOrange
|
||||
, paddingEach
|
||||
{ top = 10
|
||||
, right = 0
|
||||
, bottom = 10
|
||||
, left = 0
|
||||
}
|
||||
]
|
||||
)
|
||||
[ text "References" ]
|
||||
]
|
||||
|
||||
|
||||
nutriDexReferences : NutriDex -> Element msg
|
||||
nutriDexReferences nutridex =
|
||||
nutriDexReferences : NutriDex -> Device -> Element msg
|
||||
nutriDexReferences nutridex device =
|
||||
column
|
||||
[ width fill
|
||||
, height fill
|
||||
]
|
||||
[ nutriDexTitleMaker "Reference"
|
||||
[ nutriDexTitleMaker "BIBLIOGRAPHY"
|
||||
, column [ width fill, F.size 15, spacing 10 ] <|
|
||||
List.map2 (\x y -> makeReference x y)
|
||||
nutridex.nutriDexReference
|
||||
(List.range 1 (List.length nutridex.nutriDexReference))
|
||||
]
|
||||
|
||||
|
||||
makeReference : References -> Int -> Element msg
|
||||
makeReference references index =
|
||||
paragraph
|
||||
[ F.regular
|
||||
, F.alignLeft
|
||||
]
|
||||
[ row []
|
||||
[ newTabLink
|
||||
[ F.bold
|
||||
, F.color colourTheme.textLightOrange
|
||||
, hoverFontDarkOrange
|
||||
, transitionStyleFast
|
||||
]
|
||||
{ url = references.link, label = text (String.fromInt index ++ ". ") }
|
||||
, text references.author
|
||||
, text references.title
|
||||
, text references.journal
|
||||
, text references.year
|
||||
]
|
||||
]
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue