feat: refactoring and tidying up

This commit is contained in:
Nick 2024-12-18 20:11:04 -06:00
parent 62be86f2f9
commit 2295c85fca
112 changed files with 862 additions and 1698 deletions

View 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

View file

@ -0,0 +1,10 @@
module Config.Helpers.Articles.Types exposing (..)
type alias References =
{ author : String
, title : String
, link : String
, year : String
, journal : String
}

View file

@ -37,12 +37,7 @@ topLevelBox =
, E.height fill , E.height fill
, E.alignTop , E.alignTop
, E.alignRight , E.alignRight
, paddingEach , padding 10
{ top = 10
, bottom = 10
, left = 10
, right = 10
}
] ]
@ -64,12 +59,7 @@ cardFormatter =
, E.width fill , E.width fill
, centerX , centerX
, B.color colourTheme.backgroundDarkGrey , B.color colourTheme.backgroundDarkGrey
, paddingEach , padding 10
{ top = 10
, bottom = 10
, left = 10
, right = 10
}
, D.roundEach , D.roundEach
{ topLeft = 0 { topLeft = 0
, topRight = 0 , topRight = 0
@ -178,6 +168,18 @@ cardImageMaker size1 size2 image urlLink =
|| urlLink || urlLink
== Path.toString Path.Blog_Quacksmashing == Path.toString Path.Blog_Quacksmashing
|| urlLink || 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 == Path.toString Path.Interviews
|| urlLink || urlLink
== Path.toString Path.Nutridex == Path.toString Path.Nutridex

View file

@ -2,6 +2,7 @@ module Config.Helpers.Format exposing (..)
import Config.Style.Colour exposing (..) import Config.Style.Colour exposing (..)
import Element exposing (..) import Element exposing (..)
import Element.Border as D
import Element.Font as F import Element.Font as F
@ -15,19 +16,19 @@ paragraphSpacing =
spacing 3 spacing 3
headerFontSizeBig : Int headerFontSizeBig : Attr decorative msg
headerFontSizeBig = headerFontSizeBig =
23 F.size 23
headerFontSizeMedium : Int headerFontSizeMedium : Attr decorative msg
headerFontSizeMedium = headerFontSizeMedium =
20 F.size 20
headerFontSizeSmall : Int headerFontSizeSmall : Attr decorative msg
headerFontSizeSmall = headerFontSizeSmall =
18 F.size 18
renderCodeLine : SyntaxColors -> List (Element msg) -> Element msg renderCodeLine : SyntaxColors -> List (Element msg) -> Element msg
@ -39,3 +40,29 @@ renderCodeLine colors elements =
[ F.monospace ] [ F.monospace ]
] ]
elements 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

View file

@ -1,9 +1,7 @@
module Config.Helpers.Header exposing module Config.Helpers.Headers.Header exposing (headerMaker)
( Header
, headerMaker
)
import Config.Helpers.CardFormat exposing (..) import Config.Helpers.CardFormat exposing (..)
import Config.Helpers.Headers.Types exposing (Header)
import Element as E import Element as E
exposing exposing
( Element ( Element
@ -30,9 +28,3 @@ headerMaker header =
] ]
] ]
] ]
type alias Header =
{ headerTitle : String
, headerBody : String
}

View file

@ -0,0 +1,7 @@
module Config.Helpers.Headers.Types exposing (..)
type alias Header =
{ headerTitle : String
, headerBody : String
}

View file

