Invercargill.vala 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. namespace Invercargill {
  2. public static Enumerable<int> range(int from, int to, int increment = 1) {
  3. return new RangeEnumerable(from, to, increment);
  4. }
  5. public static Enumerable<T> empty<T>() {
  6. return new EmptyEnumerable<T>();
  7. }
  8. public static Enumerable<T> single<T>(T item) {
  9. var seq = new Invercargill.Series<T>();
  10. seq.add(item);
  11. return seq;
  12. }
  13. public static TransformDelegate<Tin, Tout> trycatch<Tin, Tout>(ErrorThrowingDelegate<Tin, Tout> main, ErrorCatchingDelegate<Tin, Tout> handler) {
  14. return (i) => {
  15. try {
  16. return main(i);
  17. }
  18. catch(Error e) {
  19. return handler(i, e);
  20. }
  21. };
  22. }
  23. public static TransformDelegate<Tin, Tout> trydefault<Tin, Tout>(ErrorThrowingDelegate<Tin, Tout> func, Tout default_value) {
  24. return (i) => {
  25. try {
  26. return func(i);
  27. }
  28. catch {
  29. return default_value;
  30. }
  31. };
  32. }
  33. public static Enumerable<string> directory(string path, uint flags = 0) throws FileError {
  34. return new DirEnumerable(Dir.open(path, flags));
  35. }
  36. }