SF.net SVN: controltier:[10353] branches/controltier-3-6-support

1 view
Skip to first unread message

mose...@users.sourceforge.net

unread,
Jul 7, 2011, 5:02:11 PM7/7/11
to controltier...@googlegroups.com
Revision: 10353
http://controltier.svn.sourceforge.net/controltier/?rev=10353&view=rev
Author: moseslei
Date: 2011-07-07 21:02:10 +0000 (Thu, 07 Jul 2011)

Log Message:
-----------
add sfextract.groovy (for parsing sourceforge tracker-- from gschueler with edits from me); update to 3.6.1 release

Modified Paths:
--------------
branches/controltier-3-6-support/version.properties

Added Paths:
-----------
branches/controltier-3-6-support/sfextract.groovy

Added: branches/controltier-3-6-support/sfextract.groovy
===================================================================
--- branches/controltier-3-6-support/sfextract.groovy (rev 0)
+++ branches/controltier-3-6-support/sfextract.groovy 2011-07-07 21:02:10 UTC (rev 10353)
@@ -0,0 +1,84 @@
+import java.net.URL;
+import groovy.text.SimpleTemplateEngine
+import groovy.text.GStringTemplateEngine
+
+
+/**
+ * parses the HTML table from a sourceforge.net tracker item list page and results
+ * in a list of maps containing the values for each tracker item.
+ * Fields are: 'id','name','status','data','assignee','submitter','priority','url'
+ * Lastly, it simply prints the id and name of each item.
+ */
+
+def scriptname=this.class.name
+
+if(!args || args.length<1){
+ println "Usage: groovy ${scriptname}.groovy url [wikitemplate]"
+ println " url: the location of the SourceForge tracker list query (you can use file: for saved local files)"
+ println " wikitemplate: the name of the wiki template for this tracker (use to generate lists to paste to MediaWiki)"
+ System.exit(1)
+}
+
+def sfurl=args[0]
+def url = new URL(sfurl);
+
+def text=url.text
+
+def m = text=~/(?is:.*<table.+?>.*?(<tr>.*<\/tr>).*?<\/table>.*)/
+
+def trs=[]
+if(m.matches()){
+def tstr=m.group(1)
+def m2=tstr=~/(?is:.*?<tr>\s*(.*)\s*<\/tr>.*?)/
+
+ tstr.eachMatch(/(?is:.*?<tr>\s*?(.*?)\s*?<\/tr>.*?)/){trm->
+ def matchtr=[]
+
+ trm[1].eachMatch(/(?is:.*?<td.+?>\s*?(.*?)\s*?<\/td>)/){tdm->
+ matchtr<<tdm[1].trim()
+ }
+ if(matchtr){
+ trs<<matchtr
+ }
+ }
+}
+
+
+//convert data to context
+def vars=['id','name','status','data','assignee','submitter','priority']
+def data=[]
+trs.each{tr->
+ def d=[:]
+ vars.eachWithIndex{var,x->
+
+ d[var]=tr[x].replaceAll(/<.+?>/,"")
+ if('name'==var){
+ //extract url
+ def murl = tr[x]=~/.*href="(.*?)".*/
+ //d['url']=tr[x]
+ if(murl.matches()){
+ def relurl = murl.group(1)
+ def nurl = new URL(url,relurl)
+ d['url']=nurl.toExternalForm()
+ }
+ }
+ if('id'==var){
+ //remove leading &nbsp; if it's there
+ d[var]=d[var].replaceAll(/&nbsp;/,"")
+ }
+ }
+ data<<d
+}
+
+
+//print id and name
+if(args.length>1 && args[1]){
+ data.each{d->
+ println "* {{${args[1]}|${d.id}}} ${d.name}"
+ }
+}
+else {
+ data.each{d->
+ println "${d.id} ${d.name}"
+ }
+}


Property changes on: branches/controltier-3-6-support/sfextract.groovy
___________________________________________________________________
Added: svn:mime-type
+ text/x-groovy
Added: svn:eol-style
+ native

Modified: branches/controltier-3-6-support/version.properties
===================================================================
--- branches/controltier-3-6-support/version.properties 2011-07-01 17:57:11 UTC (rev 10352)
+++ branches/controltier-3-6-support/version.properties 2011-07-07 21:02:10 UTC (rev 10353)
@@ -1,4 +1,4 @@
version.number=3.6.1
version.build=9605
version.ident=${version.number}.${version.build}
-version.release.number=0rc2
+version.release.number=1


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.

Reply all
Reply to author
Forward
0 new messages