Skip to content

Commit

Permalink
Merge pull request #669 from objectionary/562-is-there-anywhere-a-col…
Browse files Browse the repository at this point in the history
…lection-of-tests-for-the-input-grammar

562 is there anywhere a collection of tests for the input grammar
  • Loading branch information
deemp authored Jan 17, 2025
2 parents 118e509 + dd6274a commit b792628
Show file tree
Hide file tree
Showing 27 changed files with 669 additions and 205 deletions.
2 changes: 1 addition & 1 deletion eo-phi-normalizer/app/Main.hs
Original file line number Diff line number Diff line change
Expand Up @@ -466,7 +466,7 @@ instance Show CLI'Exception where
CouldNotParse{..} -> [fmt|An error occurred when parsing the input program:\n{message}|]
CouldNotNormalize -> [fmt|Could not normalize the program.|]
CouldNotMergeDependencies{..} -> message
Impossible{..} -> message
Impossible{..} -> [fmt|Impossible happened:\n{message}|]

getFile :: Maybe FilePath -> IO (Maybe String)
getFile = \case
Expand Down
6 changes: 6 additions & 0 deletions eo-phi-normalizer/eo-phi-normalizer.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -394,6 +394,7 @@ extra-source-files:
test/eo/phi/dataization.yaml
test/eo/phi/from-eo/as-phi.yaml
test/eo/phi/metrics.yaml
test/eo/phi/parser/expressions.yaml
test/eo/phi/rewriting.yaml
test/eo/phi/rules/new.yaml
test/eo/phi/rules/streams.yaml
Expand Down Expand Up @@ -487,6 +488,7 @@ library
, text
, text-manipulate
, unordered-containers
, validation-selective
, with-utf8
, yaml
default-language: Haskell2010
Expand Down Expand Up @@ -538,6 +540,7 @@ executable eo-phi-normalizer
, text
, text-manipulate
, unordered-containers
, validation-selective
, with-utf8
, yaml
default-language: Haskell2010
Expand Down Expand Up @@ -619,6 +622,7 @@ test-suite doctests
, text
, text-manipulate
, unordered-containers
, validation-selective
, with-utf8
, yaml
default-language: Haskell2010
Expand All @@ -628,6 +632,7 @@ test-suite spec
main-is: Main.hs
other-modules:
Language.EO.Phi.DataizeSpec
Language.EO.Phi.ParserSpec
Language.EO.Phi.RewriteSpec
Language.EO.PhiSpec
Language.EO.Rules.PhiPaperSpec
Expand Down Expand Up @@ -679,6 +684,7 @@ test-suite spec
, text
, text-manipulate
, unordered-containers
, validation-selective
, with-utf8
, yaml
default-language: Haskell2010
25 changes: 13 additions & 12 deletions eo-phi-normalizer/grammar/EO/Phi/Syntax.cf
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,15 @@ comment "//" ;
comment "/*" "*/" ;

token Bytes ({"--"} | ["0123456789ABCDEF"] ["0123456789ABCDEF"] {"-"} | ["0123456789ABCDEF"] ["0123456789ABCDEF"] ({"-"} ["0123456789ABCDEF"] ["0123456789ABCDEF"])+) ;
token Function upper (char - [" \r\n\t,.|':;!-?][}{)(⟧⟦"])* ;
token LabelId lower (char - [" \r\n\t,.|':;!?][}{)(⟧⟦"])* ;
token Function upper (char - [" \r\n\t,.|':;!-?][}{)(⟧⟦"])* ;
token LabelId lower (char - [" \r\n\t,.|':;!?][}{)(⟧⟦"])* ;
token AlphaIndex ({"α0"} | {"α"} (digit - ["0"]) (digit)* ) ;
token LabelMetaId {"!τ"} (char - [" \r\n\t,.|':;!-?][}{)(⟧⟦"])* ;
token TailMetaId {"!t"} (char - [" \r\n\t,.|':;!-?][}{)(⟧⟦"])* ;
token BindingsMetaId {"!B"} (char - [" \r\n\t,.|':;!-?][}{)(⟧⟦"])* ;
token ObjectMetaId {"!b"} (char - [" \r\n\t,.|':;!-?][}{)(⟧⟦"])* ;
token BytesMetaId {"!y"} (char - [" \r\n\t,.|':;!-?][}{)(⟧⟦"])* ;
token MetaFunctionName {"@"} (char - [" \r\n\t,.|':;!-?][}{)(⟧⟦"])* ;
token LabelMetaId {"!τ"} (char - [" \r\n\t,.|':;!-?][}{)(⟧⟦"])* ;
token TailMetaId {"!t"} (char - [" \r\n\t,.|':;!-?][}{)(⟧⟦"])* ;
token BindingsMetaId {"!B"} (char - [" \r\n\t,.|':;!-?][}{)(⟧⟦"])* ;
token ObjectMetaId {"!b"} (char - [" \r\n\t,.|':;!-?][}{)(⟧⟦"])* ;
token BytesMetaId {"!y"} (char - [" \r\n\t,.|':;!-?][}{)(⟧⟦"])* ;
token MetaFunctionName {"@"} (char - [" \r\n\t,.|':;!-?][}{)(⟧⟦"])* ;
token IntegerSigned ('-'? digit+) ;
token DoubleSigned ('-'? digit+ '.' digit+ ('e' '-'? digit+)?) ;
token StringRaw '"' ((char - ["\"\\"]) | ('\\' ["\"\\tnrfu"]))* '"';
Expand Down Expand Up @@ -71,7 +71,7 @@ internal ConstFloat. Object ::= Double;
internal ConstInt. Object ::= Integer;
internal ConstString. Object ::= String;

