From 2abbcc080f8c3d5029793f3ec1eb120916a8b82e Mon Sep 17 00:00:00 2001
From: Florent Didier <florent.didier@inria.fr>
Date: Wed, 17 Jan 2018 15:03:21 +0100
Subject: [PATCH] [dev] mw_utils.rb: add method nodeset

---
 generators/wiki/mw_utils.rb | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/generators/wiki/mw_utils.rb b/generators/wiki/mw_utils.rb
index 1dd91332946..9b7520bae31 100644
--- a/generators/wiki/mw_utils.rb
+++ b/generators/wiki/mw_utils.rb
@@ -34,6 +34,29 @@ module G5K
 
   SITES = %w{grenoble lille luxembourg lyon nancy nantes rennes sophia}
 
+  # This method compacts an array of integers as follows
+  # nodeset([2,3,4,7,9,10,12]) returns the string '[2-4,7,9-10,12]'
+  def self.nodeset(a)
+    l = a.length
+    return '' if l == 0
+    a = a.compact.uniq.sort
+    a0 = a[0]
+    s = "[#{a0}"
+    i = 1
+    while i < l
+      fast_forward = (i < l and a[i] - a0 == 1)?true:false
+      (a0 = a[i] and i+=1 ) while (i < l and a[i] - a0 == 1) # fast forward
+      if fast_forward
+        s += (i != l)?"-#{a0},#{a[i]}":"-#{a0}"
+      else
+        s += ",#{a[i]}"
+      end
+      a0 = a[i]
+      i += 1
+    end
+    s += ']'
+  end
+  
 end
 
 #Defines MediaWiki helpers
-- 
GitLab