Hi Erik, Thank you. Yes, that's exactly that. I am wondering whether the doc is correct or should be changed (it says the return type is `String`).
Regards, -- Florent Georges http://fgeorges.org/ http://h2oconsulting.be/ On 26 March 2016 at 16:02, Erik Hennum wrote: > Hi, Florent: > > To inspect the type of a returned object, you can call toString on the > prototype, as in: > > Object.prototype.toString.call(xdmp.filesystemFile('/path/to/some.js')); > > which yields: > > [object xs.string] > > So, an xs.string and not a JavaScript String or string literal, which you can > convert with valueOf(): > > > Object.prototype.toString.call(xdmp.filesystemFile('/path/to/some.js').valueOf()); > > which yields: > > [object String] > > > Hoping that helps, > > > Erik Hennum > > > ________________________________________ > From: general-boun...@developer.marklogic.com > [general-boun...@developer.marklogic.com] on behalf of Florent Georges > [li...@fgeorges.org] > Sent: Saturday, March 26, 2016 3:51 AM > To: MarkLogic Developer Discussion > Subject: [MarkLogic Dev General] Return of xdmp.filesystemFile() not a > proper string object? > > Hi, > > The documentation for xdmp.filesystemFile() (that is the JavaScript > version of it, at https://docs.marklogic.com/xdmp.filesystemFile) says > it returns a `String` object. But it seems to be of a different type. > > I use the NPM package `yamljs`, so you can reproduce it, but I think > the example shows clearly the difference without requiring knowledge > of the package. Given you have a file tmp.yaml (e.g. with the content > "---\n foo: bar") then the following code (with an absolute path for > the YAML file): > > var yaml = require('./node_modules/yamljs/lib/Yaml.js'); > var src = xdmp.filesystemFile('.../tmp.yaml'); > yaml.parse(src); > > gives the following error: > > JS-JAVASCRIPT: if (value.indexOf("\r") !== -1) { -- Error running > JavaScript request: TypeError: undefined is not a function > > I assume that `value`, somewhere in the package code, comes from the > parameter to yaml.parse() and is supposed to be a String object, > containing a function `indexOf`. Indeed, if I explicitly create a > String object on the return value of `xdmp.filesystemFile()`, then it > succeeds: > > var yaml = require('./node_modules/yamljs/lib/Yaml.js'); > var src = xdmp.filesystemFile('.../tmp.yaml'); > yaml.parse(new String(src)); > > The only conclusion I can reach is that the return value of > `xdmp.filesystemFile()` is not a proper String object. Did I miss > anything? > > Regards, > > -- > Florent Georges > http://fgeorges.org/ > http://h2oconsulting.be/ > _______________________________________________ > General mailing list > General@developer.marklogic.com > Manage your subscription at: > http://developer.marklogic.com/mailman/listinfo/general > _______________________________________________ > General mailing list > General@developer.marklogic.com > Manage your subscription at: > http://developer.marklogic.com/mailman/listinfo/general _______________________________________________ General mailing list General@developer.marklogic.com Manage your subscription at: http://developer.marklogic.com/mailman/listinfo/general