AlphaBinding. Binding ::= Attribute "↦" Object ;
AlphaBinding. Binding ::= AttributeSugar "↦" Object ;
AlphaBindingSugar. Binding ::= Object ;
EmptyBinding. Binding ::= Attribute "↦" "∅" ;
DeltaBinding. Binding ::= "Δ" "⤍" Bytes ;
Expand All @@ -81,14 +81,15 @@ MetaBindings. Binding ::= BindingsMetaId ;
MetaDeltaBinding. Binding ::= "Δ" "⤍" BytesMetaId ;
separator Binding "," ;

AttributeNoSugar. AttributeSugar ::= "#" Attribute;
AttributeSugar. AttributeSugar ::= "~" LabelId "(" [Attribute] ")";
separator Attribute ",";

Phi. Attribute ::= "φ" ; -- decoratee object
PhiSugar. Attribute ::= "~" "φ" "(" [LabelId] ")";
Rho. Attribute ::= "ρ" ; -- parent object
Label. Attribute ::= LabelId ;
Alpha. Attribute ::= AlphaIndex ;
MetaAttr. Attribute ::= LabelMetaId ;
AttrSugar. Attribute ::= "~" LabelId "(" [LabelId] ")";
separator LabelId ",";

-- Additional symbols used as attributes in the rules
ObjectAttr. RuleAttribute ::= Attribute ;
Expand Down
1 change: 1 addition & 0 deletions eo-phi-normalizer/package.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ dependencies:
- megaparsec
- parser-combinators
- prettyprinter
- validation-selective

