]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.data/scl/Data/XML.scl
Merge "Remove unused import in DeleteHandler"
[simantics/platform.git] / bundles / org.simantics.scl.data / scl / Data / XML.scl
1 import "OSGi"\r
2 \r
3 importJava "org.jdom2.Document" where\r
4     data Document\r
5     \r
6     @JavaName "<init>"\r
7     createDocument :: Element -> <Proc> Document\r
8     \r
9     @JavaName getRootElement\r
10     rootElementOf :: Document -> <Proc> Element\r
11     \r
12     @JavaName setRootElement\r
13     setRootElement :: Document -> Element -> <Proc> ()\r
14     \r
15 importJava "org.jdom2.Element" where\r
16     data Element\r
17     \r
18     @JavaName "<init>"\r
19     createElement :: String -> <Proc> Element\r
20     \r
21     @JavaName getName\r
22     nameOf :: Element -> <Proc> String\r
23     \r
24     @JavaName getText\r
25     textOf :: Element -> <Proc> String\r
26     \r
27     @JavaName getParentElement\r
28     parentOf :: Element -> <Proc> Maybe Element\r
29     \r
30     @JavaName getChildren\r
31     childrenWithNameOf :: Element -> String -> <Proc> [Element]\r
32     \r
33     @JavaName getChildren\r
34     childrenOf :: Element -> <Proc> [Element]\r
35     \r
36     @JavaName getChild\r
37     childWithNameOf :: Element -> String -> <Proc> Maybe Element\r
38     \r
39     @JavaName getAttributeValue\r
40     attributeOf :: Element -> String -> <Proc> Maybe String\r
41     \r
42     @JavaName getAttributes\r
43     attributesOf :: Element -> <Proc> [Attribute]\r
44     \r
45     @JavaName addContent\r
46     addChild :: Element -> Element -> <Proc> ()\r
47     \r
48     setName :: Element -> String -> <Proc> ()\r
49     \r
50     setText :: Element -> String -> <Proc> ()\r
51     \r
52     setAttribute :: Element -> String -> String -> <Proc> ()\r
53     \r
54 importJava "org.jdom2.Attribute" where\r
55     data Attribute\r
56     \r
57     @JavaName getValue\r
58     valueOfAttribute :: Attribute -> <Proc> String\r
59     \r
60     @JavaName getName\r
61     nameOfAttribute :: Attribute -> <Proc> String\r
62 \r
63 Element ?parentElement ?childName ?childElement :-\r
64     @ffb 1.0\r
65     ?childName = nameOf ?childElement\r
66     Optional ?parentElement (parentOf ?childElement)\r
67         \r
68     @bbf 10.0\r
69     ?childElement <- childrenWithNameOf ?parentElement ?childName\r
70 \r
71     @bff 10.0\r
72     ?childElement <- childrenOf ?parentElement\r
73     ?childName = nameOf ?childElement\r
74     \r
75     @enforce\r
76     Execute (addNamedChild ?parentElement ?childName ?childElement)\r
77     \r
78 Attribute ?element ?attributeName ?attributeValue :-\r
79     @bbf 0.95\r
80     Optional ?attributeValue (attributeOf ?element ?attributeName)\r
81 \r
82     @bff 4.0\r
83     ?attribute <- attributesOf ?element\r
84     ?attributeName = nameOfAttribute ?attribute\r
85     ?attributeValue = valueOfAttribute ?attribute\r
86 \r
87     @enforce\r
88     Execute do\r
89         setAttribute ?element ?attributeName ?attributeValue\r
90 \r
91 TextContent ?element ?textContent :-\r
92     @bf 1\r
93     ?textContent = textOf ?element\r
94     \r
95     @enforce\r
96     Execute do\r
97         setText ?element ?textContent\r
98 \r
99 XPathElement ?parentElement ?xpathExpression ?childElement :-\r
100     @bbf 10\r
101     ?childElement <- elementsByXPath ?parentElement ?xpathExpression\r
102 \r
103 importJava "org.simantics.scl.data.xml.JDomHelper" where\r
104     parseString :: String -> <Proc> Document\r
105     parseFile :: String -> <Proc> Document\r
106     outputString :: Document -> <Proc> String\r
107     \r
108     elementsByXPath :: Element -> String -> <Proc> [Element]\r
109     addNamedChild :: Element -> String -> Element -> <Proc> ()\r
110     setNamespace :: Document -> String -> <Proc> ()\r
111     setElementNamespace :: Element -> String -> <Proc> ()\r
112     clearNamespace :: Document -> <Proc> ()\r
113     clearElementNamespace :: Element -> <Proc> ()\r
114     sortChildrenWith :: (Element -> Element -> <e> Integer) -> Element -> <Proc,e> () \r
115     \r
116     parseStringWithSchemaFile :: String -> String -> <Proc> Document\r
117     //parseStringWithSchemaURL  :: URL    -> String -> <Proc> Document\r
118     parseFileWithSchemaFile   :: String -> String -> <Proc> Document\r
119     //parseFileWithSchemaURL    :: URL    -> String -> <Proc> Document\r
120 \r
121 sortChildrenBy :: Ord a => (Element -> <e> a) -> Element -> <Proc,e> ()\r
122 sortChildrenBy f el = sortChildrenWith (\x y -> compare (f x) (f y)) el