more string instructions
This commit is contained in:
parent
35f8a20a91
commit
78efab9064
@ -39,33 +39,43 @@ instructionStringFromNthChar state = state
|
|||||||
-- instructionStringContainsString :: State -> State
|
-- instructionStringContainsString :: State -> State
|
||||||
-- instructionStringContainsString state@(State )
|
-- instructionStringContainsString state@(State )
|
||||||
|
|
||||||
-- Haskell is kinda really cool. This can totally be
|
|
||||||
-- abstracted
|
|
||||||
findSubString :: String -> String -> Int
|
|
||||||
findSubString fullString subString
|
|
||||||
| length fullString < length subString = -1
|
|
||||||
| length fullString == length subString = if fullString == subString then 0 else -1
|
|
||||||
| otherwise = findSubString' fullString subString 0
|
|
||||||
where
|
|
||||||
findSubString' :: String -> String -> Int -> Int
|
|
||||||
findSubString' fStr sStr index
|
|
||||||
| null fStr = -1
|
|
||||||
| length sStr > length fStr = -1
|
|
||||||
| sStr == take (length sStr) fStr = index
|
|
||||||
| otherwise = findSubString' (drop 1 fStr) sStr (index + 1)
|
|
||||||
|
|
||||||
instructionStringIndexOfString :: State -> State
|
instructionStringIndexOfString :: State -> State
|
||||||
instructionStringIndexOfString state@(State {_string = s1 : s2 : ss, _int = is}) = state {_string = ss, _int = findSubString s1 s2 : is}
|
instructionStringIndexOfString state@(State {_string = s1 : s2 : ss, _int = is}) = state {_string = ss, _int = findSubA s1 s2 : is}
|
||||||
instructionStringIndexOfString state = state
|
instructionStringIndexOfString state = state
|
||||||
|
|
||||||
instructionStringContainsString :: State -> State
|
instructionStringContainsString :: State -> State
|
||||||
instructionStringContainsString state@(State {_string = s1 : s2 : ss, _bool = bs}) = state {_string = ss, _bool = (findSubString s1 s2 /= -1) : bs}
|
instructionStringContainsString state@(State {_string = s1 : s2 : ss, _bool = bs}) = state {_string = ss, _bool = (findSubA s1 s2 /= -1) : bs}
|
||||||
instructionStringContainsString state = state
|
instructionStringContainsString state = state
|
||||||
|
|
||||||
|
-- pysh reverses this. Check this for propeller
|
||||||
instructionStringSplitOnString :: State -> State
|
instructionStringSplitOnString :: State -> State
|
||||||
instructionStringSplitOnString state@(State {_string = s1 : s2 : ss}) = state {_string = splitOn s2 s1 <> ss}
|
instructionStringSplitOnString state@(State {_string = s1 : s2 : ss}) = state {_string = reverse $ splitOn s2 s1 <> ss}
|
||||||
instructionStringSplitOnString state = state
|
instructionStringSplitOnString state = state
|
||||||
|
|
||||||
instructionStringReplaceFirstString :: State -> State
|
instructionStringReplaceFirstString :: State -> State
|
||||||
instructionStringReplaceFirstString state@(State {_string = s1 : s2 : s3 : ss}) = undefined -- TODO
|
instructionStringReplaceFirstString state@(State {_string = s1 : s2 : s3 : ss}) = state {_string = replace s1 s2 s3 (Just 1) : ss}
|
||||||
instructionStringReplaceFirstString state = state
|
instructionStringReplaceFirstString state = state
|
||||||
|
|
||||||
|
instructionStringReplaceNString :: State -> State
|
||||||
|
instructionStringReplaceNString state@(State {_string = s1 : s2 : s3 : ss, _int = i1 : is}) = state{_string = replace s1 s2 s3 (Just i1) : ss, _int = is}
|
||||||
|
instructionStringReplaceNString state = state
|
||||||
|
|
||||||
|
instructionStringReplaceAllString :: State -> State
|
||||||
|
instructionStringReplaceAllString state@(State {_string = s1 : s2 : s3 : ss}) = state{_string = replace s1 s2 s3 Nothing : ss}
|
||||||
|
instructionStringReplaceAllString state = state
|
||||||
|
|
||||||
|
instructionStringRemoveFirstString :: State -> State
|
||||||
|
instructionStringRemoveFirstString state@(State {_string = s1 : s2 : ss}) = state{_string = replace s1 s2 "" (Just 1) : ss}
|
||||||
|
instructionStringRemoveFirstString state = state
|
||||||
|
|
||||||
|
instructionStringRemoveNString :: State -> State
|
||||||
|
instructionStringRemoveNString state@(State {_string = s1 : s2 : ss, _int = i1 : is}) = state{_string = replace s1 s2 "" (Just i1) : ss, _int = is}
|
||||||
|
instructionStringRemoveNString state = state
|
||||||
|
|
||||||
|
instructionStringRemoveAllString :: State -> State
|
||||||
|
instructionStringRemoveAllString state@(State {_string = s1 : s2 : ss}) = state{_string = replace s1 s2 "" Nothing : ss}
|
||||||
|
instructionStringRemoveAllString state = state
|
||||||
|
|
||||||
|
instructionStringOccurrencesOfString :: State -> State
|
||||||
|
instructionStringOccurrencesOfString state@(State {_string = s1 : s2 : ss, _int = is}) = state{_string = ss, _int = amtOccurences s1 s2 : is}
|
||||||
|
instructionStringOccurrencesOfString state = state
|
||||||
|
Loading…
x
Reference in New Issue
Block a user