LimitToFilter class
Creates a new List or String containing only a prefix/suffix of the
elements as specified by the limit parameter.
When operating on a List, the returned list is always a copy even when all the elements are being returned.
When the limit expression evaluates to a positive integer, limit items
from the beginning of the List/String are returned. When limit evaluates
to a negative integer, |limit| items from the end of the List/String are
returned. If |limit| is larger than the size of the List/String, then the
entire List/String is returned. In the case of a List, a copy of the list is
returned.
If the limit expression evaluates to a null or non-integer, then an empty
list is returned. If the input is a null List/String, a null is returned.
Example:
{{ 'abcdefghij' | limitTo: 4 }}→'abcd'{{ 'abcdefghij' | limitTo: -4 }}→'ghij'{{ 'abcdefghij' | limitTo: -100 }}→'abcdefghij'
This ng-repeat directive:
<li ng-repeat="i in 'abcdefghij' | limitTo:-2">{{i}}</li>
results in
<li>i</li>
<li>j</li>
@NgFilter(name:'limitTo')
class LimitToFilter {
Injector _injector;
Parser _parser;
LimitToFilter(Injector this._injector, Parser this._parser);
dynamic call(dynamic items, [int limit]) {
if (items == null) {
return null;
}
if (limit == null) {
return const[];
}
if (items is! List && items is! String) {
return items;
}
int i = 0, j = items.length;
if (limit > -1) {
j = (limit > j) ? j : limit;
} else {
i = j + limit;
if (i < 0) {
i = 0;
}
}
if (items is String) {
return (items as String).substring(i, j);
} else {
return (items as List).getRange(i, j).toList(growable: false);
}
}
}
Methods
dynamic call(items, [int limit]) #
dynamic call(dynamic items, [int limit]) {
if (items == null) {
return null;
}
if (limit == null) {
return const[];
}
if (items is! List && items is! String) {
return items;
}
int i = 0, j = items.length;
if (limit > -1) {
j = (limit > j) ? j : limit;
} else {
i = j + limit;
if (i < 0) {
i = 0;
}
}
if (items is String) {
return (items as String).substring(i, j);
} else {
return (items as List).getRange(i, j).toList(growable: false);
}
}