default-extensions:
- ImportQualifiedPost
Expand Down
2 changes: 1 addition & 1 deletion eo-phi-normalizer/src/Language/EO/Phi/Dataize.hs
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ dataizeStepChain mode obj@(Formation bs)
ctx <- getContext
return (ctx, AsObject obj')
| DataizeAll <- mode
, Just (AlphaBinding Phi decoratee) <- listToMaybe [b | b@(AlphaBinding Phi _) <- bs]
, Just (AlphaBinding' Phi decoratee) <- listToMaybe [b | b@(AlphaBinding' Phi _) <- bs]
, not hasEmpty = do
let decoratee' = substThis obj decoratee
logStep "Dataizing inside phi" (AsObject decoratee')
Expand Down
4 changes: 2 additions & 2 deletions eo-phi-normalizer/src/Language/EO/Phi/Dataize/Atoms.hs
Original file line number Diff line number Diff line change
Expand Up @@ -163,11 +163,11 @@ knownAtomsList =
where
isPackage (LambdaBinding (Function "Package")) = True
isPackage _ = False
dataizeBindingChain (AlphaBinding attr o) = do
dataizeBindingChain (AlphaBinding' attr o) = do
ctx <- getContext
let extendedContext = (extendContextWith obj ctx){currentAttr = attr}
dataizationResult <- incLogLevel $ withContext extendedContext $ dataizeRecursivelyChain False o
return (AlphaBinding attr (either id (Formation . singleton . DeltaBinding) dataizationResult))
return (AlphaBinding' attr (either id (Formation . singleton . DeltaBinding) dataizationResult))
dataizeBindingChain b = return b
f name _otherwise = evaluateBuiltinFunChainUnknown name _otherwise
in
Expand Down
3 changes: 2 additions & 1 deletion eo-phi-normalizer/src/Language/EO/Phi/Dependencies.hs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ import Language.EO.Phi
import Control.Monad (foldM)

bindingAttr :: Binding -> Maybe Attribute
bindingAttr (AlphaBinding a _) = Just a
bindingAttr (AlphaBinding' a _) = Just a
bindingAttr b@(AlphaBinding _ _) = errorExpectedDesugaredBinding b
bindingAttr (EmptyBinding a) = Just a
bindingAttr (DeltaBinding _) = Just (Alpha (AlphaIndex "Δ"))
bindingAttr DeltaEmptyBinding = Just (Alpha (AlphaIndex "Δ"))
Expand Down
26 changes: 14 additions & 12 deletions eo-phi-normalizer/src/Language/EO/Phi/Metrics/Collect.hs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
{-# LANGUAGE InstanceSigs #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedLabels #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
Expand All @@ -43,6 +44,7 @@ import Data.Maybe (catMaybes)
import Data.Traversable (forM)
import Language.EO.Phi.Metrics.Data (BindingMetrics (..), BindingsByPathMetrics (..), MetricsCount, ObjectMetrics (..), Path, ProgramMetrics (..))
import Language.EO.Phi.Rules.Common ()
import Language.EO.Phi.Syntax (pattern AlphaBinding')
import Language.EO.Phi.Syntax.Abs

-- $setup
Expand Down Expand Up @@ -158,12 +160,12 @@ getThisObjectMetrics obj = execState (inspect obj) mempty

-- | Get an object by a path within a given object.
--
-- If no object is accessible by the path, return a prefix of the path that led to a non-formation when the remaining path wasn't empty.
-- If no object is accessible by the path, return the path that led to a non-formation.
-- >>> flip getObjectByPath ["org", "eolang"] "⟦ org ↦ ⟦ eolang ↦ ⟦ x ↦ ⟦ φ ↦ Φ.org.eolang.bool ( α0 ↦ Φ.org.eolang.bytes (Δ ⤍ 01-) ) ⟧, z ↦ ⟦ y ↦ ⟦ x ↦ ∅, φ ↦ ξ.x ⟧, φ ↦ Φ.org.eolang.bool ( α0 ↦ Φ.org.eolang.bytes (Δ ⤍ 01-) ) ⟧, λ ⤍ Package ⟧, λ ⤍ Package ⟧⟧"
-- Right (Formation [AlphaBinding (Label (LabelId "x")) (Formation [AlphaBinding Phi (Application (ObjectDispatch (ObjectDispatch (ObjectDispatch GlobalObject (Label (LabelId "org"))) (Label (LabelId "eolang"))) (Label (LabelId "bool"))) [AlphaBinding (Alpha (AlphaIndex "\945\&0")) (Application (ObjectDispatch (ObjectDispatch (ObjectDispatch GlobalObject (Label (LabelId "org"))) (Label (LabelId "eolang"))) (Label (LabelId "bytes"))) [DeltaBinding (Bytes "01-")])])]),AlphaBinding (Label (LabelId "z")) (Formation [AlphaBinding (Label (LabelId "y")) (Formation [EmptyBinding (Label (LabelId "x")),AlphaBinding Phi (ObjectDispatch ThisObject (Label (LabelId "x")))]),AlphaBinding Phi (Application (ObjectDispatch (ObjectDispatch (ObjectDispatch GlobalObject (Label (LabelId "org"))) (Label (LabelId "eolang"))) (Label (LabelId "bool"))) [AlphaBinding (Alpha (AlphaIndex "\945\&0")) (Application (ObjectDispatch (ObjectDispatch (ObjectDispatch GlobalObject (Label (LabelId "org"))) (Label (LabelId "eolang"))) (Label (LabelId "bytes"))) [DeltaBinding (Bytes "01-")])])]),LambdaBinding (Function "Package")])
-- Right (Formation [AlphaBinding (AttributeNoSugar (Label (LabelId "x"))) (Formation [AlphaBinding (AttributeNoSugar Phi) (Application (ObjectDispatch (ObjectDispatch (ObjectDispatch GlobalObject (Label (LabelId "org"))) (Label (LabelId "eolang"))) (Label (LabelId "bool"))) [AlphaBinding (AttributeNoSugar (Alpha (AlphaIndex "\945\&0"))) (Application (ObjectDispatch (ObjectDispatch (ObjectDispatch GlobalObject (Label (LabelId "org"))) (Label (LabelId "eolang"))) (Label (LabelId "bytes"))) [DeltaBinding (Bytes "01-")])])]),AlphaBinding (AttributeNoSugar (Label (LabelId "z"))) (Formation [AlphaBinding (AttributeNoSugar (Label (LabelId "y"))) (Formation [EmptyBinding (Label (LabelId "x")),AlphaBinding (AttributeNoSugar Phi) (ObjectDispatch ThisObject (Label (LabelId "x")))]),AlphaBinding (AttributeNoSugar Phi) (Application (ObjectDispatch (ObjectDispatch (ObjectDispatch GlobalObject (Label (LabelId "org"))) (Label (LabelId "eolang"))) (Label (LabelId "bool"))) [AlphaBinding (AttributeNoSugar (Alpha (AlphaIndex "\945\&0"))) (Application (ObjectDispatch (ObjectDispatch (ObjectDispatch GlobalObject (Label (LabelId "org"))) (Label (LabelId "eolang"))) (Label (LabelId "bytes"))) [DeltaBinding (Bytes "01-")])])]),LambdaBinding (Function "Package")])
--
-- >>> flip getObjectByPath ["a"] "⟦ a ↦ ⟦ b ↦ ⟦ c ↦ ∅, d ↦ ⟦ φ ↦ ξ.ρ.c ⟧ ⟧, e ↦ ξ.b(c ↦ ⟦⟧).d ⟧.e ⟧"
-- Right (ObjectDispatch (Formation [AlphaBinding (Label (LabelId "b")) (Formation [EmptyBinding (Label (LabelId "c")),AlphaBinding (Label (LabelId "d")) (Formation [AlphaBinding Phi (ObjectDispatch (ObjectDispatch ThisObject Rho) (Label (LabelId "c")))])]),AlphaBinding (Label (LabelId "e")) (ObjectDispatch (Application (ObjectDispatch ThisObject (Label (LabelId "b"))) [AlphaBinding (Label (LabelId "c")) (Formation [])]) (Label (LabelId "d")))]) (Label (LabelId "e")))
-- Left ["a"]
getObjectByPath :: Object -> Path -> Either Path Object
getObjectByPath object path =
case path of
Expand All @@ -180,15 +182,15 @@ getObjectByPath object path =
x <- bindings
Right obj <-
case x of
AlphaBinding (Alpha (AlphaIndex name)) obj | name == p -> [getObjectByPath obj ps]
AlphaBinding (Label (LabelId name)) obj | name == p -> [getObjectByPath obj ps]
AlphaBinding' (Alpha (AlphaIndex name)) obj@(Formation{}) | name == p -> [getObjectByPath obj ps]
AlphaBinding' (Label (LabelId name)) obj@(Formation{}) | name == p -> [getObjectByPath obj ps]
_ -> [Left path]
pure obj
_ -> Left path

-- | Get metrics for bindings of a formation that is accessible by a path within a given object.
--
-- If no formation is accessible by the path, return a prefix of the path that led to a non-formation when the remaining path wasn't empty.
-- If no formation is accessible by the path, return the path that led to a non-formation.
-- >>> flip getBindingsByPathMetrics ["a"] "⟦ a ↦ ⟦ b ↦ ⟦ c ↦ ∅, d ↦ ⟦ φ ↦ ξ.ρ.c ⟧ ⟧, e ↦ ξ.b(c ↦ ⟦⟧).d ⟧.e ⟧"
-- Left ["a"]
--
Expand All @@ -203,8 +205,8 @@ getBindingsByPathMetrics object path =
bindingsMetrics = do
x <- zip bindings objectMetrics
case x of
(AlphaBinding (Alpha (AlphaIndex name)) _, metrics) -> [BindingMetrics{..}]
(AlphaBinding (Label (LabelId name)) _, metrics) -> [BindingMetrics{..}]
(AlphaBinding' (Alpha (AlphaIndex name)) _, metrics) -> [BindingMetrics{..}]
(AlphaBinding' (Label (LabelId name)) _, metrics) -> [BindingMetrics{..}]
_ -> []
in Right $ BindingsByPathMetrics{..}
Right _ -> Left path
Expand All @@ -214,7 +216,7 @@ getBindingsByPathMetrics object path =
--
-- Combine metrics produced by 'getThisObjectMetrics' and 'getBindingsByPathMetrics'.
--
-- If no formation is accessible by the path, return a prefix of the path that led to a non-formation when the remaining path wasn't empty.
-- If no formation is accessible by the path, return the path that led to a non-formation.
-- >>> flip getObjectMetrics (Just ["a"]) "⟦ a ↦ ⟦ b ↦ ⟦ c ↦ ∅, d ↦ ⟦ φ ↦ ξ.ρ.c ⟧ ⟧, e ↦ ξ.b(c ↦ ⟦⟧).d ⟧.e ⟧"
-- Left ["a"]
--
Expand All @@ -223,14 +225,14 @@ getBindingsByPathMetrics object path =
getObjectMetrics :: Object -> Maybe Path -> Either Path ObjectMetrics
getObjectMetrics object path = do
let thisObjectMetrics = getThisObjectMetrics object
bindingsByPathMetrics <- forM path $ \path' -> getBindingsByPathMetrics object path'
bindingsByPathMetrics <- forM path $ getBindingsByPathMetrics object
pure ObjectMetrics{..}

-- | Get metrics for a program and for bindings of a formation accessible by a given path.
-- | Get metrics for a program and for bindings of a formation accessible by the given path.
--
-- Combine metrics produced by 'getThisObjectMetrics' and 'getBindingsByPathMetrics'.
--
-- If no formation is accessible by the path, return a prefix of the path that led to a non-formation when the remaining path wasn't empty.
-- If no formation is accessible by the path, return the path that led to a non-formation.
-- >>> flip getProgramMetrics (Just ["org", "eolang"]) "{⟦ org ↦ ⟦ eolang ↦ ⟦ x ↦ ⟦ φ ↦ Φ.org.eolang.bool ( α0 ↦ Φ.org.eolang.bytes (Δ ⤍ 01-) ) ⟧, z ↦ ⟦ y ↦ ⟦ x ↦ ∅, φ ↦ ξ.x ⟧, φ ↦ Φ.org.eolang.bool ( α0 ↦ Φ.org.eolang.bytes (Δ ⤍ 01-) ) ⟧, λ ⤍ Package ⟧, λ ⤍ Package ⟧⟧ }"
-- Right (ProgramMetrics {bindingsByPathMetrics = Just (BindingsByPathMetrics {path = ["org","eolang"], bindingsMetrics = [BindingMetrics {name = "x", metrics = Metrics {dataless = 1, applications = 2, formations = 1, dispatches = 6}},BindingMetrics {name = "z", metrics = Metrics {dataless = 2, applications = 2, formations = 2, dispatches = 7}}]}), programMetrics = Metrics {dataless = 6, applications = 4, formations = 6, dispatches = 13}})
--
Expand Down
101 changes: 79 additions & 22 deletions eo-phi-normalizer/src/Language/EO/Phi/Preprocess.hs
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,17 @@
-- SOFTWARE.
{- FOURMOLU_ENABLE -}
{-# LANGUAGE BlockArguments #-}
{-# LANGUAGE LambdaCase #-}

module Language.EO.Phi.Preprocess where

import Control.Monad (void)
import Data.Void (Void)
import Language.EO.Phi.Syntax.Abs
import Replace.Megaparsec (splitCap)
import Text.Megaparsec (MonadParsec (..), Parsec, Stream (..), between, match, sepBy)
import Text.Megaparsec (MonadParsec (..), Parsec, Stream (..), between, choice, match, oneOf, optional, sepBy)
import Text.Megaparsec.Byte.Lexer qualified as L
import Text.Megaparsec.Char (lowerChar, space)
import Text.Megaparsec.Char (space, string)

symbol :: String -> Parser String
symbol = L.symbol space
Expand All @@ -40,41 +42,96 @@ lexeme = L.lexeme space

type Parser = Parsec Void String

parseLabelId :: Parser ()
parseTail :: Parser String
parseTail = takeWhileP (Just "LabelId") (`notElem` " \r\n\t,.|':;!?][}{)(⟧⟦↦")

parseLabelId :: Parser LabelId
parseLabelId = lexeme do
void lowerChar
void $ takeWhileP (Just "LabelId") (`notElem` " \r\n\t,.|':;!?][}{)(⟧⟦")
l <- oneOf ['a' .. 'z']
ls <- parseTail
pure $ LabelId (l : ls)

parseToken :: String -> (String -> a) -> Parser a
parseToken prefix cons = lexeme do
void $ string prefix
ls <- parseTail
pure $ cons (prefix <> ls)

parseObjectMetaId :: Parser ObjectMetaId
parseObjectMetaId = parseToken "!b" ObjectMetaId

parseBytesMetaId :: Parser BytesMetaId
parseBytesMetaId = parseToken "!y" BytesMetaId

parseLabelMetaId :: Parser LabelMetaId
parseLabelMetaId = parseToken "" LabelMetaId

parseMetaId :: Parser MetaId
parseMetaId =
choice
[ MetaIdObject <$> parseObjectMetaId
, MetaIdBytes <$> parseBytesMetaId
, MetaIdLabel <$> parseLabelMetaId
]

parseAlphaIndex :: Parser AlphaIndex
parseAlphaIndex = parseToken "α" AlphaIndex

parseAttribute :: Parser Attribute
parseAttribute = lexeme do
choice
[ Phi <$ symbol "φ"
, Rho <$ symbol "ρ"
, Label <$> parseLabelId
, Alpha <$> parseAlphaIndex
]

parseBindingArrow :: Parser ()
parseBindingArrow = void $ symbol ""

parseAlphaAttr :: Parser ()
parseAlphaAttr = do
void parseLabelId
void $ between (symbol "(") (symbol ")") (sepBy parseLabelId (symbol ","))

parseAlphaBindingSugar :: Parser ()
parseAttributeSugar :: Parser AttributeSugar
parseAttributeSugar = do
choice
[ do
labelId <- parseLabelId
attrs <- optional $ between (symbol "(") (symbol ")") (sepBy parseAttribute (symbol ","))
case attrs of
Nothing -> pure $ AttributeNoSugar (Label labelId)
Just attrs' -> pure $ AttributeSugar labelId attrs'
, AttributeNoSugar <$> parseAttribute
]

type Attr = Either MetaId AttributeSugar

parseAlphaBindingSugar :: Parser Attr
parseAlphaBindingSugar = do
parseAlphaAttr
attr <-
choice
[ Left <$> parseMetaId
, Right <$> parseAttributeSugar
]
parseBindingArrow
notFollowedBy (symbol "")
pure attr

splitInput :: Parser a -> String -> [Either String (Tokens [Char])]
splitInput sep = splitCap (fst <$> match sep)
splitInput :: Parser a -> String -> [Either String (Tokens [Char], a)]
splitInput sep = splitCap (match sep)

addPrefix :: Parser a -> String -> [String]
addPrefix sep = map (either id ("~" <>)) . splitInput sep
addPrefix :: Parser Attr -> String -> [String]
addPrefix sep = fmap (either id (\(x, a) -> choosePrefix a <> x)) . splitInput sep
where
choosePrefix = \case
Right AttributeSugar{} -> "~"
_ -> "#"

preprocess' :: Parser a -> String -> String
preprocess' :: Parser Attr -> String -> String
preprocess' sep = concat . addPrefix sep

preprocess :: String -> String
preprocess = preprocess' parseAlphaBindingSugar

input1 :: String
input1 = "{⟦ org ↦ ⟦ eolang ↦ ⟦ number( as-bytes, abra ) ↦ ⟦ φ ↦ ξ.as-bytes, neg ↦ ξ.times(-1), ⟧, λ ⤍ Package ⟧, λ ⤍ Package ⟧ ⟧}"

-- >>> addPrefix parseAlphaBindingSugar input1
-- ["{\10214 org \8614 \10214 eolang \8614 \10214 ","~number( as-bytes, abra ) \8614 ","\10214 \966 \8614 \958.as-bytes, neg \8614 \958.times(-1), \10215, \955 \10509 Package \10215, \955 \10509 Package \10215 \10215}"]
input1 = "{⟦ org ↦ ⟦ ⟧(α0 ↦ !b1) ⟧}"

-- >>> preprocess input1
-- "{\10214 org \8614 \10214 eolang \8614 \10214 ~number( as-bytes, abra ) \8614 \10214 \966 \8614 \958.as-bytes, neg \8614 \958.times(-1), \10215, \955 \10509 Package \10215, \955 \10509 Package \10215 \10215}"
-- "{\10214 #org \8614 \10214 \10215(#\945\&0 \8614 !b1) \10215}"
Loading

1 comment on commit b792628

@0pdd
Copy link

@0pdd 0pdd commented on b792628 Jan 17, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wasn't able to retrieve PDD puzzles from the code base and submit them to github. If you think that it's a bug on our side, please submit it to yegor256/0pdd:

set -x && set -e && set -o pipefail && cd /tmp/0pdd20250117-2-g8umqy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA && pdd -v -f /tmp/20250117-12522-ekmlgj [1]: + set -e + set -o pipefail + cd...

Please, copy and paste this stack trace to GitHub:

UserError
set -x && set -e && set -o pipefail && cd /tmp/0pdd20250117-2-g8umqy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA && pdd -v -f /tmp/20250117-12522-ekmlgj [1]:
+ set -e
+ set -o pipefail
+ cd /tmp/0pdd20250117-2-g8umqy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA
+ pdd -v -f /tmp/20250117-12522-ekmlgj

My version is 0.24.0
Ruby version is 3.1.4 at x86_64-linux
Reading from root dir /tmp/0pdd20250117-2-g8umqy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA
/tmp/0pdd20250117-2-g8umqy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA/.markdownlint.jsonc is a binary file (23 bytes)
/tmp/0pdd20250117-2-g8umqy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA/.vscode/settings.json is a binary file (650 bytes)
/tmp/0pdd20250117-2-g8umqy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA/flake.lock is a binary file (5296 bytes)
/tmp/0pdd20250117-2-g8umqy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA/package-lock.json is a binary file (31057 bytes)
/tmp/0pdd20250117-2-g8umqy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA/package.json is a binary file (126 bytes)
/tmp/0pdd20250117-2-g8umqy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA/renovate.json is a binary file (114 bytes)
/tmp/0pdd20250117-2-g8umqy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA/site/docs/src/image.png is a binary file (245811 bytes)
/tmp/0pdd20250117-2-g8umqy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA/site/docs/src/media/metrics.png is a binary file (95050 bytes)
/tmp/0pdd20250117-2-g8umqy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA/site/docs/src/media/phi-grammar.png is a binary file (131415 bytes)
/tmp/0pdd20250117-2-g8umqy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA/site/docs/src/media/print-rules-tex-compact.png is a binary file (235249 bytes)
/tmp/0pdd20250117-2-g8umqy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA/site/docs/src/media/print-rules-tex.png is a binary file (588712 bytes)
/tmp/0pdd20250117-2-g8umqy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA/site/docs/src/media/rules.jpg is a binary file (76143 bytes)
/tmp/0pdd20250117-2-g8umqy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA/stack.nix is a binary file (66 bytes)
Reading .envrc ...
Reading .gitattributes ...
Reading .github/workflows/ghc.yml ...
Puzzle 340-40b07064 10/DEV at .github/workflows/ghc.yml
Reading .github/workflows/markdown-lint.yml ...
Reading .github/workflows/release.yml ...
Reading .gitignore ...
Reading .gitmodules ...
Reading .hlint.yaml ...
Reading .pre-commit-config.yaml ...
Reading .prettierignore ...
Reading CONTRIBUTING.md ...
Reading LICENSE.txt ...
Reading README.md ...
Reading cabal.project ...
Reading default.nix ...
Reading eo-phi-normalizer/.gitignore ...
Reading eo-phi-normalizer/CHANGELOG.md ...
Reading eo-phi-normalizer/LICENSE ...
Reading eo-phi-normalizer/README.md ...
Reading eo-phi-normalizer/Setup.hs ...
Reading eo-phi-normalizer/app/Main.hs ...
Reading eo-phi-normalizer/data/0.36.0/dependencies.md ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/as-phi.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/bool.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/bytes.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/cage.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/cti.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/dataized.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/error.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/float.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/go.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/goto.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/heap.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/if.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/int.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/io/stdin.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/io/stdout.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/malloc.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/memory.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/nan.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/negative-infinity.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/nop.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/positive-infinity.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/ram.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/rust.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/seq.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/string.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/switch.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/try.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/tuple.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/while.phi ...
Reading eo-phi-normalizer/data/0.37.0/dependencies.md ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/as-phi.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/bytes.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/cage.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/cti.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/dataized.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/error.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/false.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/float.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/go.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/int.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/io/stdin.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/io/stdout.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/malloc.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/nan.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/negative-infinity.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/positive-infinity.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/rust.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/seq.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/string.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/switch.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/true.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/try.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/tuple.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/while.phi ...
Reading eo-phi-normalizer/data/0.38.0/dependencies.md ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/as-phi.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/bytes.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/cage.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/cti.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/dataized.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/error.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/false.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/float.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/go.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/int.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/io/stdin.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/io/stdout.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/malloc.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/nan.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/negative-infinity.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/positive-infinity.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/rust.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/seq.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/string.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/switch.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/true.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/try.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/tuple.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/while.phi ...
Reading eo-phi-normalizer/data/0.38.4/dependencies.md ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/as-phi.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/bytes.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/cage.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/cti.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/dataized.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/error.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/false.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/float.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/go.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/int.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/io/stdin.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/io/stdout.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/malloc.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/nan.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/negative-infinity.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/positive-infinity.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/rust.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/seq.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/string.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/switch.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/true.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/try.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/tuple.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/while.phi ...
Reading eo-phi-normalizer/data/0.41.2/dependencies.md ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/as-phi.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/bytes.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/cage.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/cti.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/dataized.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/error.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/false.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/fs/dir.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/fs/file.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/fs/path.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/fs/tmpdir.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/go.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/i16.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/i32.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/i64.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/io/bytes-as-input.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/io/console.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/io/dead-input.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/io/dead-output.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/io/input-length.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/io/malloc-as-output.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/io/stdin.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/io/stdout.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/io/tee-input.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/malloc.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/math/angle.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/math/e.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/math/integral.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/math/numbers.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/math/pi.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/math/random.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/math/real.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/nan.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/negative-infinity.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/net/socket.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/number.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/positive-infinity.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/rust.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/seq.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/string.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/structs/bytes-as-array.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/structs/hash-code-of.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/structs/list.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/structs/map.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/structs/range-of-ints.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/structs/range.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/structs/set.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/switch.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/sys/getenv.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/sys/line-separator.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/sys/os.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/sys/posix.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/sys/win32.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/true.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/try.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/tuple.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/txt/regex.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/txt/sprintf.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/txt/sscanf.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/txt/text.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/while.phi ...
Reading eo-phi-normalizer/data/0.49.1/dependencies.md ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/as-phi.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/bytes.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/cti.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/dataized.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/error.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/false.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/fs/dir.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/fs/file.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/fs/path.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/fs/tmpdir.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/go.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/i16.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/i32.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/i64.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/io/bytes-as-input.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/io/console.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/io/dead-input.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/io/dead-output.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/io/input-length.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/io/malloc-as-output.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/io/stdin.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/io/stdout.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/io/tee-input.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/malloc.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/math/angle.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/math/e.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/math/integral.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/math/numbers.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/math/pi.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/math/random.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/math/real.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/nan.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/negative-infinity.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/net/socket.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/number.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/positive-infinity.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/rust.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/seq.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/string.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/structs/bytes-as-array.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/structs/hash-code-of.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/structs/list.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/structs/map.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/structs/range-of-ints.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/structs/range.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/structs/set.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/switch.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/sys/getenv.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/sys/line-separator.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/sys/os.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/sys/posix.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/sys/win32.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/true.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/try.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/tuple.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/txt/regex.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/txt/sprintf.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/txt/sscanf.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/txt/text.phi ...
Reading eo-phi-normalizer/data/0.49.1/org/eolang/while.phi ...
Reading eo-phi-normalizer/data/0.49.3/dependencies.md ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/as-phi.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/bytes.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/cti.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/dataized.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/error.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/false.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/fs/dir.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/fs/file.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/fs/path.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/fs/tmpdir.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/go.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/i16.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/i32.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/i64.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/io/bytes-as-input.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/io/console.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/io/dead-input.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/io/dead-output.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/io/input-length.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/io/malloc-as-output.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/io/stdin.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/io/stdout.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/io/tee-input.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/malloc.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/math/angle.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/math/e.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/math/integral.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/math/numbers.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/math/pi.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/math/random.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/math/real.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/nan.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/negative-infinity.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/net/socket.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/number.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/positive-infinity.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/seq.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/string.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/structs/bytes-as-array.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/structs/hash-code-of.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/structs/list.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/structs/map.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/structs/range-of-ints.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/structs/range.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/structs/set.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/switch.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/sys/getenv.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/sys/line-separator.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/sys/os.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/sys/posix.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/sys/win32.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/true.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/try.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/tuple.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/txt/regex.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/txt/sprintf.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/txt/sscanf.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/txt/text.phi ...
Reading eo-phi-normalizer/data/0.49.3/org/eolang/while.phi ...
Reading eo-phi-normalizer/data/0.49.4/dependencies.md ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/bytes.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/cti.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/dataized.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/error.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/false.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/fs/dir.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/fs/file.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/fs/path.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/fs/tmpdir.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/go.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/i16.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/i32.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/i64.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/io/bytes-as-input.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/io/console.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/io/dead-input.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/io/dead-output.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/io/input-length.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/io/malloc-as-output.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/io/stdin.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/io/stdout.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/io/tee-input.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/malloc.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/math/angle.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/math/e.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/math/integral.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/math/numbers.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/math/pi.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/math/random.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/math/real.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/nan.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/negative-infinity.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/net/socket.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/number.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/positive-infinity.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/seq.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/string.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/structs/bytes-as-array.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/structs/hash-code-of.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/structs/list.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/structs/map.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/structs/range-of-ints.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/structs/range.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/structs/set.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/switch.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/sys/getenv.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/sys/line-separator.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/sys/os.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/sys/posix.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/sys/win32.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/true.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/try.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/tuple.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/txt/regex.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/txt/sprintf.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/txt/sscanf.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/txt/text.phi ...
Reading eo-phi-normalizer/data/0.49.4/org/eolang/while.phi ...
Reading eo-phi-normalizer/data/0.50.0/dependencies.md ...
Reading eo-phi-normalizer/data/0.50.0/org/eolang/bytes.phi ...
Reading eo-phi-normalizer/data/0.50.0/org/eolang/dataized.phi ...
Reading eo-phi-normalizer/data/0.50.0/org/eolang/error.phi ...
Reading eo-phi-normalizer/data/0.50.0/org/eolang/false.phi ...
Reading eo-phi-normalizer/data/0.50.0/org/eolang/i16.phi ...
Reading eo-phi-normalizer/data/0.50.0/org/eolang/i32.phi ...
Reading eo-phi-normalizer/data/0.50.0/org/eolang/i64.phi ...
Reading eo-phi-normalizer/data/0.50.0/org/eolang/io/dead-input.phi ...
Reading eo-phi-normalizer/data/0.50.0/org/eolang/io/dead-output.phi ...
Reading eo-phi-normalizer/data/0.50.0/org/eolang/nan.phi ...
Reading eo-phi-normalizer/data/0.50.0/org/eolang/negative-infinity.phi ...
Reading eo-phi-normalizer/data/0.50.0/org/eolang/number.phi ...
Reading eo-phi-normalizer/data/0.50.0/org/eolang/positive-infinity.phi ...
Reading eo-phi-normalizer/data/0.50.0/org/eolang/seq.phi ...
Reading eo-phi-normalizer/data/0.50.0/org/eolang/string.phi ...
Reading eo-phi-normalizer/data/0.50.0/org/eolang/true.phi ...
Reading eo-phi-normalizer/data/0.50.0/org/eolang/try.phi ...
Reading eo-phi-normalizer/data/0.50.0/org/eolang/tuple.phi ...
Reading eo-phi-normalizer/data/0.50.0/org/eolang/txt/sprintf.phi ...
Reading eo-phi-normalizer/data/0.50.0/org/eolang/while.phi ...
Reading eo-phi-normalizer/eo-phi-normalizer.cabal ...
Reading eo-phi-normalizer/grammar/EO/Phi/Syntax.cf ...
Reading eo-phi-normalizer/package.yaml ...
Reading eo-phi-normalizer/report/main.js ...
Reading eo-phi-normalizer/report/styles.css ...
Reading eo-phi-normalizer/src/Language/EO/Locale.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Dataize/Atoms.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Dataize/Context.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Dataize.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Dependencies.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Metrics/Collect.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Metrics/Data.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Normalize.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Pipeline/Config.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Pipeline/Dataize/PrintConfigs.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Pipeline/EOTests/Data.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Pipeline/EOTests/PrepareTests.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Preprocess.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Pretty.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Report/Data.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Report/Html.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Rules/Common.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Rules/Fast.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Rules/RunYegor.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Rules/Yaml.hs ...
ERROR: ERROR: eo-phi-normalizer/src/Language/EO/Phi/Rules/Yaml.hs; PDD::Error at eo-phi-normalizer/src/Language/EO/Phi/Rules/Yaml.hs:151: TODO found, but puzzle can't be parsed, most probably because TODO is not followed by a puzzle marker, as this page explains: https://github.com/cqfn/pdd#how-to-format
If you can't understand the cause of this issue or you don't know how to fix it, please submit a GitHub issue, we will try to help you: https://github.com/cqfn/pdd/issues. This tool is still in its beta version and we will appreciate your feedback. Here is where you can find more documentation: https://github.com/cqfn/pdd/blob/master/README.md.
Exit code is 1

/app/objects/git_repo.rb:74:in `rescue in block in xml'
/app/objects/git_repo.rb:71:in `block in xml'
/app/vendor/ruby-3.1.4/lib/ruby/3.1.0/tempfile.rb:317:in `open'
/app/objects/git_repo.rb:70:in `xml'
/app/objects/puzzles.rb:46:in `deploy'
/app/objects/jobs/job.rb:38:in `proceed'
/app/objects/jobs/job_starred.rb:32:in `proceed'
/app/objects/jobs/job_recorded.rb:31:in `proceed'
/app/objects/jobs/job_emailed.rb:33:in `proceed'
/app/objects/jobs/job_commiterrors.rb:33:in `proceed'
/app/objects/jobs/job_detached.rb:48:in `exclusive'
/app/objects/jobs/job_detached.rb:36:in `block in proceed'
/app/objects/jobs/job_detached.rb:36:in `fork'
/app/objects/jobs/job_detached.rb:36:in `proceed'
/app/0pdd.rb:549:in `process_request'
/app/0pdd.rb:380:in `block in <top (required)>'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1804:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1804:in `block in compile!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1071:in `block (3 levels) in route!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1089:in `route_eval'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1071:in `block (2 levels) in route!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1120:in `block in process_route'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1118:in `catch'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1118:in `process_route'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1069:in `block in route!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1066:in `each'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1066:in `route!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1190:in `block in dispatch!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1161:in `catch'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1161:in `invoke'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1185:in `dispatch!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1001:in `block in call!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1161:in `catch'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1161:in `invoke'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1001:in `call!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:990:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-3.0.9/lib/rack/rewindable_input.rb:25:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-3.0.9/lib/rack/deflater.rb:47:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-4.0.0/lib/rack/protection/xss_header.rb:20:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-4.0.0/lib/rack/protection/path_traversal.rb:18:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-4.0.0/lib/rack/protection/json_csrf.rb:28:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-4.0.0/lib/rack/protection/base.rb:53:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-4.0.0/lib/rack/protection/base.rb:53:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-4.0.0/lib/rack/protection/frame_options.rb:33:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-3.0.9/lib/rack/logger.rb:19:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-3.0.9/lib/rack/common_logger.rb:43:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:266:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:259:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-3.0.9/lib/rack/head.rb:15:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-3.0.9/lib/rack/method_override.rb:28:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:224:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:2115:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1674:in `block in call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1890:in `synchronize'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1674:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rackup-2.1.0/lib/rackup/handler/webrick.rb:111:in `service'
/app/vendor/bundle/ruby/3.1.0/gems/webrick-1.8.1/lib/webrick/httpserver.rb:140:in `service'
/app/vendor/bundle/ruby/3.1.0/gems/webrick-1.8.1/lib/webrick/httpserver.rb:96:in `run'
/app/vendor/bundle/ruby/3.1.0/gems/webrick-1.8.1/lib/webrick/server.rb:310:in `block in start_thread'

Please sign in to comment.