input.xreate
No OneTemporary

File Metadata

Created
Thu, Jul 9, 12:42 AM

input.xreate

/* local scope doc ptr */
XmlNode = type alias {
tag:: string,
/* attrs:: [string],*/
content:: string
}.
interface(extern-c){
xml2 = library:: pkgconfig("libxml-2.0").
include {
xml2 = ["libxml/tree.h", "string.h"]
}.
}
Tree = type Tree(Leaf) [Leaf, [Tree(Leaf)]].
XmlTree = type alias Tree(XmlNode).
Alias = type alias [String, String].
AliasList = type alias [Alias].
classesAliasQuery = function(node:: xmlNodePtr):: Alias
{
classesPara = ["pgess1", "pgess2"] :: [String].
result =
case default {none}
case node[tag] == "style", class in classesPara,
classAlias = node[attrs, "name"],
class=node[attrs, "parent-style-name"],
{
[classAlias. class]
}.
result.
}
dictAliases = function():: AliasList{
filename = "project/documentation.fodt" :: string.
docRaw = xmlParseFile(filename) :: xmlDocPtr.
tree= xmlDocGetRootElement(docRaw) :: xmlNodePtr.
nodeStylesRoot = find(tree, "automatic-styles"):: xmlNodePtr.
nodesStyles= nodeStylesRoot["xmlChildrenNode"]:: [xmlNodePtr]; containers:linkedlist(next, null).
dictAliases = loop fold(nodesStyles->nodeStyle:: xmlNodePtr, []->aliases::[xmlNodePtr]):: [xmlNodePtr] {
aliases + classAliasesQuery(nodeStyle).
}.
dictAliases
}
test1 = function():: int; entry {
dictAliases = dictAliases():: AliasList.
count = loop fold(dictAliases->alias::Alias, 0->count::int):: int{
aliasName = alias[0]:: String; logging.
aliasOrigClass = alias[1]::String; logging.
0 + strlen(aliasName) + strlen(aliasOrigClass).
}
count
}
/*
toXmlNode = function (nodeRaw:: xmlNodePtr):: XmlNode
{
{tag = nodeRaw["name"], content=null}
}
children = function (tree:: xmlNodePtr):: XmlTree
{
childrenRaw = tree["xmlChildrenNode"]:: [xmlNodePtr]; containers:linkedlist(next, null).
loop map (childrenRaw->childRaw:: xmlNodePtr):: XmlTree {
[toXmlNode(childRaw), children(childRaw)]
}
}
document = function (filename:: string):: XmlTree
{
docRaw = xmlParseFile(filename) :: xmlDocPtr.
nodeRaw= xmlDocGetRootElement(docRaw) :: xmlNodePtr.
[toXmlNode(nodeRaw), children(nodeRaw)]:: XmlTree
}
*/

Event Timeline