[rkward-cvs] SF.net SVN: rkward:[4204] trunk/rkward/packages/XiMpLe
m-eik at users.sourceforge.net
m-eik at users.sourceforge.net
Tue Apr 17 22:22:15 UTC 2012
Revision: 4204
http://rkward.svn.sourceforge.net/rkward/?rev=4204&view=rev
Author: m-eik
Date: 2012-04-17 22:22:14 +0000 (Tue, 17 Apr 2012)
Log Message:
-----------
improved parsing and pasting for comments and CDATA stuff, and handling of newlines and indentation
Modified Paths:
--------------
trunk/rkward/packages/XiMpLe/ChangeLog
trunk/rkward/packages/XiMpLe/DESCRIPTION
trunk/rkward/packages/XiMpLe/R/XiMpLe-internal.R
trunk/rkward/packages/XiMpLe/R/XiMpLe-package.R
trunk/rkward/packages/XiMpLe/R/XiMpLe.node-class.R
trunk/rkward/packages/XiMpLe/R/parseXMLTree.R
trunk/rkward/packages/XiMpLe/R/pasteXMLTag.R
trunk/rkward/packages/XiMpLe/debian/changelog
trunk/rkward/packages/XiMpLe/debian/control
trunk/rkward/packages/XiMpLe/debian/copyright
trunk/rkward/packages/XiMpLe/debian/rules
trunk/rkward/packages/XiMpLe/inst/CITATION
trunk/rkward/packages/XiMpLe/inst/NEWS.Rd
trunk/rkward/packages/XiMpLe/man/XiMpLe-package.Rd
Added Paths:
-----------
trunk/rkward/packages/XiMpLe/debian/changelog.rkward
Modified: trunk/rkward/packages/XiMpLe/ChangeLog
===================================================================
--- trunk/rkward/packages/XiMpLe/ChangeLog 2012-04-17 15:17:20 UTC (rev 4203)
+++ trunk/rkward/packages/XiMpLe/ChangeLog 2012-04-17 22:22:14 UTC (rev 4204)
@@ -1,10 +1,17 @@
ChangeLog for package XiMpLe
-changes in version 0.03-13 (2012-04-15)
+changes in version 0.03-13 (2012-04-17)
added:
- added a LICENSE file
- debianized the sources
-
+changed:
+ - parseXMLTree() now takes connections as "file" parameter
+ - commented CDATA tags (like they're used in XHTML) can now be detected and pasted
+ - pasteXMLTag() adjusts indentation level of value tags and comments
+fixed:
+ - feeding internet addresses to parseXMLTree() no longer throws an error, skipping normalize.path() then now
+ - parseXMLTree() now preserves newlines in value tags and comments
+
changes in version 0.03-12 (2012-03-18)
- node() now also works with single XiMpLe.node objects (not only full trees)
- added pasteXML methods to paste objects of classes XiMpLe.node and XiMpLe.doc in a more
Modified: trunk/rkward/packages/XiMpLe/DESCRIPTION
===================================================================
--- trunk/rkward/packages/XiMpLe/DESCRIPTION 2012-04-17 15:17:20 UTC (rev 4203)
+++ trunk/rkward/packages/XiMpLe/DESCRIPTION 2012-04-17 22:22:14 UTC (rev 4204)
@@ -17,8 +17,8 @@
URL: http://reaktanz.de/?c=hacking&s=XiMpLe
Authors at R: c(person(given="Meik", family="Michalke",
email="meik.michalke at hhu.de", role=c("aut", "cre")))
-Version: 0.03-12
-Date: 2012-03-18
+Version: 0.03-13
+Date: 2012-04-18
Collate:
'XiMpLe-internal.R'
'XiMpLe.node-class.R'
Modified: trunk/rkward/packages/XiMpLe/R/XiMpLe-internal.R
===================================================================
--- trunk/rkward/packages/XiMpLe/R/XiMpLe-internal.R 2012-04-17 15:17:20 UTC (rev 4203)
+++ trunk/rkward/packages/XiMpLe/R/XiMpLe-internal.R 2012-04-17 22:22:14 UTC (rev 4204)
@@ -76,16 +76,19 @@
## the main splitting process
# CDATA or comments can contain stuff which might ruin the outcome. we'll deal with those parts first.
- tree <- split.chars(txt=tree, pattern="<!\\[CDATA\\[(.*?)\\]\\]>|<!--(.*?)-->", perl=TRUE)
+ tree <- split.chars(txt=tree, pattern="<!\\[CDATA\\[((?s).*?)\\]\\]>|/\\*[[:space:]]*<!\\[CDATA\\[[[:space:]]*\\*/((?s).*?)/\\*[[:space:]]*\\]\\]>[[:space:]]*\\*/|<!--((?s).*?)-->", perl=TRUE)
# now do the splitting
- single.tags <- unlist(sapply(tree, function(this.tree){
+ single.tags <- as.character(unlist(sapply(tree, function(this.tree){
# exclude the already cut our comments an CDATA entries
- if(XML.comment(this.tree) | XML.cdata(this.tree)){
+ if(XML.comment(this.tree) | XML.cdata(this.tree) | XML.commcdata(this.tree)){
return(this.tree)
} else {
- return(split.chars(txt=this.tree, "<(.*?)>"))
+ these.tags <- split.chars(txt=this.tree, "<((?s).*?)>", perl=TRUE)
+ # remove probably troublesome content like newlines
+ these.tags[!XML.value(these.tags)] <- gsub("[[:space:]]+", " ", these.tags[!XML.value(these.tags)])
+ return(these.tags)
}
- }))
+ })))
colnames(single.tags) <- NULL
if("comments" %in% drop){
single.tags <- single.tags[!XML.comment(single.tags)]
@@ -103,12 +106,30 @@
} ## end function XML.single.tags()
+## function setMinIndent()
+# takes a string, determines the minimum number of grouped \t strings,
+# and adjusts it globally to the given level
+setMinIndent <- function(tag, level=1, indent.by="\t"){
+ currentMinIndent <- min(nchar(unlist(strsplit(tag, "[^\t]+"))))
+ indentDiff <- currentMinIndent - level
+ # if currentMinIndent is greater than level, reduce indentation
+ if(indentDiff > 0){
+ tag <- gsub(paste("(^|[^\t]+)(\t){", indentDiff, "}", sep=""), "\\1", tag, perl=TRUE)
+ } else if(indentDiff < 0){
+ tag <- gsub("(^|[^\t]+)(\t)", paste("\\1", indent(level + 1, by=indent.by), sep=""), tag, perl=TRUE)
+ } else {}
+
+ return(tag)
+} ## end function setMinIndent()
+
+
## function indent()
# will create tabs to format the output
indent <- function(level, by="\t"){
paste(rep(by, level-1), collapse="")
} ## end function indent()
+
## function xml.tidy()
# replace special character < and > from attributes or text values
# with harmless entities
@@ -121,6 +142,7 @@
return(tidy.text)
} ## function xml.tidy()
+
## function lookupAttrName()
# takes the original input element names and returns
# the according XML attribute name
@@ -257,9 +279,9 @@
# checks if a tag is a comment, returns TRUE or FALSE, or the comment (TRUE & get=TRUE)
XML.comment <- function(tag, get=FALSE, trim=TRUE){
comment.tags <- sapply(tag, function(this.tag){
- comment <- grepl("<!--(.*)-->", this.tag)
+ comment <- grepl("<!--((?s).*)-->", this.tag, perl=TRUE)
if(isTRUE(get)){
- result <- ifelse(isTRUE(comment), gsub("<!--(.*)-->", "\\1", this.tag, perl=TRUE), "")
+ result <- ifelse(isTRUE(comment), gsub("<!--((?s).*)-->", "\\1", this.tag, perl=TRUE), "")
if(isTRUE(trim)){result <- trim(result)} else {}
} else {
result <- comment
@@ -274,9 +296,9 @@
# checks if a tag is a CDATA declaration, returns TRUE or FALSE, or the data (TRUE & get=TRUE)
XML.cdata <- function(tag, get=FALSE, trim=TRUE){
cdata.tags <- sapply(tag, function(this.tag){
- cdata <- grepl("<!\\[CDATA\\[(.*)\\]\\]>", this.tag)
+ cdata <- grepl("<!\\[CDATA\\[((?s).*)\\]\\]>", this.tag, perl=TRUE)
if(isTRUE(get)){
- result <- ifelse(isTRUE(cdata), gsub("<!\\[CDATA\\[(.*)\\]\\]>", "\\1", this.tag, perl=TRUE), "")
+ result <- ifelse(isTRUE(cdata), gsub("<!\\[CDATA\\[((?s).*)\\]\\]>", "\\1", this.tag, perl=TRUE), "")
if(isTRUE(trim)){result <- trim(result)} else {}
} else {
result <- cdata
@@ -287,6 +309,23 @@
return(cdata.tags)
} ## end function XML.cdata()
+## function XML.commcdata()
+# checks if a tag is a /* CDATA */ declaration, returns TRUE or FALSE, or the data (TRUE & get=TRUE)
+XML.commcdata <- function(tag, get=FALSE, trim=TRUE){
+ commcdata.tags <- sapply(tag, function(this.tag){
+ commcdata <- grepl("/\\*[[:space:]]*<!\\[CDATA\\[[[:space:]]*\\*/((?s).*?)/\\*[[:space:]]*\\]\\]>[[:space:]]*\\*/", this.tag, perl=TRUE)
+ if(isTRUE(get)){
+ result <- ifelse(isTRUE(commcdata), gsub("/\\*[[:space:]]*<!\\[CDATA\\[[[:space:]]*\\*/((?s).*?)/\\*[[:space:]]*\\]\\]>[[:space:]]*\\*/", "\\1", this.tag, perl=TRUE), "")
+ if(isTRUE(trim)){result <- trim(result)} else {}
+ } else {
+ result <- commcdata
+ }
+ return(result)
+ })
+ names(commcdata.tags) <- NULL
+ return(commcdata.tags)
+} ## end function XML.commcdata()
+
## function XML.value()
# checks if 'tag' is actually not a tag but value/content/data. returns TRUE or FALSE, or the value (TRUE & get=TRUE)
XML.value <- function(tag, get=FALSE, trim=TRUE){
@@ -394,6 +433,15 @@
# cat(this.tag, ": break (",tag.no,")\n")
break
} else {}
+ # we must test for commented CDATA first, because XML.value() would be TRUE, too
+ if(XML.commcdata(this.tag)){
+ children[nxt.child] <- new("XiMpLe.node",
+ name="*![CDATA[",
+ value=XML.commcdata(this.tag, get=TRUE))
+ names(children)[nxt.child] <- "*![CDATA["
+ tag.no <- tag.no + 1
+ next
+ } else {}
if(XML.value(this.tag)){
children[nxt.child] <- new("XiMpLe.node",
name="",
Modified: trunk/rkward/packages/XiMpLe/R/XiMpLe-package.R
===================================================================
--- trunk/rkward/packages/XiMpLe/R/XiMpLe-package.R 2012-04-17 15:17:20 UTC (rev 4203)
+++ trunk/rkward/packages/XiMpLe/R/XiMpLe-package.R 2012-04-17 22:22:14 UTC (rev 4204)
@@ -3,8 +3,8 @@
#' \tabular{ll}{
#' Package: \tab XiMpLe\cr
#' Type: \tab Package\cr
-#' Version: \tab 0.03-12\cr
-#' Date: \tab 2012-03-18\cr
+#' Version: \tab 0.03-13\cr
+#' Date: \tab 2012-04-18\cr
#' Depends: \tab R (>= 2.9.0),methods\cr
#' Enhances: \tab rkward\cr
#' Encoding: \tab UTF-8\cr
Modified: trunk/rkward/packages/XiMpLe/R/XiMpLe.node-class.R
===================================================================
--- trunk/rkward/packages/XiMpLe/R/XiMpLe.node-class.R 2012-04-17 15:17:20 UTC (rev 4203)
+++ trunk/rkward/packages/XiMpLe/R/XiMpLe.node-class.R 2012-04-17 22:22:14 UTC (rev 4204)
@@ -9,6 +9,8 @@
# \code{\link[XiMpLe:pasteXMLNode]{pasteXMLNode}} will paste its \code{value} as plain text.}
# \item{\code{name="!--"}}{Creates a comment tag, i.e., this will comment out all its \code{children}.}
# \item{\code{name="![CDATA["}}{Creates a CDATA section and places all its \code{children} in it.}
+# \item{\code{name="*![CDATA["}}{Creates a CDATA section and places all its \code{children} in it, where the CDATA markers are
+# commented out by \code{/* */}, as is used for JavaScript in XHTML.}
# }
#
# @title S4 class XiMpLe.node
Modified: trunk/rkward/packages/XiMpLe/R/parseXMLTree.R
===================================================================
--- trunk/rkward/packages/XiMpLe/R/parseXMLTree.R 2012-04-17 15:17:20 UTC (rev 4203)
+++ trunk/rkward/packages/XiMpLe/R/parseXMLTree.R 2012-04-17 22:22:14 UTC (rev 4204)
@@ -20,11 +20,20 @@
parseXMLTree <- function(file, drop=NULL, object=FALSE){
if(isTRUE(object)){
- xml.raw <- paste(file, collapse=" ")
+ xml.raw <- paste(file, collapse="\n")
filePath <- "object"
+ } else if(inherits(file, "connection")){
+ xml.raw <- paste(readLines(file), collapse="\n")
+ # is there a way to get the friggin' "description" out of a connection object?!
+ filePath <- "connection"
} else {
- xml.raw <- paste(readLines(file), collapse=" ")
- filePath <- normalizePath(file)
+ xml.raw <- paste(readLines(file), collapse="\n")
+ # try to detect if 'file' is like a weblink, not a regular file
+ if(grepl("^[[:alpha:]]+://", file, ignore.case=TRUE)){
+ filePath <- file
+ } else {
+ filePath <- normalizePath(file)
+ }
}
single.tags <- XML.single.tags(xml.raw, drop=drop)
Modified: trunk/rkward/packages/XiMpLe/R/pasteXMLTag.R
===================================================================
--- trunk/rkward/packages/XiMpLe/R/pasteXMLTag.R 2012-04-17 15:17:20 UTC (rev 4203)
+++ trunk/rkward/packages/XiMpLe/R/pasteXMLTag.R 2012-04-17 22:22:14 UTC (rev 4204)
@@ -37,50 +37,66 @@
new.attr <- ifelse(shine > 1, "\n", "")
new.attr.indent <- ifelse(shine > 1, indent(level, by=indent.by), "")
attr.space <- ifelse(nchar(all.attributes) > 0, " ", "")
+ new.cmmt <- ifelse(shine > 0, "\n", " ")
new.cmmt.indent <- ifelse(shine > 1, indent(level + 1, by=indent.by), "")
comment.indent <- ifelse(shine > 0, indent(level + 1, by=indent.by), "")
# three special cases: value pseudotags, comments and CDATA
if(isTRUE(nchar(tag) == 0) | length(tag) == 0){
full.tag <- paste(child, " ", sep="")
- } else if(identical(tag, "!--")){
- # clean up value if needed
- if(!is.null(child)){
- child <- trim(child)
- if(isTRUE(tidy)){
- child <- gsub("\n", paste("\n", comment.indent, sep=""), child)
+ } else {
+ switch(tag,
+ "!--"={
+ # clean up value if needed
+ if(!is.null(child)){
+ child <- trim(child)
+ if(isTRUE(tidy)){
+ child <- gsub("\n", new.cmmt, setMinIndent(child, level=level + 1, indent.by=indent.by))
+ }
+ } else {}
+ full.tag <- paste(new.indent, "<!-- ", new.attr, new.cmmt.indent,
+ child, " ", new.attr, new.attr.indent,
+ "-->", new.node, sep="")},
+ "![CDATA["={
+ # clean up value if needed
+ if(!is.null(child)){
+ child <- trim(child)
+ if(isTRUE(tidy)){
+ child <- gsub("\n", new.cmmt, setMinIndent(child, level=level + 1, indent.by=indent.by))
+ }
+ } else {}
+ full.tag <- paste(new.indent, "<![CDATA[ ", new.cmmt, comment.indent,
+ child, " ", new.cmmt, new.indent,
+ "]]>", new.node, sep="")},
+ "*![CDATA["={
+ # clean up value if needed
+ if(!is.null(child)){
+ child <- trim(child)
+ if(isTRUE(tidy)){
+ child <- gsub("\n", new.cmmt, setMinIndent(child, level=level + 1, indent.by=indent.by))
+ }
+ } else {}
+ #
+ full.tag <- paste(new.indent, "/* <![CDATA[ */ ", new.cmmt, comment.indent,
+ child, " ", new.cmmt, new.indent,
+ "/* ]]> */", new.node, sep="")},
+ # last but not least, the default value
+ {
+ # only put attributes in new lines if there's more than one
+ new.attr <- ifelse((length(attr) > 1), new.attr, "")
+ new.attr.indent <- ifelse((length(attr) > 1), new.attr.indent, "")
+ new.cmmt.indent <- ifelse((length(attr) > 1), new.cmmt.indent, "")
+ val.indent <- ifelse(shine > 0, indent(level + 1, by=indent.by), "")
+ # empty decides whether this is a empty tag or a pair of start and end tags
+ if(isTRUE(empty)){
+ full.tag <- paste(new.indent, "<", tag, attr.space, new.attr, new.cmmt.indent, all.attributes, new.attr, new.attr.indent, " />", new.node, sep="")
+ } else {
+ full.tag <- paste(
+ new.indent, "<", tag, attr.space, new.attr, new.cmmt.indent, all.attributes, new.attr, new.attr.indent, ">", new.node,
+ if(!is.null(child)){paste(val.indent, trim(child), new.node, sep="")},
+ new.indent, "</", tag, ">", new.node, sep="")
}
- } else {}
- full.tag <- paste(new.indent, "<!-- ", new.attr, new.cmmt.indent,
- child, " ", new.attr, new.attr.indent,
- "-->", new.node, sep="")
- } else if(identical(tag, "![CDATA[")){
- # clean up value if needed
- if(!is.null(child)){
- child <- trim(child)
- if(isTRUE(tidy)){
- child <- gsub("\n", paste("\n", comment.indent, sep=""), child)
- }
- } else {}
- full.tag <- paste(new.indent, "<![CDATA[ ", new.attr, new.cmmt.indent,
- child, " ", new.attr, new.attr.indent,
- "]]>", new.node, sep="")
- } else {
- # only put attributes in new lines if there's more than one
- new.attr <- ifelse((length(attr) > 1), new.attr, "")
- new.attr.indent <- ifelse((length(attr) > 1), new.attr.indent, "")
- new.cmmt.indent <- ifelse((length(attr) > 1), new.cmmt.indent, "")
- val.indent <- ifelse(shine > 0, indent(level + 1, by=indent.by), "")
- # empty decides whether this is a empty tag or a pair of start and end tags
- if(isTRUE(empty)){
- full.tag <- paste(new.indent, "<", tag, attr.space, new.attr, new.cmmt.indent, all.attributes, new.attr, new.attr.indent, " />", new.node, sep="")
- } else {
- full.tag <- paste(
- new.indent, "<", tag, attr.space, new.attr, new.cmmt.indent, all.attributes, new.attr, new.attr.indent, ">", new.node,
- if(!is.null(child)){paste(val.indent, trim(child), new.node, sep="")},
- new.indent, "</", tag, ">", new.node, sep="")
- }
+ })
}
-
return(full.tag)
}
Modified: trunk/rkward/packages/XiMpLe/debian/changelog
===================================================================
--- trunk/rkward/packages/XiMpLe/debian/changelog 2012-04-17 15:17:20 UTC (rev 4203)
+++ trunk/rkward/packages/XiMpLe/debian/changelog 2012-04-17 22:22:14 UTC (rev 4204)
@@ -1,3 +1,9 @@
+r-other-reaktanz-ximple (0.03-13-1) unstable; urgency=low
+
+ * initial debian package
+
+ -- m.eik michalke <meik.michalke at hhu.de> Tue, 17 Apr 2012 22:22:33 +0000
+
r-other-reaktanz-ximple (0.03-12-1) unstable; urgency=low
* initial debian package
Added: trunk/rkward/packages/XiMpLe/debian/changelog.rkward
===================================================================
--- trunk/rkward/packages/XiMpLe/debian/changelog.rkward (rev 0)
+++ trunk/rkward/packages/XiMpLe/debian/changelog.rkward 2012-04-17 22:22:14 UTC (rev 4204)
@@ -0,0 +1,6 @@
+r-other-rkward-ximple (0.03-13-1) unstable; urgency=low
+
+ * new upstream release
+
+ -- m.eik michalke <meik.michalke at hhu.de> Wed, 18 Apr 2012 00:15:13 +0000
+
Modified: trunk/rkward/packages/XiMpLe/debian/control
===================================================================
--- trunk/rkward/packages/XiMpLe/debian/control 2012-04-17 15:17:20 UTC (rev 4203)
+++ trunk/rkward/packages/XiMpLe/debian/control 2012-04-17 22:22:14 UTC (rev 4204)
@@ -1,12 +1,12 @@
-Source: r-other-reaktanz-ximple
+Source: r-other-rkward-ximple
Section: math
Priority: optional
Maintainer: m.eik michalke <meik.michalke at hhu.de>
-Build-Depends-Indep: debhelper (>> 4.1.0), r-base-dev (>= 2.15.0), cdbs
+Build-Depends-Indep: debhelper (>> 4.1.0), r-base-dev (>= 2.9.0), cdbs
Standards-Version: 3.9.3.1
Homepage: http://reaktanz.de/?c=hacking&s=XiMpLe
-Package: r-other-reaktanz-ximple
+Package: r-other-rkward-ximple
Architecture: all
Section: math
Depends: r-base (>= 2.15.0)
Modified: trunk/rkward/packages/XiMpLe/debian/copyright
===================================================================
--- trunk/rkward/packages/XiMpLe/debian/copyright 2012-04-17 15:17:20 UTC (rev 4203)
+++ trunk/rkward/packages/XiMpLe/debian/copyright 2012-04-17 22:22:14 UTC (rev 4204)
@@ -3,7 +3,7 @@
This Debian package was put together m.eik michalke <meik.michalke at hhu.de>.
The package was renamed from its upstream name 'XiMpLe' to
-'r-other-reaktanz-ximple' in harmony with the R packaging policy to indicate
+'r-other-rkward-ximple' in harmony with the R packaging policy to indicate
that the package is external to the CRAN or BioC repositories.
XiMpLe Copyright (C) 2012 Meik Michalke, released under the
Modified: trunk/rkward/packages/XiMpLe/debian/rules
===================================================================
--- trunk/rkward/packages/XiMpLe/debian/rules 2012-04-17 15:17:20 UTC (rev 4203)
+++ trunk/rkward/packages/XiMpLe/debian/rules 2012-04-17 22:22:14 UTC (rev 4204)
@@ -1,9 +1,9 @@
#!/usr/bin/make -f
# -*- makefile -*-
-# debian/rules file for the Debian/GNU Linux r-other-reaktanz-ximple package
+# debian/rules file for the Debian/GNU Linux r-other-rkward-ximple package
# Copyright 2012 by m.eik michalke <meik.michalke at hhu.de>
-debRreposname := other-reaktanz
+debRreposname := other-rkward
include /usr/share/R/debian/r-cran.mk
Modified: trunk/rkward/packages/XiMpLe/inst/CITATION
===================================================================
--- trunk/rkward/packages/XiMpLe/inst/CITATION 2012-04-17 15:17:20 UTC (rev 4203)
+++ trunk/rkward/packages/XiMpLe/inst/CITATION 2012-04-17 22:22:14 UTC (rev 4204)
@@ -2,12 +2,12 @@
title="XiMpLe: A simple XML tree parser and generator",
author="Meik Michalke",
year="2012",
- note="(Version 0.03-12)",
+ note="(Version 0.03-13)",
url="http://reaktanz.de/?c=hacking&s=XiMpLe",
textVersion =
paste("Michalke, M. (2012). ",
- "XiMpLe: A simple XML tree parser and generator (Version 0.03-12). ",
+ "XiMpLe: A simple XML tree parser and generator (Version 0.03-13). ",
"Available from http://reaktanz.de/?c=hacking&s=XiMpLe",
sep=""),
Modified: trunk/rkward/packages/XiMpLe/inst/NEWS.Rd
===================================================================
--- trunk/rkward/packages/XiMpLe/inst/NEWS.Rd 2012-04-17 15:17:20 UTC (rev 4203)
+++ trunk/rkward/packages/XiMpLe/inst/NEWS.Rd 2012-04-17 22:22:14 UTC (rev 4204)
@@ -1,6 +1,27 @@
\name{NEWS}
\title{News for Package 'XiMpLe'}
\encoding{UTF-8}
+\section{Changes in XiMpLe version 0.03-13 (2012-04-17)}{
+ \subsection{added}{
+ \itemize{
+ \item added a LICENSE file
+ \item debianized the sources
+ }
+ }
+ \subsection{changed}{
+ \itemize{
+ \item \code{parseXMLTree()} now takes connections as \code{"file"} parameter
+ \item commented CDATA tags (like they're used in XHTML) can now be detected and pasted
+ \item \code{pasteXMLTag()} adjusts indentation level of value tags and comments
+ }
+ }
+ \subsection{fixed}{
+ \itemize{
+ \item feeding internet addresses to \code{parseXMLTree()} no longer throws an error, skipping \code{normalize.path()} then now
+ \item \code{parseXMLTree()} now preserves newlines in value tags and comments
+ }
+ }
+}
\section{Changes in XiMpLe version 0.03-12 (2012-03-18)}{
\itemize{
\item \code{node()} now also works with single XiMpLe.node objects (not only full trees)
Modified: trunk/rkward/packages/XiMpLe/man/XiMpLe-package.Rd
===================================================================
--- trunk/rkward/packages/XiMpLe/man/XiMpLe-package.Rd 2012-04-17 15:17:20 UTC (rev 4203)
+++ trunk/rkward/packages/XiMpLe/man/XiMpLe-package.Rd 2012-04-17 22:22:14 UTC (rev 4204)
@@ -8,8 +8,8 @@
}
\details{
\tabular{ll}{ Package: \tab XiMpLe\cr Type: \tab
- Package\cr Version: \tab 0.03-12\cr Date: \tab
- 2012-03-18\cr Depends: \tab R (>= 2.9.0),methods\cr
+ Package\cr Version: \tab 0.03-13\cr Date: \tab
+ 2012-04-18\cr Depends: \tab R (>= 2.9.0),methods\cr
Enhances: \tab rkward\cr Encoding: \tab UTF-8\cr License:
\tab GPL (>= 3)\cr LazyLoad: \tab yes\cr URL: \tab
http://reaktanz.de/?c=hacking&s=XiMpLe\cr }
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the rkward-tracker
mailing list