@@ -10,12 +10,14 @@ module Data.String.NonEmpty
10
10
, fromString
11
11
, unsafeFromString
12
12
, fromCharArray
13
+ , fromNonEmptyCharArray
13
14
, singleton
14
15
, cons
15
16
, snoc
16
17
, fromFoldable1
17
18
, toString
18
19
, toCharArray
20
+ , toNonEmptyCharArray
19
21
, charAt
20
22
, charCodeAt
21
23
, toChar
@@ -52,6 +54,8 @@ module Data.String.NonEmpty
52
54
53
55
import Prelude
54
56
57
+ import Data.Array.NonEmpty (NonEmptyArray )
58
+ import Data.Array.NonEmpty as NEA
55
59
import Data.Foldable (class Foldable )
56
60
import Data.Foldable as F
57
61
import Data.Maybe (Maybe (..), fromJust )
@@ -60,6 +64,7 @@ import Data.Semigroup.Foldable as F1
60
64
import Data.String (Pattern (..))
61
65
import Data.String as String
62
66
import Data.String.Unsafe as U
67
+ import Partial.Unsafe (unsafePartial )
63
68
import Unsafe.Coerce (unsafeCoerce )
64
69
65
70
-- | A string that is known not to be empty.
@@ -110,6 +115,9 @@ fromCharArray = case _ of
110
115
[] -> Nothing
111
116
cs -> Just (NonEmptyString (String .fromCharArray cs))
112
117
118
+ fromNonEmptyCharArray :: NonEmptyArray Char -> NonEmptyString
119
+ fromNonEmptyCharArray = unsafePartial fromJust <<< fromCharArray <<< NEA .toArray
120
+
113
121
-- | Creates a `NonEmptyString` from a character.
114
122
singleton :: Char -> NonEmptyString
115
123
singleton = NonEmptyString <<< String .singleton
@@ -181,6 +189,10 @@ toChar (NonEmptyString s) = String.toChar s
181
189
toCharArray :: NonEmptyString -> Array Char
182
190
toCharArray (NonEmptyString s) = String .toCharArray s
183
191
192
+ -- | Converts the `NonEmptyString` into a non-empty array of characters.
193
+ toNonEmptyCharArray :: NonEmptyString -> NonEmptyArray Char
194
+ toNonEmptyCharArray = unsafePartial fromJust <<< NEA .fromArray <<< toCharArray
195
+
184
196
-- | Appends a string to this non-empty string. Since one of the strings is
185
197
-- | non-empty we know the result will be too.
186
198
-- |
0 commit comments