@ -4,7 +4,8 @@ import Browser
import Config.Helpers.Converters exposing (toTitleCase) import Config.Helpers.Converters exposing (toTitleCase)
import Config.Helpers.Format import Config.Helpers.Format
exposing exposing
( headerFontSizeBig ( divider
, headerFontSizeBig
, headerFontSizeMedium , headerFontSizeMedium
, headerFontSizeSmall , headerFontSizeSmall
, paragraphFontSize , paragraphFontSize
@ -76,7 +77,9 @@ renderMarkdown markdown =
|> Markdown.Parser.parse |> Markdown.Parser.parse
of of
Ok okAst -> Ok okAst ->
case Markdown.Renderer.render elmUiRenderer okAst of case
Markdown.Renderer.render elmUiRenderer okAst
of
Ok rendered -> Ok rendered ->
Ok ( buildToc okAst, rendered ) Ok ( buildToc okAst, rendered )
@ -87,6 +90,45 @@ renderMarkdown markdown =
Err (error |> List.map Markdown.Parser.deadEndToString |> String.join "\n") 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 : TableOfContents -> Element msg
tocView toc = tocView toc =
column column
@ -154,23 +196,7 @@ tocView toc =
} }
] ]
<| <|
row divider
[ centerX
, D.widthEach
{ bottom = 1
, top = 0
, left = 0
, right = 0
}
, D.color colourTheme.textLightOrange
, paddingEach
{ top = 10
, bottom = 0
, left = 0
, right = 0
}
]
[]
, el , el
[] []
<| <|
@ -451,33 +477,10 @@ codeBlock details =
heading : { level : Block.HeadingLevel, rawText : String, children : List (Element msg) } -> Element msg heading : { level : Block.HeadingLevel, rawText : String, children : List (Element msg) } -> Element msg
heading { level, rawText, children } = heading { level, rawText, children } =
column [ width fill ] column [ width fill, spacing 20 ]
[ el [ divider
[ 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
]
[]
, E.paragraph , E.paragraph
[ F.size [ case level of
(case level of
Block.H1 -> Block.H1 ->
headerFontSizeBig headerFontSizeBig
@ -486,7 +489,6 @@ heading { level, rawText, children } =
_ -> _ ->
headerFontSizeSmall headerFontSizeSmall
)
, F.bold , F.bold
, F.center , F.center
, width fill , width fill

View file

@ -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
}

View file

@ -1,9 +1,10 @@
module Config.Helpers.ArticleFormat exposing (..) module Config.Helpers.ServiceFormat exposing (..)
import Config.Data.Identity exposing (pageNames) import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Format import Config.Helpers.Format
exposing exposing
( paragraphFontSize ( headerFontSizeBig
, paragraphFontSize
, paragraphSpacing , paragraphSpacing
) )
import Config.Style.Colour exposing (colourTheme) import Config.Style.Colour exposing (colourTheme)
@ -17,6 +18,7 @@ import Element as E exposing (..)
import Element.Background as B import Element.Background as B
import Element.Border as D import Element.Border as D
import Element.Font as F import Element.Font as F
import Config.Helpers.Format exposing (headerFontSizeMedium)
bodyFormat : List (Attribute msg) bodyFormat : List (Attribute msg)
@ -49,12 +51,11 @@ titleMaker : String -> Element msg
titleMaker title = titleMaker title =
el el
[ paragraphSpacing [ paragraphSpacing
, paragraphFontSize , headerFontSizeMedium
, F.bold , F.bold
, F.center , F.center
, width fill , width fill
, F.color colourTheme.textLightOrange , F.color colourTheme.textLightOrange
, F.size 18
, paddingEach , paddingEach
{ top = 10 { top = 10
, bottom = 10 , bottom = 10

View file

@ -7,10 +7,11 @@ import Route.Path as Path
articleBigFatSurprise : BlogArticle articleBigFatSurprise : BlogArticle
articleBigFatSurprise = articleBigFatSurprise =
{ articleName = "The Big Fat Surprise: A Critical Review" { articleName = "The Big Fat Surprise: A Critical Review"
, articleDescription = ""
, articleLink = Path.toString Path.Blog_Bigfatsurprise , articleLink = Path.toString Path.Blog_Bigfatsurprise
, articleAuthor = "Seth Yoder" , articleAuthor = "Seth Yoder"
, isNewTabLink = False , isNewTabLink = False
, hasReferences = True
, hasTableOfContents = True
, articleImage = "bigfatsurprise" , articleImage = "bigfatsurprise"
, articlePublished = "Aug 10, 2014" , articlePublished = "Aug 10, 2014"
, articleBody = """ , articleBody = """

View file

@ -7,10 +7,11 @@ import Route.Path as Path
articleEverettVegans : BlogArticle articleEverettVegans : BlogArticle
articleEverettVegans = articleEverettVegans =
{ articleName = "A Case Study of Joseph Everett's Reading Comprehension" { 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 , articleLink = Path.toString Path.Blog_Everettvegans
, articleAuthor = "Nick Hiebert" , articleAuthor = "Nick Hiebert"
, isNewTabLink = False , isNewTabLink = False
, hasReferences = True
, hasTableOfContents = True
, articleImage = "everettvegans" , articleImage = "everettvegans"
, articlePublished = "May 1, 2023" , articlePublished = "May 1, 2023"
, articleBody = """ , articleBody = """

View file

@ -7,10 +7,11 @@ import Route.Path as Path
articleHunterGatherers : BlogArticle articleHunterGatherers : BlogArticle
articleHunterGatherers = articleHunterGatherers =
{ articleName = "Should Modern Humans Eat Like Hunter-Gatherers?" { 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 , articleLink = Path.toString Path.Blog_Huntergatherers
, articleAuthor = "Nick Hiebert" , articleAuthor = "Nick Hiebert"
, isNewTabLink = False , isNewTabLink = False
, hasReferences = True
, hasTableOfContents = True
, articleImage = "huntergatherers" , articleImage = "huntergatherers"
, articlePublished = "May 14, 2021" , articlePublished = "May 14, 2021"
, articleBody = """ , articleBody = """

View file

@ -7,10 +7,11 @@ import Route.Path as Path
articleMeatApologetics : BlogArticle articleMeatApologetics : BlogArticle
articleMeatApologetics = articleMeatApologetics =
{ articleName = "A Systematic Appraisal of Pro-meat Apologetics" { 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 , articleLink = Path.toString Path.Blog_Meatapologetics
, articleAuthor = "Nick Hiebert" , articleAuthor = "Nick Hiebert"
, isNewTabLink = False , isNewTabLink = False
, hasReferences = True
, hasTableOfContents = True
, articleImage = "meatapologetics" , articleImage = "meatapologetics"
, articlePublished = "Apr 13, 2022" , articlePublished = "Apr 13, 2022"
, articleBody = """ , articleBody = """

View file

@ -7,10 +7,11 @@ import Route.Path as Path
articleNagraGoodrich : BlogArticle articleNagraGoodrich : BlogArticle
articleNagraGoodrich = articleNagraGoodrich =
{ articleName = "Grading Tucker Goodrich: A Lesson in Debate Etiquette" { 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 , articleLink = Path.toString Path.Blog_Nagragoodrich
, articleAuthor = "Nick Hiebert" , articleAuthor = "Nick Hiebert"
, isNewTabLink = False , isNewTabLink = False
, hasReferences = False
, hasTableOfContents = True
, articleImage = "nagragoodrich" , articleImage = "nagragoodrich"
, articlePublished = "May 12, 2022" , articlePublished = "May 12, 2022"
, articleBody = """ , articleBody = """

View file

@ -7,10 +7,11 @@ import Route.Path as Path
articlePlantBasedMeta : BlogArticle articlePlantBasedMeta : BlogArticle
articlePlantBasedMeta = articlePlantBasedMeta =
{ articleName = "Plant-Based Diets (An Independent Meta-Analysis)" { articleName = "Plant-Based Diets (An Independent Meta-Analysis)"
, articleDescription = ""
, articleLink = Path.toString Path.Blog_Plantbasedmeta , articleLink = Path.toString Path.Blog_Plantbasedmeta
, articleAuthor = "Nick Hiebert" , articleAuthor = "Nick Hiebert"
, isNewTabLink = False , isNewTabLink = False
, hasReferences = False
, hasTableOfContents = True
, articleImage = "plantbasedmeta" , articleImage = "plantbasedmeta"
, articlePublished = "Feb 5, 2021" , articlePublished = "Feb 5, 2021"
, articleBody = """ , articleBody = """

View file

@ -7,10 +7,11 @@ import Route.Path as Path
articleQuackSmashing : BlogArticle articleQuackSmashing : BlogArticle
articleQuackSmashing = articleQuackSmashing =
{ articleName = "The Hitchhiker's Guide to Quack-Smashing" { 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 quacks beliefs, forcing them to confront the deficiencies in their reasoning."
, articleLink = Path.toString Path.Blog_Quacksmashing , articleLink = Path.toString Path.Blog_Quacksmashing
, articleAuthor = "Nick Hiebert" , articleAuthor = "Nick Hiebert"
, isNewTabLink = False , isNewTabLink = False
, hasReferences = True
, hasTableOfContents = True
, articleImage = "quacksmashing" , articleImage = "quacksmashing"
, articlePublished = "Dec 24, 2022" , articlePublished = "Dec 24, 2022"
, articleBody = """ , articleBody = """

View file

@ -7,10 +7,11 @@ import Route.Path as Path
articleSapienDiet : BlogArticle articleSapienDiet : BlogArticle
articleSapienDiet = articleSapienDiet =
{ articleName = "The Sapien Diet: Peak Human or Food Lies?" { 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 , articleLink = Path.toString Path.Blog_Sapiendiet
, articleAuthor = "Nick Hiebert" , articleAuthor = "Nick Hiebert"
, isNewTabLink = False , isNewTabLink = False
, hasReferences = True
, hasTableOfContents = True
, articleImage = "sapiendiet" , articleImage = "sapiendiet"
, articlePublished = "Aug 24, 2022" , articlePublished = "Aug 24, 2022"
, articleBody = """ , articleBody = """

View file

@ -7,10 +7,11 @@ import Route.Path as Path
articleSeedOils : BlogArticle articleSeedOils : BlogArticle
articleSeedOils = articleSeedOils =
{ articleName = "A Comprehensive Rebuttal to Seed Oil Sophistry" { 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 , articleLink = Path.toString Path.Blog_Seedoils
, articleAuthor = "Nick Hiebert" , articleAuthor = "Nick Hiebert"
, isNewTabLink = False , isNewTabLink = False
, hasReferences = True
, hasTableOfContents = True
, articleImage = "seedoils" , articleImage = "seedoils"
, articlePublished = "Oct 31, 2021" , articlePublished = "Oct 31, 2021"
, articleBody = """ , articleBody = """

View file

@ -7,10 +7,11 @@ import Route.Path as Path
articleShenanigans : BlogArticle articleShenanigans : BlogArticle
articleShenanigans = articleShenanigans =
{ articleName = "Cuckery 101: Cate Shanahan's Masterclass in Debate Dodging" { articleName = "Cuckery 101: Cate Shanahan's Masterclass in Debate Dodging"
, articleDescription = ""
, articleLink = Path.toString Path.Blog_Shenanigans , articleLink = Path.toString Path.Blog_Shenanigans
, articleAuthor = "Nick Hiebert" , articleAuthor = "Nick Hiebert"
, isNewTabLink = False , isNewTabLink = False
, hasReferences = False
, hasTableOfContents = True
, articleImage = "shenanigans" , articleImage = "shenanigans"
, articlePublished = "Jun 6, 2024" , articlePublished = "Jun 6, 2024"
, articleBody = """ , articleBody = """

View file

@ -7,10 +7,11 @@ import Route.Path as Path
articleSweetDeception : BlogArticle articleSweetDeception : BlogArticle
articleSweetDeception = articleSweetDeception =
{ articleName = "Sweet Deception: Debunking Meme Diabetes Diets" { articleName = "Sweet Deception: Debunking Meme Diabetes Diets"
, articleDescription = ""
, articleLink = Path.toString Path.Blog_Sweetdeception , articleLink = Path.toString Path.Blog_Sweetdeception
, articleAuthor = "Nick Hiebert" , articleAuthor = "Nick Hiebert"
, isNewTabLink = False , isNewTabLink = False
, hasReferences = True
, hasTableOfContents = True
, articleImage = "sweetdeception" , articleImage = "sweetdeception"
, articlePublished = "Apr 16, 2024" , articlePublished = "Apr 16, 2024"
, articleBody = """ , articleBody = """

View file

@ -7,10 +7,11 @@ import Route.Path as Path
article : BlogArticle article : BlogArticle
article = article =
{ articleName = "" { articleName = ""
, articleDescription = ""
, articleLink = Path.toString Path.Blog_ , articleLink = Path.toString Path.Blog_
, articleAuthor = "Nick Hiebert" , articleAuthor = "Nick Hiebert"
, isNewTabLink = False , isNewTabLink = False
, hasReferences = True
, hasTableOfContents = True
, articleImage = "" , articleImage = ""
, articlePublished = "" , articlePublished = ""
, articleBody = """ , articleBody = """

View file

@ -1,6 +1,6 @@
module Config.Pages.Blog.Types exposing (..) module Config.Pages.Blog.Types exposing (..)
import Config.Helpers.References exposing (..) import Config.Helpers.Articles.Types exposing (..)
type alias BlogArticle = type alias BlogArticle =
@ -10,7 +10,8 @@ type alias BlogArticle =
, articleLink : String , articleLink : String
, articleAuthor : String , articleAuthor : String
, isNewTabLink : Bool , isNewTabLink : Bool
, hasReferences : Bool
, hasTableOfContents : Bool
, articlePublished : String , articlePublished : String
, articleDescription : String
, articleReferences : List References , articleReferences : List References
} }

View file

@ -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.HealthySeedOils exposing (argumentHealthySeedOils)
import Config.Pages.Debate.Arguments.Records.HealthySoy exposing (argumentHealthySoy) import Config.Pages.Debate.Arguments.Records.HealthySoy exposing (argumentHealthySoy)
import Config.Pages.Debate.Arguments.Records.ImmortalityReductio exposing (argumentImmortalityReductio) 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.Malondialdehyde exposing (argumentMalondialdehyde)
import Config.Pages.Debate.Arguments.Records.OddOrderPredators exposing (argumentOddOrderPredators) import Config.Pages.Debate.Arguments.Records.OddOrderPredators exposing (argumentOddOrderPredators)
import Config.Pages.Debate.Arguments.Records.Omega3Omega6Ratio exposing (argumentOmega3Omega6Ratio) 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.UnhealthySaturatedFat exposing (argumentUnhealthySaturatedFat)
import Config.Pages.Debate.Arguments.Records.VeganSocietyReductio exposing (argumentVeganSocietyReductio) import Config.Pages.Debate.Arguments.Records.VeganSocietyReductio exposing (argumentVeganSocietyReductio)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentList : List Argument argumentList : List Argument
@ -75,6 +77,7 @@ argumentList =
, argumentMalondialdehyde , argumentMalondialdehyde
, argumentOmega3Omega6Ratio , argumentOmega3Omega6Ratio
, argumentPlantBasedCVDReversal , argumentPlantBasedCVDReversal
, argumentLuigiTerrorist
, argumentPolyphenolReductio , argumentPolyphenolReductio
, argumentSodiumCVD , argumentSodiumCVD
, argumentTMAOCausality , argumentTMAOCausality
@ -106,8 +109,3 @@ argumentList =
, argumentFlatEarthDebunk , argumentFlatEarthDebunk
, argumentTruncatedMeta , argumentTruncatedMeta
] ]
argumentListNumber : Int
argumentListNumber =
List.length argumentList

View file

@ -1,19 +1,20 @@
module Config.Pages.Debate.Arguments.Records.Abortion exposing (..) module Config.Pages.Debate.Arguments.Records.Abortion exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Data.Hashtags.Types exposing (Hashtags(..)) import Config.Data.Hashtags.Types exposing (Hashtags(..))
import Config.Helpers.Converters exposing (toTitleCase)
import Config.Pages.Debate.Arguments.Types exposing (..)
argumentAbortion : Argument argumentAbortion : Argument
argumentAbortion = 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." , propositionTitle = "One's whims are not a sufficient justification for the termination of sentient human life."
, propositionReductio = "" , 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." , 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)" , 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 , argumentCertainty = 6
, argumentImage = "abortion" , argumentImage = "abortion"
, argumentHashtags = [PoliticsAbortion, PhilosophySentience, PhilosophyEthics] , argumentHashtags = [ PoliticsAbortion, PhilosophySentience, PhilosophyEthics ]
, definitionTable = , definitionTable =
[ { definiendum = "P" [ { definiendum = "P"
, definiens = "one consents to becoming pregnant" , definiens = "one consents to becoming pregnant"

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.Agnosticism exposing (..) module Config.Pages.Debate.Arguments.Records.Agnosticism exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
argumentAgnosticism : Argument argumentAgnosticism : Argument
argumentAgnosticism = 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." , 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 = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.AgriculturalPredation exposing (..) module Config.Pages.Debate.Arguments.Records.AgriculturalPredation exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
argumentAgriculturalPredation : Argument argumentAgriculturalPredation : Argument
argumentAgriculturalPredation = argumentAgriculturalPredation =
{ argumentTitle = "Argument for Animal Agirculture as Predation" { argumentTitle = toTitleCase "Argument for Animal Agirculture as Predation"
, propositionTitle = "Animal agriculture counts as predation." , propositionTitle = "Animal agriculture counts as predation."
, propositionReductio = "" , 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." , 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."

View file

@ -1,16 +1,16 @@
module Config.Pages.Debate.Arguments.Records.AnabolicKeto exposing (..) module Config.Pages.Debate.Arguments.Records.AnabolicKeto exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
argumentAnabolicKeto : Argument argumentAnabolicKeto : Argument
argumentAnabolicKeto = 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." , propositionTitle = "Ketogenic diets are likely to cost anabolic potential compared to non-ketogenic diets."
, propositionReductio = "" , 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." , 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)" , proofLink = "https://www.umsu.de/trees/#(P~5Q),(P),(Q~5R)|=(R)"
, argumentCertainty = 5 , argumentCertainty = 5
, argumentImage = "anabolicketo" , argumentImage = "anabolicketo"
, argumentHashtags = [] , argumentHashtags = []

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.AnimalRights exposing (..) module Config.Pages.Debate.Arguments.Records.AnimalRights exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
argumentAnimalRights : Argument argumentAnimalRights : Argument
argumentAnimalRights = 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." , propositionTitle = "We should not exploit animals to any greater degree than we would tolerate for humans."
, propositionReductio = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.AntagonisticPleiotropy exposing (..) module Config.Pages.Debate.Arguments.Records.AntagonisticPleiotropy exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
argumentAntagonisticPleiotropy : Argument argumentAntagonisticPleiotropy : Argument
argumentAntagonisticPleiotropy = argumentAntagonisticPleiotropy =
{ argumentTitle = "Argument Against Ancestral Diets" { argumentTitle = toTitleCase "Argument Against Ancestral Diets"
, propositionTitle = "Ancestral diets have inherent disadvantages over novel diets" , propositionTitle = "Ancestral diets have inherent disadvantages over novel diets"
, propositionReductio = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.AntiRewilding exposing (..) module Config.Pages.Debate.Arguments.Records.AntiRewilding exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
argumentAntiRewilding : Argument argumentAntiRewilding : Argument
argumentAntiRewilding = argumentAntiRewilding =
{ argumentTitle = "Argument Against Rewilding" { argumentTitle = toTitleCase "Argument Against Rewilding"
, propositionTitle = "Rewilding sentient animals is immoral." , propositionTitle = "Rewilding sentient animals is immoral."
, propositionReductio = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.AntiVandalism exposing (..) module Config.Pages.Debate.Arguments.Records.AntiVandalism exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
argumentAntiVandalism : Argument argumentAntiVandalism : Argument
argumentAntiVandalism = argumentAntiVandalism =
{ argumentTitle = "Argument Against Zoo Vandalism" { argumentTitle = toTitleCase "Argument Against Zoo Vandalism"
, propositionTitle = "Vandalizing zoos increases the probability of harming the animals they keep." , propositionTitle = "Vandalizing zoos increases the probability of harming the animals they keep."
, propositionReductio = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.ApoBCVD exposing (..) module Config.Pages.Debate.Arguments.Records.ApoBCVD exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
argumentApoBCVD : Argument argumentApoBCVD : Argument
argumentApoBCVD = argumentApoBCVD =
{ argumentTitle = "Argument for Atherogenic ApoB" { argumentTitle = toTitleCase "Argument for Atherogenic ApoB"
, propositionTitle = "ApoB-containing lipoproteins dose-dependently cause atherosclerosis." , propositionTitle = "ApoB-containing lipoproteins dose-dependently cause atherosclerosis."
, propositionReductio = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.BoobyTrapPagers exposing (..) module Config.Pages.Debate.Arguments.Records.BoobyTrapPagers exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
argumentBoobyTrapPagers : Argument argumentBoobyTrapPagers : Argument
argumentBoobyTrapPagers = 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." , propositionTitle = "The Israeli pagers were not booby-traps."
, propositionReductio = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.CarbsObesity exposing (..) module Config.Pages.Debate.Arguments.Records.CarbsObesity exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentCarbsObesity : Argument argumentCarbsObesity : Argument
argumentCarbsObesity = argumentCarbsObesity =
{ argumentTitle = "Argument Against the Obesogenic Carbohydrates" { argumentTitle = toTitleCase "Argument Against the Obesogenic Carbohydrates"
, propositionTitle = "Carbohydrates do not uniquely cause fat accumulation or obesity." , propositionTitle = "Carbohydrates do not uniquely cause fat accumulation or obesity."
, propositionReductio = "" , 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" , 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"

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.ColonizingNature exposing (..) module Config.Pages.Debate.Arguments.Records.ColonizingNature exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentColonizingNature : Argument argumentColonizingNature : Argument
argumentColonizingNature = argumentColonizingNature =
{ argumentTitle = "Argument for Colonizing Nature" { argumentTitle = toTitleCase "Argument for Colonizing Nature"
, propositionTitle = "We are justified in displacing nature into non-existence" , propositionTitle = "We are justified in displacing nature into non-existence"
, propositionReductio = "" , propositionReductio = ""
, propositionSummary = "Summary" , propositionSummary = "Summary"

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.CropDeaths exposing (..) module Config.Pages.Debate.Arguments.Records.CropDeaths exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentCropDeaths : Argument argumentCropDeaths : Argument
argumentCropDeaths = argumentCropDeaths =
{ argumentTitle = "Cropland vs Wildland Argument" { argumentTitle = toTitleCase "Cropland vs Wildland Argument"
, propositionTitle = "Proposition" , propositionTitle = "Proposition"
, propositionReductio = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.DairyCowRape exposing (..) module Config.Pages.Debate.Arguments.Records.DairyCowRape exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentDairyCowRape : Argument argumentDairyCowRape : Argument
argumentDairyCowRape = 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." , propositionTitle = "An animal mating with another animal qualifies as rape."
, propositionReductio = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.DietaryCholesterol exposing (..) module Config.Pages.Debate.Arguments.Records.DietaryCholesterol exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentDietaryCholesterol : Argument argumentDietaryCholesterol : Argument
argumentDietaryCholesterol = 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." , propositionTitle = "Consuming high amounts of dietary cholesterol increases heart disease risk."
, propositionReductio = "" , 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." , 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."

View file

@ -2,11 +2,12 @@ module Config.Pages.Debate.Arguments.Records.Dummy exposing (..)
import Config.Data.Hashtags.Types exposing (Hashtags(..)) import Config.Data.Hashtags.Types exposing (Hashtags(..))
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentDummy : Argument argumentDummy : Argument
argumentDummy = argumentDummy =
{ argumentTitle = "" { argumentTitle = toTitleCase ""
, propositionTitle = "" , propositionTitle = ""
, propositionReductio = "" , propositionReductio = ""
, propositionSummary = "" , propositionSummary = ""

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.EfilismPatrolSquad exposing (..) module Config.Pages.Debate.Arguments.Records.EfilismPatrolSquad exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentEfilismPatrolSquad : Argument argumentEfilismPatrolSquad : Argument
argumentEfilismPatrolSquad = argumentEfilismPatrolSquad =
{ argumentTitle = "The Eternal Intergalactic Sentience Patrol Squad" { argumentTitle = toTitleCase "The Eternal Intergalactic Sentience Patrol Squad"
, propositionTitle = "Efilists are committed to pragmatic natalism." , 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." , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.EpidemiologyCausality exposing (..) module Config.Pages.Debate.Arguments.Records.EpidemiologyCausality exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentEpidemiologyCausality : Argument argumentEpidemiologyCausality : Argument
argumentEpidemiologyCausality = argumentEpidemiologyCausality =
{ argumentTitle = "Argument for Nutritional Epidemiology" { argumentTitle = toTitleCase "Argument for Nutritional Epidemiology"
, propositionTitle = "Nutritional epidemiology generally provides good causal estimates." , propositionTitle = "Nutritional epidemiology generally provides good causal estimates."
, propositionReductio = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.EthicalSlurs exposing (..) module Config.Pages.Debate.Arguments.Records.EthicalSlurs exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentEthicalSlurs : Argument argumentEthicalSlurs : Argument
argumentEthicalSlurs = 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." , propositionTitle = "It is generally permissible to use the term retard with an altered non-bigoted meaning."
, propositionReductio = "" , 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 dont 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." , 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 dont 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.FineTuning exposing (..) module Config.Pages.Debate.Arguments.Records.FineTuning exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentFineTuning : Argument argumentFineTuning : Argument
argumentFineTuning = argumentFineTuning =
{ argumentTitle = "Fine Tuning Debunk" { argumentTitle = toTitleCase "Fine Tuning Debunk"
, propositionTitle = "Fine tuning is an infinitely regressive explanation for God" , propositionTitle = "Fine tuning is an infinitely regressive explanation for God"
, propositionReductio = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.FlatEarthDebunk exposing (..) module Config.Pages.Debate.Arguments.Records.FlatEarthDebunk exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentFlatEarthDebunk : Argument argumentFlatEarthDebunk : Argument
argumentFlatEarthDebunk = 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." , 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 = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.FructoseNAFLD exposing (..) module Config.Pages.Debate.Arguments.Records.FructoseNAFLD exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentFructoseNAFLD : Argument argumentFructoseNAFLD : Argument
argumentFructoseNAFLD = argumentFructoseNAFLD =
{ argumentTitle = "Argument Against Lipogenic Fructose" { argumentTitle = toTitleCase "Argument Against Lipogenic Fructose"
, propositionTitle = "Fructose doesn't seem to uniquely cause fatty liver disease." , propositionTitle = "Fructose doesn't seem to uniquely cause fatty liver disease."
, propositionReductio = "" , 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." , 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."

View file

@ -1,10 +1,11 @@
module Config.Pages.Debate.Arguments.Records.HealthPromotingFoods exposing (..) module Config.Pages.Debate.Arguments.Records.HealthPromotingFoods exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentHealthPromotingFoods : Argument argumentHealthPromotingFoods : Argument
argumentHealthPromotingFoods = 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." , propositionTitle = "All foods are definitionally health-promoting."
, propositionReductio = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.HealthSeeker exposing (..) module Config.Pages.Debate.Arguments.Records.HealthSeeker exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentHealthSeeker : Argument argumentHealthSeeker : Argument
argumentHealthSeeker = 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." , 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 = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.HealthyChocolate exposing (..) module Config.Pages.Debate.Arguments.Records.HealthyChocolate exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentHealthyChocolate : Argument argumentHealthyChocolate : Argument
argumentHealthyChocolate = argumentHealthyChocolate =
{ argumentTitle = "Argument for Healthy Chocolate" { argumentTitle = toTitleCase "Argument for Healthy Chocolate"
, propositionTitle = "Chocolate does not cause atherosclerosis." , propositionTitle = "Chocolate does not cause atherosclerosis."
, propositionReductio = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.HealthyDairy exposing (..) module Config.Pages.Debate.Arguments.Records.HealthyDairy exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentHealthyDairy : Argument argumentHealthyDairy : Argument
argumentHealthyDairy = argumentHealthyDairy =
{ argumentTitle = "Argument for Healthy Dairy Products" { argumentTitle = toTitleCase "Argument for Healthy Dairy Products"
, propositionTitle = "Non-churned, non-homogenized dairy do not cause atherosclerosis." , propositionTitle = "Non-churned, non-homogenized dairy do not cause atherosclerosis."
, propositionReductio = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.HealthyFattyFish exposing (..) module Config.Pages.Debate.Arguments.Records.HealthyFattyFish exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentHealthyFattyFish : Argument argumentHealthyFattyFish : Argument
argumentHealthyFattyFish = argumentHealthyFattyFish =
{ argumentTitle = "Argument for Overwhelmingly Healthy Fatty Fish" { argumentTitle = toTitleCase "Argument for Overwhelmingly Healthy Fatty Fish"
, propositionTitle = "Fatty fish is overwhelmingly healthy." , propositionTitle = "Fatty fish is overwhelmingly healthy."
, propositionReductio = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.HealthyFibre exposing (..) module Config.Pages.Debate.Arguments.Records.HealthyFibre exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentHealthyFibre : Argument argumentHealthyFibre : Argument
argumentHealthyFibre = argumentHealthyFibre =
{ argumentTitle = "Argument for Overwhelmingly Healthy Fibre" { argumentTitle = toTitleCase "Argument for Overwhelmingly Healthy Fibre"
, propositionTitle = "Fibre, whether whole or refined, is overwhelmingly healthy." , propositionTitle = "Fibre, whether whole or refined, is overwhelmingly healthy."
, propositionReductio = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.HealthyFood exposing (..) module Config.Pages.Debate.Arguments.Records.HealthyFood exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentHealthyFood : Argument argumentHealthyFood : Argument
argumentHealthyFood = 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." , propositionTitle = "Pepsi is healthy compared to leafy greens when trapped on a desert island."
, propositionReductio = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.HealthyPlantFoods exposing (..) module Config.Pages.Debate.Arguments.Records.HealthyPlantFoods exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentHealthyPlantFoods : Argument argumentHealthyPlantFoods : Argument
argumentHealthyPlantFoods = argumentHealthyPlantFoods =
{ argumentTitle = "Argument for Overwhelmingly Healthy Plant Foods" { argumentTitle = toTitleCase "Argument for Overwhelmingly Healthy Plant Foods"
, propositionTitle = "Whole plant foods are overwhelmingly healthy." , propositionTitle = "Whole plant foods are overwhelmingly healthy."
, propositionReductio = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.HealthySeedOils exposing (..) module Config.Pages.Debate.Arguments.Records.HealthySeedOils exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentHealthySeedOils : Argument argumentHealthySeedOils : Argument
argumentHealthySeedOils = argumentHealthySeedOils =
{ argumentTitle = "Argument for Overwhelmingly Healthy Seed Oils" { argumentTitle = toTitleCase "Argument for Overwhelmingly Healthy Seed Oils"
, propositionTitle = "Non-hydrogenated vegetable oils are overwhelmingly healthy." , propositionTitle = "Non-hydrogenated vegetable oils are overwhelmingly healthy."
, propositionReductio = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.HealthySoy exposing (..) module Config.Pages.Debate.Arguments.Records.HealthySoy exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentHealthySoy : Argument argumentHealthySoy : Argument
argumentHealthySoy = argumentHealthySoy =
{ argumentTitle = "Argument for Healthy Soy Products" { argumentTitle = toTitleCase "Argument for Healthy Soy Products"
, propositionTitle = "Soy products are overwhelmingly healthy." , propositionTitle = "Soy products are overwhelmingly healthy."
, propositionReductio = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.ImmortalityReductio exposing (..) module Config.Pages.Debate.Arguments.Records.ImmortalityReductio exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentImmortalityReductio : Argument argumentImmortalityReductio : Argument
argumentImmortalityReductio = argumentImmortalityReductio =
{ argumentTitle = "Appeal to Nature Immortality Reductio" { argumentTitle = toTitleCase "Appeal to Nature Immortality Reductio"
, propositionTitle = "Senescence does not result in death." , 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." , 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." , 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."

View file

@ -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(PxQx)"
}
, { 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"
}
]
}

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.Malondialdehyde exposing (..) module Config.Pages.Debate.Arguments.Records.Malondialdehyde exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentMalondialdehyde : Argument argumentMalondialdehyde : Argument
argumentMalondialdehyde = argumentMalondialdehyde =
{ argumentTitle = "Atherogenic Omega-3 Reductio" { argumentTitle = toTitleCase "Atherogenic Omega-3 Reductio"
, propositionTitle = "Omega-3s are atherogenic." , 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." , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.OddOrderPredators exposing (..) module Config.Pages.Debate.Arguments.Records.OddOrderPredators exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentOddOrderPredators : Argument argumentOddOrderPredators : Argument
argumentOddOrderPredators = 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." , 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." , 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" , propositionSummary = "Summary"

View file

@ -1,10 +1,11 @@
module Config.Pages.Debate.Arguments.Records.Omega3Omega6Ratio exposing (..) module Config.Pages.Debate.Arguments.Records.Omega3Omega6Ratio exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentOmega3Omega6Ratio : Argument argumentOmega3Omega6Ratio : Argument
argumentOmega3Omega6Ratio = 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." , propositionTitle = "The omega-6/omega-3 ratio is unlikely to matter for health."
, propositionReductio = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.Ostroveganism exposing (..) module Config.Pages.Debate.Arguments.Records.Ostroveganism exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentOstroveganism : Argument argumentOstroveganism : Argument
argumentOstroveganism = argumentOstroveganism =
{ argumentTitle = "Argument for Vegan Bivalves" { argumentTitle = toTitleCase "Argument for Vegan Bivalves"
, propositionTitle = "Bivalves are not likely to be sentient." , propositionTitle = "Bivalves are not likely to be sentient."
, propositionReductio = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.PlantBasedCVDReversal exposing (..) module Config.Pages.Debate.Arguments.Records.PlantBasedCVDReversal exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentPlantBasedCVDReversal : Argument argumentPlantBasedCVDReversal : Argument
argumentPlantBasedCVDReversal = 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." , propositionTitle = "Plant-based diets do not appear to clinically reverse atherosclerosis."
, propositionReductio = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.PollinationReductio exposing (..) module Config.Pages.Debate.Arguments.Records.PollinationReductio exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentPollinationReductio : Argument argumentPollinationReductio : Argument
argumentPollinationReductio = argumentPollinationReductio =
{ argumentTitle = "Vegan Anti-Pollination Reductio" { argumentTitle = toTitleCase "Vegan Anti-Pollination Reductio"
, propositionTitle = "Apples are not vegan" , 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." , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.PolyphenolReductio exposing (..) module Config.Pages.Debate.Arguments.Records.PolyphenolReductio exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentPolyphenolReductio : Argument argumentPolyphenolReductio : Argument
argumentPolyphenolReductio = argumentPolyphenolReductio =
{ argumentTitle = "Anti-Polyphenol Reductio" { argumentTitle = toTitleCase "Anti-Polyphenol Reductio"
, propositionTitle = "Anti-polyphenol, ancestral diet advocates are committed to favouring GMOs." , 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." , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.ScratcherPioneers exposing (..) module Config.Pages.Debate.Arguments.Records.ScratcherPioneers exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentScratcherPioneers : Argument argumentScratcherPioneers : Argument
argumentScratcherPioneers = argumentScratcherPioneers =
{ argumentTitle = "Tattoo Pioneers were Scratchers" { argumentTitle = toTitleCase "Tattoo Pioneers were Scratchers"
, propositionTitle = "The original trailblazers of modern tattooing 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." , 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." , 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."

View file

@ -1,10 +1,11 @@
module Config.Pages.Debate.Arguments.Records.SodiumCVD exposing (..) module Config.Pages.Debate.Arguments.Records.SodiumCVD exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentSodiumCVD : Argument argumentSodiumCVD : Argument
argumentSodiumCVD = argumentSodiumCVD =
{ argumentTitle = "Argument for Atherogenic Sodium" { argumentTitle = toTitleCase "Argument for Atherogenic Sodium"
, propositionTitle = "Higher intakes of sodium increases cardiovascular disease risk." , propositionTitle = "Higher intakes of sodium increases cardiovascular disease risk."
, propositionReductio = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.TMAOCausality exposing (..) module Config.Pages.Debate.Arguments.Records.TMAOCausality exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentTMAOCausality : Argument argumentTMAOCausality : Argument
argumentTMAOCausality = argumentTMAOCausality =
{ argumentTitle = "Argument Against TMAO Being Causal in CVD" { argumentTitle = toTitleCase "Argument Against TMAO Being Causal in CVD"
, propositionReductio = "" , propositionReductio = ""
, propositionTitle = "TMAO is not likely to be causative of heart disease." , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.Template exposing (..) module Config.Pages.Debate.Arguments.Records.Template exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argument : Argument argument : Argument
argument = argument =
{ argumentTitle = "" { argumentTitle = toTitleCase ""
, propositionTitle = "" , propositionTitle = ""
, propositionReductio = "" , propositionReductio = ""
, propositionSummary = "" , propositionSummary = ""

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.TransPeople exposing (..) module Config.Pages.Debate.Arguments.Records.TransPeople exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentTransPeople : Argument argumentTransPeople : Argument
argumentTransPeople = 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." , propositionTitle = "A trans person of the male sex is a woman and a trans person with female sex is a man."
, propositionReductio = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.TruncatedMeta exposing (..) module Config.Pages.Debate.Arguments.Records.TruncatedMeta exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentTruncatedMeta : Argument argumentTruncatedMeta : Argument
argumentTruncatedMeta = 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." , 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 = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.UnhealthyCoconutOil exposing (..) module Config.Pages.Debate.Arguments.Records.UnhealthyCoconutOil exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentUnhealthyCoconutOil : Argument argumentUnhealthyCoconutOil : Argument
argumentUnhealthyCoconutOil = 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." , 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 = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.UnhealthyProcessedMeat exposing (..) module Config.Pages.Debate.Arguments.Records.UnhealthyProcessedMeat exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentUnhealthyProcessedMeat : Argument argumentUnhealthyProcessedMeat : Argument
argumentUnhealthyProcessedMeat = argumentUnhealthyProcessedMeat =
{ argumentTitle = "Argument for Unhealthy Processed Meat" { argumentTitle = toTitleCase "Argument for Unhealthy Processed Meat"
, propositionTitle = "Processed meat is overwhelmingly unhealthy." , propositionTitle = "Processed meat is overwhelmingly unhealthy."
, propositionReductio = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.UnhealthyRedMeat exposing (..) module Config.Pages.Debate.Arguments.Records.UnhealthyRedMeat exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentUnhealthyRedMeat : Argument argumentUnhealthyRedMeat : Argument
argumentUnhealthyRedMeat = argumentUnhealthyRedMeat =
{ argumentTitle = "Argument for Unhealthy Red Meat" { argumentTitle = toTitleCase "Argument for Unhealthy Red Meat"
, propositionTitle = "Red meat and processed meat are overwhelmingly unhealthy." , propositionTitle = "Red meat and processed meat are overwhelmingly unhealthy."
, propositionReductio = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.UnhealthySaturatedFat exposing (..) module Config.Pages.Debate.Arguments.Records.UnhealthySaturatedFat exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentUnhealthySaturatedFat : Argument argumentUnhealthySaturatedFat : Argument
argumentUnhealthySaturatedFat = argumentUnhealthySaturatedFat =
{ argumentTitle = "Argument Against Saturated Fat" { argumentTitle = toTitleCase "Argument Against Saturated Fat"
, propositionTitle = "Most sources of saturated fat are overwhelmingly unhealthy." , propositionTitle = "Most sources of saturated fat are overwhelmingly unhealthy."
, propositionReductio = "" , 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." , 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."

View file

@ -1,11 +1,12 @@
module Config.Pages.Debate.Arguments.Records.VeganSocietyReductio exposing (..) module Config.Pages.Debate.Arguments.Records.VeganSocietyReductio exposing (..)
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
argumentVeganSocietyReductio : Argument argumentVeganSocietyReductio : Argument
argumentVeganSocietyReductio = argumentVeganSocietyReductio =
{ argumentTitle = "Vegan Society Definition Reductio" { argumentTitle = toTitleCase "Vegan Society Definition Reductio"
, propositionTitle = "It is vegan to eat Groot." , 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." , 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." , 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."

View file

@ -10,12 +10,14 @@ import Config.Pages.Debate.Gibberish.Records.Theology exposing (theologyGibberis
import Config.Pages.Debate.Gibberish.Types exposing (..) import Config.Pages.Debate.Gibberish.Types exposing (..)
gibberishListNumber : Int gibberishList : List Terms
gibberishListNumber = gibberishList =
List.length Config.Pages.Debate.Gibberish.Records.Epistemology.epistemologyGibberish.gibberishTerms List.concat
+ List.length Config.Pages.Debate.Gibberish.Records.Metaphysics.metaphysicsGibberish.gibberishTerms [ epistemologyGibberish.gibberishTerms
+ List.length Config.Pages.Debate.Gibberish.Records.Normativity.normativityGibberish.gibberishTerms , metaphysicsGibberish.gibberishTerms
+ List.length Config.Pages.Debate.Gibberish.Records.Ontology.ontologyGibberish.gibberishTerms , normativityGibberish.gibberishTerms
+ List.length Config.Pages.Debate.Gibberish.Records.PhilOfLanguage.philOfLanguageGibberish.gibberishTerms , ontologyGibberish.gibberishTerms
+ List.length Config.Pages.Debate.Gibberish.Records.PhilOfMind.philOfMindGibberish.gibberishTerms , philOfLanguageGibberish.gibberishTerms
+ List.length Config.Pages.Debate.Gibberish.Records.Theology.theologyGibberish.gibberishTerms , philOfMindGibberish.gibberishTerms
, theologyGibberish.gibberishTerms
]

View file

@ -17,7 +17,7 @@ metaphysicsGibberish =
, gibberishTerms = , gibberishTerms =
[ { term = "Correspondence Theory of Truth" [ { term = "Correspondence Theory of Truth"
, strength = 10 , 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" , { term = "Metaphysical Essence"
, strength = 5 , strength = 5

View file

@ -1,6 +1,6 @@
module Config.Pages.Products.Types exposing (..) module Config.Pages.Products.Types exposing (..)
import Config.Helpers.References exposing (..) import Config.Helpers.Articles.Types exposing (References)
type alias NutriDex = type alias NutriDex =

View file

@ -1,6 +1,7 @@
module Pages.Blog exposing (Model, Msg, page) module Pages.Blog exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames) import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Articles.Article exposing (extractFirstWords)
import Config.Helpers.CardFormat import Config.Helpers.CardFormat
exposing exposing
( cardContentSpacing ( cardContentSpacing
@ -24,10 +25,17 @@ import Config.Helpers.Converters
) )
import Config.Helpers.Format import Config.Helpers.Format
exposing exposing
( paragraphFontSize ( headerFontSizeSmall
, paragraphFontSize
, paragraphSpacing , 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 import Config.Helpers.Response
exposing exposing
( pageList ( pageList
@ -263,7 +271,7 @@ articleMaker article =
, right = 0 , right = 0
} }
] ]
[ text article.articleDescription ] [ renderDeviceMarkdownNoToc (extractFirstWords article.articleBody) ]
] ]
] ]
) )
@ -273,16 +281,16 @@ articleMaker article =
infoRow : String -> String -> Element msg infoRow : String -> String -> Element msg
infoRow label value = infoRow label value =
row [ width fill ] row [ width fill ]
[ el [ width <| px 85 ] <| [ el [ width <| px 88 ] <|
paragraph el
[ F.color colourTheme.textLightOrange [ F.color colourTheme.textLightOrange
, paragraphSpacing , paragraphSpacing
, paragraphFontSize
, F.bold , F.bold
, F.size 18 , headerFontSizeSmall
, E.width fill , E.width fill
] ]
[ text label ] <|
text label
, el [ width fill ] <| , el [ width fill ] <|
paragraph paragraph
[ F.color colourTheme.textLightGrey [ F.color colourTheme.textLightGrey
@ -296,8 +304,18 @@ infoRow label value =
articleRows : BlogArticle -> List (Element msg) articleRows : BlogArticle -> List (Element msg)
articleRows article = articleRows article =
[ infoRow "Author:" article.articleAuthor let
, infoRow "Published:" article.articlePublished referenceCount =
List.length article.articleReferences
in
[ infoRow "Published:" article.articlePublished
, infoRow "Author:" article.articleAuthor
, infoRow "Duration:" (String.fromInt (wordCount article.articleBody // 225) ++ " minutes") , infoRow "Duration:" (String.fromInt (wordCount article.articleBody // 225) ++ " minutes")
, infoRow "Words:" (String.fromInt (wordCount article.articleBody)) , infoRow "Words:" (String.fromInt (wordCount article.articleBody))
] ]
++ (if referenceCount > 2 then
[ infoRow "Sources:" (String.fromInt referenceCount) ]
else
[]
)

View file

@ -1,6 +1,7 @@
module Pages.Blog.Bigfatsurprise exposing (Model, Msg, page) module Pages.Blog.Bigfatsurprise exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames) import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Articles.Article exposing (articleMaker)
import Config.Helpers.CardFormat import Config.Helpers.CardFormat
exposing exposing
( cardContentSpacing ( cardContentSpacing
@ -17,45 +18,16 @@ import Config.Helpers.CardFormat
, mobileImageSize , mobileImageSize
, topLevelBox , topLevelBox
) )
import Config.Helpers.Format exposing (..) import Config.Helpers.Headers.Types exposing (Header)
import Config.Helpers.Header
exposing
( Header
, headerMaker
)
import Config.Helpers.Markdown exposing (..)
import Config.Helpers.References exposing (makeReference)
import Config.Helpers.Response import Config.Helpers.Response
exposing exposing
( pageList ( pageList
, topLevelContainer , topLevelContainer
) )
import Config.Helpers.StrengthBar
exposing
( barMaker
, barPadding
)
import Config.Helpers.ToolTip exposing (..)
import Config.Helpers.Viewport exposing (resetViewport) import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Records.BigFatSurprise exposing (articleBigFatSurprise) 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 Effect exposing (Effect)
import Element as E exposing (..) 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 Layouts
import Page exposing (Page) import Page exposing (Page)
import Route exposing (Route) import Route exposing (Route)
@ -90,7 +62,9 @@ type alias Model =
init : () -> ( Model, Effect Msg ) init : () -> ( Model, Effect Msg )
init () = init () =
( {} ( {}
, Effect.none , Effect.map
(\_ -> NoOp)
(Effect.sendCmd resetViewport)
) )
@ -152,44 +126,3 @@ articleList device =
) )
[ articleBigFatSurprise ] [ 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))
]

View file

@ -1,6 +1,7 @@
module Pages.Blog.Everettvegans exposing (Model, Msg, page) module Pages.Blog.Everettvegans exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames) import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Articles.Article exposing (articleMaker)
import Config.Helpers.CardFormat import Config.Helpers.CardFormat
exposing exposing
( cardContentSpacing ( cardContentSpacing
@ -17,45 +18,16 @@ import Config.Helpers.CardFormat
, mobileImageSize , mobileImageSize
, topLevelBox , topLevelBox
) )
import Config.Helpers.Format exposing (..) import Config.Helpers.Headers.Types exposing (Header)
import Config.Helpers.Header
exposing
( Header
, headerMaker
)
import Config.Helpers.Markdown exposing (..)
import Config.Helpers.References exposing (makeReference)
import Config.Helpers.Response import Config.Helpers.Response
exposing exposing
( pageList ( pageList
, topLevelContainer , topLevelContainer
) )
import Config.Helpers.StrengthBar
exposing
( barMaker
, barPadding
)
import Config.Helpers.ToolTip exposing (..)
import Config.Helpers.Viewport exposing (resetViewport) import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Records.EverettVegans exposing (articleEverettVegans) 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 Effect exposing (Effect)
import Element as E exposing (..) 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 Layouts
import Page exposing (Page) import Page exposing (Page)
import Route exposing (Route) import Route exposing (Route)
@ -90,7 +62,9 @@ type alias Model =
init : () -> ( Model, Effect Msg ) init : () -> ( Model, Effect Msg )
init () = init () =
( {} ( {}
, Effect.none , Effect.map
(\_ -> NoOp)
(Effect.sendCmd resetViewport)
) )
@ -152,44 +126,3 @@ articleList device =
) )
[ articleEverettVegans ] [ 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))
]

View file

@ -1,6 +1,7 @@
module Pages.Blog.Huntergatherers exposing (Model, Msg, page) module Pages.Blog.Huntergatherers exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames) import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Articles.Article exposing (articleMaker)
import Config.Helpers.CardFormat import Config.Helpers.CardFormat
exposing exposing
( cardContentSpacing ( cardContentSpacing
@ -17,45 +18,16 @@ import Config.Helpers.CardFormat
, mobileImageSize , mobileImageSize
, topLevelBox , topLevelBox
) )
import Config.Helpers.Format exposing (..) import Config.Helpers.Headers.Types exposing (Header)
import Config.Helpers.Header
exposing
( Header
, headerMaker
)
import Config.Helpers.Markdown exposing (..)
import Config.Helpers.References exposing (makeReference)
import Config.Helpers.Response import Config.Helpers.Response
exposing exposing
( pageList ( pageList
, topLevelContainer , topLevelContainer
) )
import Config.Helpers.StrengthBar
exposing
( barMaker
, barPadding
)
import Config.Helpers.ToolTip exposing (..)
import Config.Helpers.Viewport exposing (resetViewport) import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Records.HunterGatherers exposing (articleHunterGatherers) 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 Effect exposing (Effect)
import Element as E exposing (..) 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 Layouts
import Page exposing (Page) import Page exposing (Page)
import Route exposing (Route) import Route exposing (Route)
@ -90,7 +62,9 @@ type alias Model =
init : () -> ( Model, Effect Msg ) init : () -> ( Model, Effect Msg )
init () = init () =
( {} ( {}
, Effect.none , Effect.map
(\_ -> NoOp)
(Effect.sendCmd resetViewport)
) )
@ -152,44 +126,3 @@ articleList device =
) )
[ articleHunterGatherers ] [ 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))
]

View file

@ -1,6 +1,7 @@
module Pages.Blog.Meatapologetics exposing (Model, Msg, page) module Pages.Blog.Meatapologetics exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames) import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Articles.Article exposing (articleMaker)
import Config.Helpers.CardFormat import Config.Helpers.CardFormat
exposing exposing
( cardContentSpacing ( cardContentSpacing
@ -17,45 +18,17 @@ import Config.Helpers.CardFormat
, mobileImageSize , mobileImageSize
, topLevelBox , topLevelBox
) )
import Config.Helpers.Format exposing (..) import Config.Helpers.Headers.Header exposing (headerMaker)
import Config.Helpers.Header import Config.Helpers.Headers.Types exposing (Header)
exposing
( Header
, headerMaker
)
import Config.Helpers.Markdown exposing (..)
import Config.Helpers.References exposing (makeReference)
import Config.Helpers.Response import Config.Helpers.Response
exposing exposing
( pageList ( pageList
, topLevelContainer , topLevelContainer
) )
import Config.Helpers.StrengthBar
exposing
( barMaker
, barPadding
)
import Config.Helpers.ToolTip exposing (..)
import Config.Helpers.Viewport exposing (resetViewport) import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Records.MeatApologetics exposing (articleMeatApologetics) 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 Effect exposing (Effect)
import Element as E exposing (..) 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 Layouts
import Page exposing (Page) import Page exposing (Page)
import Route exposing (Route) import Route exposing (Route)
@ -90,7 +63,9 @@ type alias Model =
init : () -> ( Model, Effect Msg ) init : () -> ( Model, Effect Msg )
init () = init () =
( {} ( {}
, Effect.none , Effect.map
(\_ -> NoOp)
(Effect.sendCmd resetViewport)
) )
@ -152,44 +127,3 @@ articleList device =
) )
[ articleMeatApologetics ] [ 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))
]

View file

@ -1,6 +1,7 @@
module Pages.Blog.Nagragoodrich exposing (Model, Msg, page) module Pages.Blog.Nagragoodrich exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames) import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Articles.Article exposing (articleMaker)
import Config.Helpers.CardFormat import Config.Helpers.CardFormat
exposing exposing
( cardContentSpacing ( cardContentSpacing
@ -17,45 +18,17 @@ import Config.Helpers.CardFormat
, mobileImageSize , mobileImageSize
, topLevelBox , topLevelBox
) )
import Config.Helpers.Format exposing (..) import Config.Helpers.Headers.Header exposing (headerMaker)
import Config.Helpers.Header import Config.Helpers.Headers.Types exposing (Header)
exposing
( Header
, headerMaker
)
import Config.Helpers.Markdown exposing (..)
import Config.Helpers.References exposing (makeReference)
import Config.Helpers.Response import Config.Helpers.Response
exposing exposing
( pageList ( pageList
, topLevelContainer , topLevelContainer
) )
import Config.Helpers.StrengthBar
exposing
( barMaker
, barPadding
)
import Config.Helpers.ToolTip exposing (..)
import Config.Helpers.Viewport exposing (resetViewport) import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Records.NagraGoodrich exposing (articleNagraGoodrich) 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 Effect exposing (Effect)
import Element as E exposing (..) 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 Layouts
import Page exposing (Page) import Page exposing (Page)
import Route exposing (Route) import Route exposing (Route)
@ -90,7 +63,9 @@ type alias Model =
init : () -> ( Model, Effect Msg ) init : () -> ( Model, Effect Msg )
init () = init () =
( {} ( {}
, Effect.none , Effect.map
(\_ -> NoOp)
(Effect.sendCmd resetViewport)
) )
@ -152,43 +127,3 @@ articleList device =
) )
[ articleNagraGoodrich ] [ 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))
]

View file

@ -1,6 +1,7 @@
module Pages.Blog.Plantbasedmeta exposing (Model, Msg, page) module Pages.Blog.Plantbasedmeta exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames) import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Articles.Article exposing (articleMaker)
import Config.Helpers.CardFormat import Config.Helpers.CardFormat
exposing exposing
( cardContentSpacing ( cardContentSpacing
@ -17,45 +18,17 @@ import Config.Helpers.CardFormat
, mobileImageSize , mobileImageSize
, topLevelBox , topLevelBox
) )
import Config.Helpers.Format exposing (..) import Config.Helpers.Headers.Header exposing (headerMaker)
import Config.Helpers.Header import Config.Helpers.Headers.Types exposing (Header)
exposing
( Header
, headerMaker
)
import Config.Helpers.Markdown exposing (..)
import Config.Helpers.References exposing (makeReference)
import Config.Helpers.Response import Config.Helpers.Response
exposing exposing
( pageList ( pageList
, topLevelContainer , topLevelContainer
) )
import Config.Helpers.StrengthBar
exposing
( barMaker
, barPadding
)
import Config.Helpers.ToolTip exposing (..)
import Config.Helpers.Viewport exposing (resetViewport) import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Records.PlantBasedMeta exposing (articlePlantBasedMeta) 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 Effect exposing (Effect)
import Element as E exposing (..) 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 Layouts
import Page exposing (Page) import Page exposing (Page)
import Route exposing (Route) import Route exposing (Route)
@ -90,7 +63,9 @@ type alias Model =
init : () -> ( Model, Effect Msg ) init : () -> ( Model, Effect Msg )
init () = init () =
( {} ( {}
, Effect.none , Effect.map
(\_ -> NoOp)
(Effect.sendCmd resetViewport)
) )
@ -152,43 +127,3 @@ articleList device =
) )
[ articlePlantBasedMeta ] [ 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))
]

View file

@ -1,6 +1,7 @@
module Pages.Blog.Quacksmashing exposing (Model, Msg, page) module Pages.Blog.Quacksmashing exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames) import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Articles.Article exposing (articleMaker)
import Config.Helpers.CardFormat import Config.Helpers.CardFormat
exposing exposing
( cardContentSpacing ( cardContentSpacing
@ -17,45 +18,17 @@ import Config.Helpers.CardFormat
, mobileImageSize , mobileImageSize
, topLevelBox , topLevelBox
) )
import Config.Helpers.Format exposing (..) import Config.Helpers.Headers.Header exposing (headerMaker)
import Config.Helpers.Header import Config.Helpers.Headers.Types exposing (Header)
exposing
( Header
, headerMaker
)
import Config.Helpers.Markdown exposing (..)
import Config.Helpers.References exposing (makeReference)
import Config.Helpers.Response import Config.Helpers.Response
exposing exposing
( pageList ( pageList
, topLevelContainer , topLevelContainer
) )
import Config.Helpers.StrengthBar
exposing
( barMaker
, barPadding
)
import Config.Helpers.ToolTip exposing (..)
import Config.Helpers.Viewport exposing (resetViewport) import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Records.QuackSmashing exposing (articleQuackSmashing) 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 Effect exposing (Effect)
import Element as E exposing (..) 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 Layouts
import Page exposing (Page) import Page exposing (Page)
import Route exposing (Route) import Route exposing (Route)
@ -90,7 +63,9 @@ type alias Model =
init : () -> ( Model, Effect Msg ) init : () -> ( Model, Effect Msg )
init () = init () =
( {} ( {}
, Effect.none , Effect.map
(\_ -> NoOp)
(Effect.sendCmd resetViewport)
) )
@ -152,44 +127,3 @@ articleList device =
) )
[ articleQuackSmashing ] [ 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))
]

View file

@ -1,6 +1,7 @@
module Pages.Blog.Sapiendiet exposing (Model, Msg, page) module Pages.Blog.Sapiendiet exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames) import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Articles.Article exposing (articleMaker)
import Config.Helpers.CardFormat import Config.Helpers.CardFormat
exposing exposing
( cardContentSpacing ( cardContentSpacing
@ -17,45 +18,17 @@ import Config.Helpers.CardFormat
, mobileImageSize , mobileImageSize
, topLevelBox , topLevelBox
) )
import Config.Helpers.Format exposing (..) import Config.Helpers.Headers.Header exposing (headerMaker)
import Config.Helpers.Header import Config.Helpers.Headers.Types exposing (Header)
exposing
( Header
, headerMaker
)
import Config.Helpers.Markdown exposing (..)
import Config.Helpers.References exposing (makeReference)
import Config.Helpers.Response import Config.Helpers.Response
exposing exposing
( pageList ( pageList
, topLevelContainer , topLevelContainer
) )
import Config.Helpers.StrengthBar
exposing
( barMaker
, barPadding
)
import Config.Helpers.ToolTip exposing (..)
import Config.Helpers.Viewport exposing (resetViewport) import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Records.SapienDiet exposing (articleSapienDiet) 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 Effect exposing (Effect)
import Element as E exposing (..) 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 Layouts
import Page exposing (Page) import Page exposing (Page)
import Route exposing (Route) import Route exposing (Route)
@ -90,7 +63,9 @@ type alias Model =
init : () -> ( Model, Effect Msg ) init : () -> ( Model, Effect Msg )
init () = init () =
( {} ( {}
, Effect.none , Effect.map
(\_ -> NoOp)
(Effect.sendCmd resetViewport)
) )
@ -152,44 +127,3 @@ articleList device =
) )
[ articleSapienDiet ] [ 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))
]

View file

@ -1,6 +1,7 @@
module Pages.Blog.Seedoils exposing (Model, Msg, page) module Pages.Blog.Seedoils exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames) import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Articles.Article exposing (articleMaker)
import Config.Helpers.CardFormat import Config.Helpers.CardFormat
exposing exposing
( cardContentSpacing ( cardContentSpacing
@ -17,45 +18,17 @@ import Config.Helpers.CardFormat
, mobileImageSize , mobileImageSize
, topLevelBox , topLevelBox
) )
import Config.Helpers.Format exposing (..) import Config.Helpers.Headers.Header exposing (headerMaker)
import Config.Helpers.Header import Config.Helpers.Headers.Types exposing (Header)
exposing
( Header
, headerMaker
)
import Config.Helpers.Markdown exposing (..)
import Config.Helpers.References exposing (makeReference)
import Config.Helpers.Response import Config.Helpers.Response
exposing exposing
( pageList ( pageList
, topLevelContainer , topLevelContainer
) )
import Config.Helpers.StrengthBar
exposing
( barMaker
, barPadding
)
import Config.Helpers.ToolTip exposing (..)
import Config.Helpers.Viewport exposing (resetViewport) import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Records.SeedOils exposing (articleSeedOils) 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 Effect exposing (Effect)
import Element as E exposing (..) 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 Layouts
import Page exposing (Page) import Page exposing (Page)
import Route exposing (Route) import Route exposing (Route)
@ -90,7 +63,9 @@ type alias Model =
init : () -> ( Model, Effect Msg ) init : () -> ( Model, Effect Msg )
init () = init () =
( {} ( {}
, Effect.none , Effect.map
(\_ -> NoOp)
(Effect.sendCmd resetViewport)
) )
@ -152,44 +127,3 @@ articleList device =
) )
[ articleSeedOils ] [ 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))
]

View file

@ -1,6 +1,7 @@
module Pages.Blog.Shenanigans exposing (Model, Msg, page) module Pages.Blog.Shenanigans exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames) import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Articles.Article exposing (articleMaker)
import Config.Helpers.CardFormat import Config.Helpers.CardFormat
exposing exposing
( cardContentSpacing ( cardContentSpacing
@ -17,45 +18,17 @@ import Config.Helpers.CardFormat
, mobileImageSize , mobileImageSize
, topLevelBox , topLevelBox
) )
import Config.Helpers.Format exposing (..) import Config.Helpers.Headers.Header exposing (headerMaker)
import Config.Helpers.Header import Config.Helpers.Headers.Types exposing (Header)
exposing
( Header
, headerMaker
)
import Config.Helpers.Markdown exposing (..)
import Config.Helpers.References exposing (makeReference)
import Config.Helpers.Response import Config.Helpers.Response
exposing exposing
( pageList ( pageList
, topLevelContainer , topLevelContainer
) )
import Config.Helpers.StrengthBar
exposing
( barMaker
, barPadding
)
import Config.Helpers.ToolTip exposing (..)
import Config.Helpers.Viewport exposing (resetViewport) import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Records.Shenangians exposing (articleShenanigans) 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 Effect exposing (Effect)
import Element as E exposing (..) 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 Layouts
import Page exposing (Page) import Page exposing (Page)
import Route exposing (Route) import Route exposing (Route)
@ -90,7 +63,9 @@ type alias Model =
init : () -> ( Model, Effect Msg ) init : () -> ( Model, Effect Msg )
init () = init () =
( {} ( {}
, Effect.none , Effect.map
(\_ -> NoOp)
(Effect.sendCmd resetViewport)
) )
@ -152,43 +127,3 @@ articleList device =
) )
[ articleShenanigans ] [ 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))
]

View file

@ -1,6 +1,7 @@
module Pages.Blog.Sweetdeception exposing (Model, Msg, page) module Pages.Blog.Sweetdeception exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames) import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Articles.Article exposing (articleMaker)
import Config.Helpers.CardFormat import Config.Helpers.CardFormat
exposing exposing
( cardContentSpacing ( cardContentSpacing
@ -17,45 +18,17 @@ import Config.Helpers.CardFormat
, mobileImageSize , mobileImageSize
, topLevelBox , topLevelBox
) )
import Config.Helpers.Format exposing (..) import Config.Helpers.Headers.Header exposing (headerMaker)
import Config.Helpers.Header import Config.Helpers.Headers.Types exposing (Header)
exposing
( Header
, headerMaker
)
import Config.Helpers.Markdown exposing (..)
import Config.Helpers.References exposing (makeReference)
import Config.Helpers.Response import Config.Helpers.Response
exposing exposing
( pageList ( pageList
, topLevelContainer , topLevelContainer
) )
import Config.Helpers.StrengthBar
exposing
( barMaker
, barPadding
)
import Config.Helpers.ToolTip exposing (..)
import Config.Helpers.Viewport exposing (resetViewport) import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Records.SweetDeception exposing (articleSweetDeception) 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 Effect exposing (Effect)
import Element as E exposing (..) 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 Layouts
import Page exposing (Page) import Page exposing (Page)
import Route exposing (Route) import Route exposing (Route)
@ -90,7 +63,9 @@ type alias Model =
init : () -> ( Model, Effect Msg ) init : () -> ( Model, Effect Msg )
init () = init () =
( {} ( {}
, Effect.none , Effect.map
(\_ -> NoOp)
(Effect.sendCmd resetViewport)
) )
@ -152,44 +127,3 @@ articleList device =
) )
[ articleSweetDeception ] [ 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))
]

View file

@ -18,26 +18,21 @@ import Config.Helpers.CardFormat
, topLevelBox , topLevelBox
) )
import Config.Helpers.Format exposing (..) import Config.Helpers.Format exposing (..)
import Config.Helpers.Header import Config.Helpers.Headers.Header exposing (headerMaker)
exposing import Config.Helpers.Headers.Types exposing (Header)
( Header
, headerMaker
)
import Config.Helpers.Response import Config.Helpers.Response
exposing exposing
( pageList ( pageList
, topLevelContainer , topLevelContainer
) )
import Config.Helpers.StrengthBar import Config.Helpers.ServiceFormat
exposing exposing
( barMaker ( chunkMaker
, barPadding , titleMaker
) )
import Config.Helpers.ToolTip exposing (..) import Config.Helpers.ToolTip exposing (..)
import Config.Helpers.Viewport exposing (resetViewport) import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Contact.Types exposing (..) 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.Colour exposing (colourTheme)
import Config.Style.Transitions import Config.Style.Transitions
exposing exposing
@ -185,48 +180,16 @@ instructionBody =
, right = 0 , right = 0
} }
] ]
[ paragraph [ chunkMaker
([ F.color colourTheme.textLightGrey
, paragraphSpacing
, paragraphFontSize
]
++ [ F.alignLeft
, width fill
]
)
[ 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." ] [ 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 , chunkMaker
([ F.color colourTheme.textLightGrey
, paragraphSpacing
, paragraphFontSize
]
++ [ F.alignLeft
, width fill
]
)
[ 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." ] [ 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 , column
([ F.color colourTheme.textLightGrey [ centerX
, paragraphSpacing
, paragraphFontSize
, F.bold
]
++ [ F.center
, width fill , width fill
, paddingEach
{ top = 10
, bottom = 10
, left = 0
, right = 0
}
] ]
) [ divider
[ el , titleMaker (String.toUpper "Terms and Conditions")
[ F.color colourTheme.textLightOrange
, F.size 18
]
<|
text "Terms and Conditions"
] ]
, column [ spacing 10 ] <| , column [ spacing 10 ] <|
List.indexedMap List.indexedMap
@ -255,38 +218,11 @@ instructionBody =
] ]
) )
termsAndConditions termsAndConditions
, paragraph , column [ centerX, width fill ]
([ F.color colourTheme.textLightGrey [ divider
, paragraphSpacing , titleMaker (String.toUpper "Additional Clarifications")
, paragraphFontSize
, F.bold
] ]
++ [ F.center , chunkMaker
, width fill
, paddingEach
{ top = 10
, bottom = 10
, left = 0
, right = 0
}
]
)
[ el
[ F.color colourTheme.textLightOrange
, F.size 18
]
<|
text "Additional Clarifications"
]
, paragraph
([ F.color colourTheme.textLightGrey
, paragraphSpacing
, paragraphFontSize
]
++ [ F.alignLeft
, width fill
]
)
[ text " " [ text " "
, text "You are only allowed to post one criticism at a time in the " , text "You are only allowed to post one criticism at a time in the "
, newTabLink [] , 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." , 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 , chunkMaker
([ F.color colourTheme.textLightGrey
, paragraphSpacing
, paragraphFontSize
]
++ [ F.alignLeft
, width fill
]
)
[ 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." ] [ 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 , chunkMaker
([ F.color colourTheme.textLightGrey
, paragraphSpacing
, paragraphFontSize
]
++ [ F.alignLeft
, width fill
]
)
[ 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." ] [ 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 , chunkMaker
([ F.color colourTheme.textLightGrey
, paragraphSpacing
, paragraphFontSize
]
++ [ F.alignLeft
, width fill
]
)
[ text " " [ 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 " , 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 [] , 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." , text " channel. There we can then engage in a text-based discussion and/or ping other users if needed."
] ]
, paragraph , chunkMaker
([ F.color colourTheme.textLightGrey
, paragraphSpacing
, paragraphFontSize
]
++ [ F.alignLeft
, width fill
]
)
[ 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." ] [ 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." ]
] ]

View file

@ -29,24 +29,23 @@ import Config.Helpers.CardFormat
import Config.Helpers.Converters exposing (formatName) import Config.Helpers.Converters exposing (formatName)
import Config.Helpers.Format import Config.Helpers.Format
exposing exposing
( paragraphFontSize ( headerFontSizeSmall
, paragraphFontSize
, paragraphSpacing , paragraphSpacing
) )
import Config.Helpers.Headers.Header exposing (headerMaker)
import Config.Helpers.Headers.Types exposing (Header)
import Config.Helpers.Response import Config.Helpers.Response
exposing exposing
( pageList ( pageList
, topLevelContainer , topLevelContainer
) )
import Config.Helpers.ServiceFormat exposing (chunkMaker)
import Config.Helpers.Viewport exposing (resetViewport) import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Debate.Arguments.List exposing (argumentListNumber) import Config.Pages.Debate.Arguments.List exposing (argumentList)
import Config.Pages.Debate.Cuckery.List exposing (cuckListNumber) import Config.Pages.Debate.Cuckery.List exposing (cuckList)
import Config.Pages.Debate.Gibberish.List exposing (gibberishListNumber) import Config.Pages.Debate.Gibberish.List exposing (gibberishList)
import Config.Pages.Debate.Types exposing (..) import Config.Pages.Debate.Types exposing (..)
import Config.Helpers.Header
exposing
( Header
, headerMaker
)
import Config.Style.Colour as T exposing (colourTheme) import Config.Style.Colour as T exposing (colourTheme)
import Config.Style.Glow import Config.Style.Glow
exposing exposing
@ -219,7 +218,7 @@ mobileDebateMaker debate =
[ mobileCardMaker mobileImageBoxSize mobileImageSize (debateImage debate) debate.debateLink [ mobileCardMaker mobileImageBoxSize mobileImageSize (debateImage debate) debate.debateLink
, column , column
[ width fill ] [ width fill ]
[] [ descriptionMaker debate ]
] ]
] ]
] ]
@ -247,13 +246,12 @@ descriptionMaker debate =
, centerX , centerX
, spacing 3 , spacing 3
] ]
[ row [] [ row [ spacing 5 ]
[ paragraph [ paragraph
[ F.color colourTheme.textLightOrange [ F.color colourTheme.textLightOrange
, paragraphSpacing , paragraphSpacing
, paragraphFontSize
, F.bold , F.bold
, F.size 18 , headerFontSizeSmall
, E.width fill , E.width fill
] ]
[ if debate.debateTitle == "Arguments" then [ if debate.debateTitle == "Arguments" then
@ -267,6 +265,7 @@ descriptionMaker debate =
else else
text "" text ""
]
, text (String.fromInt debate.debateCount) , text (String.fromInt debate.debateCount)
|> el |> el
[ F.color colourTheme.textLightGrey [ F.color colourTheme.textLightGrey
@ -274,21 +273,11 @@ descriptionMaker debate =
, F.size 16 , F.size 16
] ]
] ]
] , el [ width fill ] <|
, row [ width fill ] chunkMaker
[ paragraph
[ F.color colourTheme.textLightGrey
, paragraphSpacing
, paragraphFontSize
, spacing 3
, F.regular
, F.alignLeft
, F.size 16
]
[ text debate.debateDescription [ text debate.debateDescription
] ]
] ]
]
debateArguments : Debate debateArguments : Debate
@ -299,7 +288,7 @@ debateArguments =
in in
{ debateTitle = name { debateTitle = name
, debateLink = Path.toString Path.Debate_Arguments , debateLink = Path.toString Path.Debate_Arguments
, debateCount = argumentListNumber , debateCount = List.length argumentList
, debateImage = formatName name , debateImage = formatName name
, isNewTabLink = False , 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." , 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 in
{ debateTitle = name { debateTitle = name
, debateLink = Path.toString Path.Debate_Cucklist , debateLink = Path.toString Path.Debate_Cucklist
, debateCount = cuckListNumber , debateCount = List.length cuckList
, debateImage = formatName name , debateImage = formatName name
, isNewTabLink = False , 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." , 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 in
{ debateTitle = name { debateTitle = name
, debateLink = Path.toString Path.Debate_Gibberish , debateLink = Path.toString Path.Debate_Gibberish
, debateCount = gibberishListNumber , debateCount = List.length gibberishList
, debateImage = formatName name , debateImage = formatName name
, isNewTabLink = False , 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." , 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."

View file

@ -21,11 +21,8 @@ import Config.Helpers.Format
( paragraphFontSize ( paragraphFontSize
, paragraphSpacing , paragraphSpacing
) )
import Config.Helpers.Header import Config.Helpers.Headers.Header exposing (headerMaker)
exposing import Config.Helpers.Headers.Types exposing (Header)
( Header
, headerMaker
)
import Config.Helpers.Response import Config.Helpers.Response
exposing exposing
( pageList ( pageList
@ -41,9 +38,9 @@ import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Debate.Arguments.List import Config.Pages.Debate.Arguments.List
exposing exposing
( argumentList ( argumentList
, argumentListNumber
) )
import Config.Pages.Debate.Arguments.Types exposing (..) import Config.Pages.Debate.Arguments.Types exposing (..)
import Config.Helpers.Converters exposing (toTitleCase)
import Config.Style.Colour exposing (colourTheme) import Config.Style.Colour exposing (colourTheme)
import Config.Style.Glow import Config.Style.Glow
exposing exposing
@ -693,7 +690,7 @@ formalizationMaker argument padding =
[ F.color colourTheme.textLightOrange [ F.color colourTheme.textLightOrange
, F.bold , F.bold
, spacing 3 , spacing 3
, F.size 17 , paragraphFontSize
] ]
[ text [ text
(if entryIndex < List.length argumentEntry.premises then (if entryIndex < List.length argumentEntry.premises then

View file

@ -22,6 +22,8 @@ import Config.Helpers.Format
( paragraphFontSize ( paragraphFontSize
, paragraphSpacing , paragraphSpacing
) )
import Config.Helpers.Headers.Header exposing (headerMaker)
import Config.Helpers.Headers.Types exposing (Header)
import Config.Helpers.Response import Config.Helpers.Response
exposing exposing
( pageList ( pageList
@ -34,11 +36,6 @@ import Config.Pages.Debate.Cuckery.List
, cuckListNumber , cuckListNumber
) )
import Config.Pages.Debate.Cuckery.Types exposing (..) import Config.Pages.Debate.Cuckery.Types exposing (..)
import Config.Helpers.Header
exposing
( Header
, headerMaker
)
import Config.Style.Colour exposing (colourTheme) import Config.Style.Colour exposing (colourTheme)
import Config.Style.Transitions import Config.Style.Transitions
exposing exposing

View file

@ -21,6 +21,8 @@ import Config.Helpers.Format
( paragraphFontSize ( paragraphFontSize
, paragraphSpacing , paragraphSpacing
) )
import Config.Helpers.Headers.Header exposing (headerMaker)
import Config.Helpers.Headers.Types exposing (Header)
import Config.Helpers.Response import Config.Helpers.Response
exposing exposing
( pageList ( pageList
@ -34,7 +36,8 @@ import Config.Helpers.StrengthBar
import Config.Helpers.ToolTip exposing (tooltip) import Config.Helpers.ToolTip exposing (tooltip)
import Config.Helpers.Viewport exposing (resetViewport) import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Debate.Arguments.Types exposing (..) 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.Epistemology exposing (epistemologyGibberish)
import Config.Pages.Debate.Gibberish.Records.Metaphysics exposing (metaphysicsGibberish) import Config.Pages.Debate.Gibberish.Records.Metaphysics exposing (metaphysicsGibberish)
import Config.Pages.Debate.Gibberish.Records.Normativity exposing (normativityGibberish) 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.PhilOfMind exposing (philOfMindGibberish)
import Config.Pages.Debate.Gibberish.Records.Theology exposing (theologyGibberish) import Config.Pages.Debate.Gibberish.Records.Theology exposing (theologyGibberish)
import Config.Pages.Debate.Gibberish.Types exposing (..) 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 Config.Style.Colour exposing (colourTheme)
import Effect exposing (Effect) import Effect exposing (Effect)
import Element as E exposing (..) import Element as E exposing (..)

View file

@ -18,9 +18,12 @@ import Config.Helpers.CardFormat
) )
import Config.Helpers.Format import Config.Helpers.Format
exposing exposing
( paragraphFontSize ( headerFontSizeSmall
, paragraphFontSize
, paragraphSpacing , paragraphSpacing
) )
import Config.Helpers.Headers.Header exposing (headerMaker)
import Config.Helpers.Headers.Types exposing (Header)
import Config.Helpers.Response import Config.Helpers.Response
exposing exposing
( pageList ( 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.Stripe exposing (donateStripe)
import Config.Pages.Donate.Records.YouTube exposing (donateYouTube) import Config.Pages.Donate.Records.YouTube exposing (donateYouTube)
import Config.Pages.Donate.Types exposing (..) 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 Config.Style.Colour as T exposing (..)
import Effect exposing (Effect) import Effect exposing (Effect)
import Element as E exposing (..) import Element as E exposing (..)
@ -152,13 +149,13 @@ donateList device =
[ donateHeader ] [ donateHeader ]
, (case ( device.class, device.orientation ) of , (case ( device.class, device.orientation ) of
( Phone, Portrait ) -> ( Phone, Portrait ) ->
List.map donateMakerMobile List.map (\donate -> donateMakerMobile donate device)
( Tablet, Portrait ) -> ( Tablet, Portrait ) ->
List.map donateMakerMobile List.map (\donate -> donateMakerMobile donate device)
_ -> _ ->
List.map donateMaker List.map (\donate -> donateMaker donate device)
) )
[ donateLiberaPay [ donateLiberaPay
, donateStripe , donateStripe
@ -182,20 +179,20 @@ donateHeader =
} }
donateMaker : Donate -> Element msg donateMaker : Donate -> Device -> Element msg
donateMaker donate = donateMaker donate device =
row row
topLevelBox topLevelBox
[ desktopCardMaker desktopImageBoxSize desktopImageSize (donateImage donate) (donateLink donate) [ desktopCardMaker desktopImageBoxSize desktopImageSize (donateImage donate) donate.donateLink
, cardMaker , cardMaker
[ cardTitleMaker (donateTitle donate) [ cardTitleMaker donate.donateName
, cardFormatter , cardFormatter
[ cardContentSpacing [ cardContentSpacing
[ column [ column
fieldSpacer fieldSpacer
[ feeMaker donate [ feeMaker donate
, preferenceMaker donate , preferenceMaker donate
, tableMaker donate , tableMaker donate device
, proTitleMaker donate , proTitleMaker donate
, proMaker donate , proMaker donate
, conTitleMaker donate , conTitleMaker donate
@ -207,13 +204,13 @@ donateMaker donate =
] ]
donateMakerMobile : Donate -> Element msg donateMakerMobile : Donate -> Device -> Element msg
donateMakerMobile donate = donateMakerMobile donate device =
row row
topLevelBox topLevelBox
[ column [] [] [ column [] []
, cardMaker , cardMaker
[ cardTitleMaker (donateTitle donate) [ cardTitleMaker donate.donateName
, cardFormatter , cardFormatter
[ cardContentSpacing [ cardContentSpacing
[ column [ column
@ -222,14 +219,14 @@ donateMakerMobile donate =
[ mobileCardMaker mobileImageBoxSize [ mobileCardMaker mobileImageBoxSize
mobileImageSize mobileImageSize
(donateImage donate) (donateImage donate)
(donateLink donate) donate.donateLink
, column , column
[ width fill ] [ width fill ]
[ feeMaker donate [ feeMaker donate
, preferenceMaker donate , preferenceMaker donate
] ]
] ]
, tableMakerMobile donate , tableMaker donate device
, proTitleMaker donate , proTitleMaker donate
, proMaker donate , proMaker donate
, conTitleMaker donate , conTitleMaker donate
@ -253,16 +250,6 @@ donateImage donate =
} }
donateTitle : Donate -> String
donateTitle donate =
donate.donateName
donateLink : Donate -> String
donateLink donate =
donate.donateLink
donateWidth = donateWidth =
width <| px 45 width <| px 45
@ -270,64 +257,64 @@ donateWidth =
feeMaker : Donate -> Element msg feeMaker : Donate -> Element msg
feeMaker donate = feeMaker donate =
row row
([ F.color colourTheme.textLightGrey [ F.color colourTheme.textLightOrange
, paragraphSpacing , paragraphSpacing
, paragraphFontSize
, F.bold , F.bold
] , headerFontSizeSmall
++ [ F.size 18
, E.width fill , E.width fill
, spacing 5
] ]
)
[ column [ column
[ alignTop [ alignTop
, donateWidth
] ]
[ text "Fees:" [ text "Fees:"
] ]
, column , el
[ E.width fill [ E.width fill
, alignLeft , alignLeft
] ]
[ paragraph [ F.regular ] <|
[ el [ F.color colourTheme.textLightOrange ] <| el
[ F.regular
, paragraphFontSize
, F.color colourTheme.textLightGrey
]
<|
text donate.donateFees text donate.donateFees
] ]
]
]
proTitleMaker : Donate -> Element msg proTitleMaker : Donate -> Element msg
proTitleMaker donate = proTitleMaker donate =
row row
[ F.color colourTheme.textLightGrey [ F.color colourTheme.textLightOrange
, paragraphSpacing , paragraphSpacing
, paragraphFontSize , headerFontSizeSmall
, F.bold , F.bold
] ]
[ column [ el
[ alignTop [ alignTop
, width <| px 80 , width <| px 80
] ]
[ text "Pros:" <|
] text "Pros:"
] ]
conTitleMaker : Donate -> Element msg conTitleMaker : Donate -> Element msg
conTitleMaker donate = conTitleMaker donate =
row row
[ F.color colourTheme.textLightGrey [ F.color colourTheme.textLightOrange
, paragraphSpacing , paragraphSpacing
, paragraphFontSize , headerFontSizeSmall
, F.bold , F.bold
] ]
[ column [ el
[ alignTop [ alignTop
, width <| px 80 , width <| px 80
] ]
[ text "Cons:" <|
] text "Cons:"
] ]
@ -352,16 +339,14 @@ proMaker donate =
makePro : Pros -> Element msg makePro : Pros -> Element msg
makePro pro = makePro pro =
column column
([ F.color colourTheme.textLightGrey [ F.color colourTheme.textLightGrey
, paragraphSpacing , paragraphSpacing
, paragraphFontSize , paragraphFontSize
, F.bold , F.bold
, alignLeft , alignLeft
] , spacing 8
++ [ spacing 8
, width fill , width fill
] ]
)
[ paragraph [ F.regular ] [ paragraph [ F.regular ]
[ text (" " ++ pro.pro) ] [ text (" " ++ pro.pro) ]
] ]
@ -388,18 +373,17 @@ conMaker donate =
makeCon : Cons -> Element msg makeCon : Cons -> Element msg
makeCon con = makeCon con =
column column
([ F.color colourTheme.textLightGrey [ F.color colourTheme.textLightGrey
, paragraphSpacing , paragraphSpacing
, paragraphFontSize , paragraphFontSize
, F.bold , F.bold
, alignLeft , alignLeft
] , spacing 8
++ [ spacing 8
, width fill , width fill
] ]
) [ paragraph [ F.regular ] <|
[ paragraph [ F.regular ] [ text (" " ++ con.con)
[ text (" " ++ con.con) ] ]
] ]
@ -414,16 +398,13 @@ preferenceMaker donate =
, E.alignLeft , E.alignLeft
] ]
[ paragraph [ paragraph
([ F.color colourTheme.textLightGrey [ F.color colourTheme.textLightGrey
, paragraphSpacing , paragraphSpacing
, paragraphFontSize
, F.bold , F.bold
] , headerFontSizeSmall
++ [ F.size 18
, alignLeft , alignLeft
, E.width fill , E.width fill
] ]
)
[ el [ el
[ tooltip [ tooltip
"This represents how strongly I prefer a given platform relative to other platforms." "This represents how strongly I prefer a given platform relative to other platforms."
@ -435,6 +416,7 @@ preferenceMaker donate =
, bottom = 0 , bottom = 0
, left = 0 , left = 0
} }
, F.color colourTheme.textLightOrange
] ]
<| <|
text "Preference:" text "Preference:"
@ -486,24 +468,18 @@ getPreferenceTooltip num =
"Preference is out of bounds." "Preference is out of bounds."
tableMaker : Donate -> Element msg tableMaker : Donate -> Device -> Element msg
tableMaker donate = tableMaker donate device =
column column
[ centerX [ centerX
, E.width fill , E.width fill
] ]
[ wrappedRow [ el
([ F.color colourTheme.textLightGrey [ E.alignLeft
, paragraphSpacing
, paragraphFontSize
, F.bold
]
++ [ E.alignLeft
, E.width fill , E.width fill
, htmlAttribute <| H.style "position" "relative"
] ]
) <|
[ E.table E.table
[ spacing 0 [ spacing 0
, D.rounded 10 , D.rounded 10
, D.width 2 , D.width 2
@ -513,6 +489,22 @@ tableMaker donate =
{ data = donate.donateFeatures { data = donate.donateFeatures
, columns = , columns =
List.map createColumn List.map createColumn
(case ( device.class, device.orientation ) of
( Phone, Portrait ) ->
mobileLabels
( Tablet, Portrait ) ->
mobileLabels
_ ->
desktopLabels
)
}
]
desktopLabels : List { label : String, getter : { a | free : b, subscriptions : b, userFriendly : b, anonymous : b, rewardTiers : b } -> b }
desktopLabels =
[ { label = "Zero Fees" [ { label = "Zero Fees"
, getter = .free , getter = .free
} }
@ -529,38 +521,10 @@ tableMaker donate =
, getter = .rewardTiers , getter = .rewardTiers
} }
] ]
}
]
]
tableMakerMobile : Donate -> Element msg mobileLabels : List { label : String, getter : { a | free : b, subscriptions : b, userFriendly : b, anonymous : b } -> b }
tableMakerMobile donate = mobileLabels =
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" [ { label = "Free"
, getter = .free , getter = .free
} }
@ -574,9 +538,6 @@ tableMakerMobile donate =
, getter = .anonymous , getter = .anonymous
} }
] ]
}
]
]
createColumn : { label : String, getter : Features -> Maybe Bool } -> Column Features msg createColumn : { label : String, getter : Features -> Maybe Bool } -> Column Features msg

View file

@ -6,11 +6,8 @@ import Config.Helpers.Format
( paragraphFontSize ( paragraphFontSize
, paragraphSpacing , paragraphSpacing
) )
import Config.Helpers.Header import Config.Helpers.Headers.Header exposing (headerMaker)
exposing import Config.Helpers.Headers.Types exposing (Header)
( Header
, headerMaker
)
import Config.Helpers.Response import Config.Helpers.Response
exposing exposing
( pageListCenter ( pageListCenter
@ -175,7 +172,7 @@ homePage image =
] ]
++ [ centerX ] ++ [ 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." ]
] ]
] ]

View file

@ -22,6 +22,8 @@ import Config.Helpers.Format
( paragraphFontSize ( paragraphFontSize
, paragraphSpacing , paragraphSpacing
) )
import Config.Helpers.Headers.Header exposing (..)
import Config.Helpers.Headers.Types exposing (Header)
import Config.Helpers.Response import Config.Helpers.Response
exposing exposing
( pageList ( pageList
@ -34,12 +36,6 @@ import Config.Helpers.StrengthBar
) )
import Config.Helpers.ToolTip exposing (tooltip) import Config.Helpers.ToolTip exposing (tooltip)
import Config.Helpers.Viewport exposing (resetViewport) 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.DrShawnBakerPodcast exposing (drShawnBakerPodcast)
import Config.Pages.Interviews.Records.FitAndFurious exposing (fitAndFurious) import Config.Pages.Interviews.Records.FitAndFurious exposing (fitAndFurious)
import Config.Pages.Interviews.Records.FoolproofMastery exposing (foolproofMastery) import Config.Pages.Interviews.Records.FoolproofMastery exposing (foolproofMastery)
@ -195,15 +191,14 @@ interviewMaker : Interview -> Element msg
interviewMaker interview = interviewMaker interview =
row row
topLevelBox topLevelBox
[ desktopCardMaker desktopImageBoxSize desktopImageSize (interviewImage interview) (interviewSocial interview) [ desktopCardMaker desktopImageBoxSize desktopImageSize (interviewImage interview) interview.interviewSocial
, cardMaker , cardMaker
[ cardTitleMaker (interviewTitle interview) [ cardTitleMaker interview.interviewName
, cardFormatter , cardFormatter
[ cardContentSpacing [ cardContentSpacing
[ column [ column
fieldSpacer fieldSpacer
[ socialMaker interview [ appearanceTitle interview
, appearanceTitle interview
, appearanceMaker interview , appearanceMaker interview
] ]
] ]
@ -218,13 +213,13 @@ interviewMakerMobile interview =
topLevelBox topLevelBox
[ column [] [] [ column [] []
, cardMaker , cardMaker
[ cardTitleMaker (interviewTitle interview) [ cardTitleMaker interview.interviewName
, cardFormatter , cardFormatter
[ cardContentSpacing [ cardContentSpacing
[ column [ column
fieldSpacer fieldSpacer
[ row [ spacing 10 ] [ row [ spacing 10 ]
[ mobileCardMaker mobileImageBoxSize mobileImageSize (interviewImage interview) (interviewSocial interview) [ mobileCardMaker mobileImageBoxSize mobileImageSize (interviewImage interview) interview.interviewSocial
, socialMaker interview , socialMaker interview
] ]
, appearanceTitle 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 -> Element msg
socialMaker interview = socialMaker interview =
paragraph paragraph
@ -498,7 +483,7 @@ subjectMaker appearanceEntry =
subjectList : Appearance -> Element msg subjectList : Appearance -> Element msg
subjectList appearanceEntry = subjectList appearanceEntry =
paragraph column
[ spacing 8 [ spacing 8
, width fill , width fill
, paddingEach , paddingEach
@ -516,7 +501,7 @@ subjectList appearanceEntry =
makeSubject : Subjects -> Element msg makeSubject : Subjects -> Element msg
makeSubject subjects = makeSubject subjects =
paragraph el
[ E.width fill [ E.width fill
, alignLeft , alignLeft
, paddingEach , paddingEach
@ -526,6 +511,10 @@ makeSubject subjects =
, left = 8 , left = 8
} }
] ]
[ paragraph [ F.regular ] <|
[ text (" " ++ subjects.subject) ] el
[ F.regular
, paragraphFontSize
] ]
<|
text (" " ++ subjects.subject)

View file

@ -16,17 +16,14 @@ import Config.Helpers.CardFormat
, mobileImageSize , mobileImageSize
, topLevelBox , topLevelBox
) )
import Config.Helpers.Headers.Header exposing (headerMaker)
import Config.Helpers.Headers.Types exposing (Header)
import Config.Helpers.Response import Config.Helpers.Response
exposing exposing
( pageList ( pageList
, pageListCenter , pageListCenter
, topLevelContainer , topLevelContainer
) )
import Config.Helpers.Header
exposing
( Header
, headerMaker
)
import Effect exposing (Effect) import Effect exposing (Effect)
import Element as E exposing (..) import Element as E exposing (..)
import Layouts import Layouts
@ -138,6 +135,8 @@ notFoundList device =
none none
] ]
-- import Config.Data.Identity exposing (pageNames) -- import Config.Data.Identity exposing (pageNames)
-- import Config.Helpers.CardFormat -- import Config.Helpers.CardFormat
-- exposing -- exposing
@ -183,8 +182,6 @@ notFoundList device =
-- import Route.Path -- import Route.Path
-- import Shared -- import Shared
-- import View exposing (View) -- import View exposing (View)
-- page : Shared.Model -> Route () -> Page Model Msg -- page : Shared.Model -> Route () -> Page Model Msg
-- page shared route = -- page shared route =
-- Page.new -- Page.new
@ -194,77 +191,44 @@ notFoundList device =
-- , view = view shared -- , view = view shared
-- } -- }
-- |> Page.withLayout toLayout -- |> Page.withLayout toLayout
-- toLayout : Model -> Layouts.Layout Msg -- toLayout : Model -> Layouts.Layout Msg
-- toLayout model = -- toLayout model =
-- Layouts.Navbar {} -- Layouts.Navbar {}
-- -- INIT -- -- INIT
-- type alias Model = -- type alias Model =
-- { markdown : String } -- { markdown : String }
-- init : () -> ( Model, Effect Msg ) -- init : () -> ( Model, Effect Msg )
-- init () = -- init () =
-- ( { markdown = """ -- ( { markdown = """
-- markdown goes here! -- markdown goes here!
-- """ } -- """ }
-- , Effect.none -- , Effect.none
-- ) -- )
-- -- UPDATE -- -- UPDATE
-- type Msg -- type Msg
-- = NoOp -- = NoOp
-- | UpdateMarkdown String -- | UpdateMarkdown String
-- update : Msg -> Model -> ( Model, Effect Msg ) -- update : Msg -> Model -> ( Model, Effect Msg )
-- update msg model = -- update msg model =
-- case msg of -- case msg of
-- NoOp -> -- NoOp ->
-- ( model, Effect.none ) -- ( model, Effect.none )
-- UpdateMarkdown newMarkdown -> -- UpdateMarkdown newMarkdown ->
-- ( { model | markdown = newMarkdown }, Effect.none ) -- ( { model | markdown = newMarkdown }, Effect.none )
-- -- SUBSCRIPTIONS -- -- SUBSCRIPTIONS
-- subscriptions : Model -> Sub Msg -- subscriptions : Model -> Sub Msg
-- subscriptions model = -- subscriptions model =
-- Sub.none -- Sub.none
-- -- VIEW -- -- VIEW
-- view : Shared.Model -> Model -> View Msg -- view : Shared.Model -> Model -> View Msg
-- view shared model = -- view shared model =
-- { title = pageNames.pageNotFound -- { title = pageNames.pageNotFound
-- , attributes = [] -- , attributes = []
-- , element = notFoundContainer shared.device model -- , element = notFoundContainer shared.device model
-- } -- }
-- notFoundContainer : Device -> Model -> Element Msg -- notFoundContainer : Device -> Model -> Element Msg
-- notFoundContainer device model = -- notFoundContainer device model =
-- topLevelContainer (notFoundList device model) -- topLevelContainer (notFoundList device model)
-- notFoundList : Device -> Model -> Element Msg -- notFoundList : Device -> Model -> Element Msg
-- notFoundList device model = -- notFoundList device model =
-- column pageListCenter -- column pageListCenter
@ -277,12 +241,9 @@ notFoundList device =
-- , E.centerX -- , E.centerX
-- ] -- ]
-- renderedMarkdown -- renderedMarkdown
-- Err error -> -- Err error ->
-- E.text error -- E.text error
-- ] -- ]
-- renderMarkdown : String -> Result String (List (Element Msg)) -- renderMarkdown : String -> Result String (List (Element Msg))
-- renderMarkdown markdown = -- renderMarkdown markdown =
-- markdown -- markdown

View file

@ -1,6 +1,8 @@
module Pages.Nutridex exposing (Model, Msg, page) module Pages.Nutridex exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames) import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Articles.Article exposing (makeReference)
import Config.Helpers.Articles.Types exposing (References)
import Config.Helpers.CardFormat import Config.Helpers.CardFormat
exposing exposing
( cardContentSpacing ( cardContentSpacing
@ -19,11 +21,12 @@ import Config.Helpers.CardFormat
) )
import Config.Helpers.Format import Config.Helpers.Format
exposing exposing
( paragraphFontSize ( divider
, paragraphFontSize
, paragraphSpacing , paragraphSpacing
) )
import Config.Helpers.Header exposing (..) import Config.Helpers.Headers.Header exposing (..)
import Config.Helpers.References exposing (..) import Config.Helpers.Headers.Types exposing (Header)
import Config.Helpers.Response import Config.Helpers.Response
exposing exposing
( pageList ( pageList
@ -146,50 +149,39 @@ nutriDexList device =
List.concat List.concat
[ (case ( device.class, device.orientation ) of [ (case ( device.class, device.orientation ) of
( Phone, Portrait ) -> ( Phone, Portrait ) ->
List.map nutriDexMakerMobile List.map (\nutridex -> nutriDexMaker nutridex device)
( Tablet, Portrait ) -> ( Tablet, Portrait ) ->
List.map nutriDexMakerMobile List.map (\nutridex -> nutriDexMaker nutridex device)
_ -> _ ->
List.map nutriDexMaker List.map (\nutridex -> nutriDexMaker nutridex device)
) )
[ productNutriDex ] [ productNutriDex ]
] ]
nutriDexHeader : Header nutriDexMaker : NutriDex -> Device -> Element msg
nutriDexHeader = nutriDexMaker nutridex device =
let
name =
"NutriDex"
in
{ headerTitle = String.toUpper name
, headerBody = "fasdklfjasdlk;fjasdl;fjasdfl;kasjdfl;askdja;lsdkjas;ldfj"
}
nutriDexMaker : NutriDex -> Element msg
nutriDexMaker nutridex =
row row
topLevelBox topLevelBox
[ cardMaker [ cardMaker
[ cardTitleMaker (nutriDexTitle nutridex) [ cardTitleMaker (String.toUpper nutridex.nutriDexTitle)
, cardFormatter , cardFormatter
[ cardContentSpacing [ cardContentSpacing
[ column [ column
fieldSpacer fieldSpacer
[ cardSubTitleMaker [ cardSubTitleMaker
[ featureList nutridex [ featureList nutridex device
, nutriDexBodyMaker , nutriDexBodyMaker device
, nutriDexAdjustments , nutriDexAdjustments device
, column [ spacing 10 ] , column [ spacing 10 ]
[ nutriDexVitamins [ nutriDexVitamins
, nutriDexFattyAcids , nutriDexFattyAcids
, nutriDexMinerals , nutriDexMinerals
, nutriDexAminoAcids , 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 -> Element msg
makeFeature features = makeFeature features =
column column
@ -271,8 +229,8 @@ price =
} }
featureList : NutriDex -> Element msg featureList : NutriDex -> Device -> Element msg
featureList nutridex = featureList nutridex device =
column column
[ spacing 8 [ spacing 8
, width fill , width fill
@ -284,17 +242,48 @@ featureList nutridex =
, right = 0 , right = 0
} }
] ]
[ row [ (case ( device.class, device.orientation ) of
( Phone, Portrait ) ->
column
[ spacing 20
, centerX
]
( Tablet, Portrait ) ->
column
[ spacing 20
, centerX
]
_ ->
row
[ spacing 20 [ spacing 20
, width fill , width fill
, height fill , height fill
] ]
)
[ column [ column
[ spacing 20 (case ( device.class, device.orientation ) of
] ( Phone, Portrait ) ->
[ spacing 20, centerX ]
( Tablet, Portrait ) ->
[ spacing 20, centerX ]
_ ->
[ spacing 20 ]
)
[ row [ row
[ centerX [ 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 [ 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 : String -> Element msg
nutriDexTitleMaker title = nutriDexTitleMaker title =
column column [ centerX, width fill ]
[ width fill [ divider
, 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 }
]
[]
, paragraph , paragraph
([ F.color colourTheme.textLightGrey ([ F.color colourTheme.textLightGrey
, paragraphSpacing , paragraphSpacing
@ -465,8 +371,8 @@ linkFormat =
] ]
nutriDexBodyMaker : Element msg nutriDexBodyMaker : Device -> Element msg
nutriDexBodyMaker = nutriDexBodyMaker device =
column column
[ width fill [ width fill
, height fill , height fill
@ -557,22 +463,21 @@ referenceFormat =
] ]
nutriDexAdjustments : Element msg nutriDexAdjustments : Device -> Element msg
nutriDexAdjustments = nutriDexAdjustments device =
column column
[ width fill [ width fill
, height fill , height fill
, spacing 20 , spacing 20
] ]
[ nutriDexTitleMaker "Nutrient Density Score Adjustments" [ nutriDexTitleMaker "Nutrient Density Score Adjustments"
, row [] , el [] <|
[ paragraph paragraph
([ F.color colourTheme.textLightGrey [ F.color colourTheme.textLightGrey
, paragraphSpacing , paragraphSpacing
, paragraphFontSize , paragraphFontSize
, F.alignLeft
] ]
++ [ F.alignLeft, width fill ]
)
[ text " " [ 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. " , 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 ] , row [ F.regular, F.size 12 ]
@ -613,24 +518,21 @@ nutriDexAdjustments =
] ]
] ]
] ]
]
nutridexSubTitleMaker : String -> Element msg nutridexSubTitleMaker : String -> Element msg
nutridexSubTitleMaker title = nutridexSubTitleMaker title =
paragraph el
([ F.color colourTheme.textLightGrey [ F.color colourTheme.textLightGrey
, paragraphSpacing , paragraphSpacing
, paragraphFontSize , paragraphFontSize
, F.bold , F.bold
]
++ [ F.alignLeft
, width fill , width fill
, F.size 18 , F.size 18
, F.color colourTheme.textLightOrange , F.color colourTheme.textLightOrange
] ]
) <|
[ text title ] text title
nutriDexVitamins : Element msg nutriDexVitamins : Element msg
@ -1062,7 +964,7 @@ nutriDexAminoAcids =
, left = 0 , left = 0
} }
] ]
[ nutridexSubTitleMaker "Amino Acids" [ nutridexSubTitleMaker (String.toUpper "Amino Acids")
] ]
, row [] , row []
[ paragraph [ paragraph
@ -1104,73 +1006,15 @@ nutriDexAminoAcids =
] ]
nutriDexReferenceTitleMaker : Element msg nutriDexReferences : NutriDex -> Device -> Element msg
nutriDexReferenceTitleMaker = nutriDexReferences nutridex device =
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 =
column column
[ width fill [ width fill
, height fill , height fill
] ]
[ nutriDexTitleMaker "Reference" [ nutriDexTitleMaker "BIBLIOGRAPHY"
, column [ width fill, F.size 15, spacing 10 ] <| , column [ width fill, F.size 15, spacing 10 ] <|
List.map2 (\x y -> makeReference x y) List.map2 (\x y -> makeReference x y)
nutridex.nutriDexReference nutridex.nutriDexReference
(List.range 1 (List.length 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