MoveFormat
sashite = do
  spaces
  n <- many digit
  spaces
  toP <- toPos
  koma <- kanjiKoma
  nari <- (string "成" >> return (Just True))
      <|> (string "" >> return (Just False))
  spaces
  fromP <- optionMaybe fromPos
  endOfLine
  let
    color = if read n `mod` 2 == 1 then Black else White
    dou = if isNothing toP then Just True else Just False
  return $ MoveMoveFormat color fromP toP koma dou nari Nothing Nothing

skipLine :: Parser Str
sashite :: Parser MoveMoveFormat
sashite = do
  spaces
  n <- many digit
  spaces
  toP <- toPos
  koma <- kanjiKoma
  nari <- (string "成" >> return (Just True))
      <|> (string "" >> return (Just False))
  spaces
  fromP <- optionMaybe fromPos
  endOfLine
  let
    color = if read n `mod` 2 == 1 then Black else White
    dou = if isNothing toP then Just True else Just False
  return $ MoveMoveFormat color fromP toP koma dou nari Nothing Nothing
sashite = do
  spaces
  n <- many digit
  spaces
  toP <- toPos
  koma <- kanjiKoma
  nari <- (string "成" >> return (Just True))
      <|> (string "" >> return (Just False))
  spaces
  fromP <- optionMaybe fromPos
  endOfLine
  let
    color = if read n `mod` 2 == 1 then Black else White
    dou = if isNothing toP then Just True else Just False
  return $ MoveMoveFormat color fromP toP koma dou nari Nothing Nothing