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