311 |
311 |
, ("TagTypeNode", 'C.tagNode)
|
312 |
312 |
, ("TagTypeGroup", 'C.tagNodegroup)
|
313 |
313 |
, ("TagTypeCluster", 'C.tagCluster)
|
|
314 |
, ("TagTypeNetwork", 'C.tagNetwork)
|
314 |
315 |
])
|
315 |
316 |
$(makeJSONInstance ''TagType)
|
316 |
317 |
|
... | ... | |
318 |
319 |
data TagObject = TagInstance String
|
319 |
320 |
| TagNode String
|
320 |
321 |
| TagGroup String
|
|
322 |
| TagNetwork String
|
321 |
323 |
| TagCluster
|
322 |
324 |
deriving (Show, Eq)
|
323 |
325 |
|
... | ... | |
327 |
329 |
tagTypeOf (TagNode {}) = TagTypeNode
|
328 |
330 |
tagTypeOf (TagGroup {}) = TagTypeGroup
|
329 |
331 |
tagTypeOf (TagCluster {}) = TagTypeCluster
|
|
332 |
tagTypeOf (TagNetwork {}) = TagTypeNetwork
|
330 |
333 |
|
331 |
334 |
-- | Gets the potential tag object name.
|
332 |
335 |
tagNameOf :: TagObject -> Maybe String
|
333 |
336 |
tagNameOf (TagInstance s) = Just s
|
334 |
337 |
tagNameOf (TagNode s) = Just s
|
335 |
338 |
tagNameOf (TagGroup s) = Just s
|
|
339 |
tagNameOf (TagNetwork s) = Just s
|
336 |
340 |
tagNameOf TagCluster = Nothing
|
337 |
341 |
|
338 |
342 |
-- | Builds a 'TagObject' from a tag type and name.
|
... | ... | |
341 |
345 |
return . TagInstance $ fromJSString s
|
342 |
346 |
tagObjectFrom TagTypeNode (JSString s) = return . TagNode $ fromJSString s
|
343 |
347 |
tagObjectFrom TagTypeGroup (JSString s) = return . TagGroup $ fromJSString s
|
|
348 |
tagObjectFrom TagTypeNetwork (JSString s) =
|
|
349 |
return . TagNetwork $ fromJSString s
|
344 |
350 |
tagObjectFrom TagTypeCluster JSNull = return TagCluster
|
345 |
351 |
tagObjectFrom t v =
|
346 |
352 |
fail $ "Invalid tag type/name combination: " ++ show t ++ "/" ++
|