sassIndexToStringIndex method
Converts sassIndex into a Dart-style index into text.
Sass indexes are one-based, while Dart indexes are zero-based. Sass indexes may also be negative in order to index from the end of the string.
In addition, Sass indices refer to Unicode code points while Dart string
indices refer to UTF-16 code units. For example, the character U+1F60A,
Smiling Face With Smiling Eyes, is a single Unicode code point but is
represented in UTF-16 as two code units (0xD83D and 0xDE0A). So in
Dart, "a😊b".codeUnitAt(1) returns 0xD83D, whereas in Sass
str-slice("a😊b", 1, 1) returns "😊".
This function converts Sass's code point indexes to Dart's code unit
indexes. This means it's O(n) in the length of text. See also
sassIndexToRuneIndex, which is O(1) and returns an index into the
string's code points (accessible via text.runes).
Throws a SassScriptException if sassIndex isn't a number, if that
number isn't an integer, or if that integer isn't a valid index for this
string. If sassIndex came from a function argument, name is the
argument name (without the $). It's used for error reporting.
Implementation
int sassIndexToStringIndex(Value sassIndex, [String? name]) =>
codepointIndexToCodeUnitIndex(
text,
sassIndexToRuneIndex(sassIndex, name),
);