constructTree
constructTree: function (flatSiteinfo) { var siteinfo = {}; for ( var k in flatSiteinfo ) { var pathes = k.split(/\./); var leaf = pathes.pop(); var hash = pathes.reduce( function(stash, name) { return (stash[name] || (stash[name] = {})); }, siteinfo); hash[leaf] = flatSiteinfo[k]; }; return siteinfo; },
よくわかんないから firebug でやってみた。
var flatSiteinfo ={ 'subrequest.subrequest.permalink' : 'http://example.com/hoge', 'subrequest.subrequest.paragraph' : '//div' } /* var flatSiteinfo ={ 'subrequest.permalink' : 'http://example.com/hoge', 'subrequest.paragraph' : '//div' } */ var siteinfo={} for ( var k in flatSiteinfo ) { var pathes = k.split(/\./); var leaf = pathes.pop(); var hash = pathes.reduce( function(stash, name) { return (stash[name] || (stash[name] = {})); }, siteinfo) hash[leaf] = flatSiteinfo[k]; } console.log(siteinfo) //console.log(siteinfo.subrequest) //console.log(siteinfo.subrequest.subrequest) //console.log(siteinfo.subrequest.permalink) //console.log(siteinfo.subrequest.paragraph)
var flatSiteinfo ={ "permalink": "concat(\"..\/ASP\/ps_nendo_slct.asp?kanku_htm=s_index03.htm&hyouteizu_id=\",substring-after(.\/@href,\"hyouteizu_id=\"),\"&year=all\")", "subRequest.permalink": ".\/\/a\/@href", "paragraph": "\/\/map\/area", "url": "http:\/\/www4.kaiho.mlit.go.jp:8082\/Air_code\/INDEX\/s_index03.htm", "subRequest.paragraph": "\/\/td[.\/\/a[not(contains(@href,\"all\"))]]", "subRequest.subRequest.permalink": ".\/@href", "subRequest.subRequest.imageSource": "concat(\"..\/..\/Photo_gallery\/Light\/\",substring-before(substring-after(.\/@href,\"&year=\"),\"&photo_id\"),\"\/\",substring-before(substring-after(.\/@href,\"photo_id=\"),\".jpg\"),\"L.jpg\")", "subRequest.subRequest.paragraph": "\/\/span[starts-with(@id, \"p\")]\/map\/area", "subRequest.subRequest.caption": "substring-before(substring-after(.\/@href,\"photo_id=\"),\".jpg\")" }; var siteinfo={}; for ( var k in flatSiteinfo ) { var pathes = k.split(/\./); var leaf = pathes.pop(); var hash = pathes.reduce( function(stash, name) { return (stash[name] || (stash[name] = {})); }, siteinfo) hash[leaf] = flatSiteinfo[k]; } console.log(siteinfo) //console.log(siteinfo.subrequest) //console.log(siteinfo.subrequest.subrequest) //console.log(siteinfo.subrequest.permalink) //console.log(siteinfo.subrequest.paragraph) //console.log(siteinfo.permalink)