# Copyright 2012 United States Government, as represented by the Secretary of Defense, Under
# Secretary of Defense (Personnel & Readiness).
# 
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
# in compliance with the License. You may obtain a copy of the License at
# 
#   http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software distributed under the License
# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
# or implied. See the License for the specific language governing permissions and limitations under
# the License.

## The component representation of a node - this is the base unit in VWF.
##
## All components in an application extend node.vwf.  They can then add their own properties, 
## methods, events, and children.
##
## When a property is added to a component, its default value is null.
## Alternately, it can be given a starting value.  Here is an example in yaml:
##
##    properties:
##      myProperty: "fancy"
##
## Setter and getter functions can be added to control access to the property:
##
##    properties:
##      myProperty:
##        set: |
##          if ( value == "fancy" ) {
##            this.myProperty = value + " coding!";
##          } else {
##            this.myProperty = value;
##          }
##        get: |
##          return this.myProperty;
##        value: "fancy"
## 
## Note:
## If an incoming value is "transformed" before being set (as in the case above, where "coding!" 
## might be added to the end of the string), the value that will be sent with the "satProperty" 
## event will be the transformed value "fancy coding!", not the value that came into the setter 
## ("fancy").
## 
## @name node.vwf
## @namespace

## -----!!!!!-----
## Note: This file is for documentation purposes only - these properties, methods, etc are actually internal VWF 
##       kernel operations.  Changing this file will not change how node works.
## -----!!!!!-----

---
extends: http://vwf.example.com/node.vwf

properties:

  ## ID of node
  ## 
  ## @name node.vwf#id
  ## @property

  id:

  ## Name of node
  ## 
  ## @name node.vwf#name
  ## @property

  name:

  ## Parent of node
  ## 
  ## @name node.vwf#parent
  ## @property

  parent:

  ## Children of node
  ## 
  ## @name node.vwf#children
  ## @property

  children:

methods:

  ## (Do stuff)
  ## 
  ## @name node.vwf#methodName
  ## @function
  ##
  ## @param {Type} paramName
  ## @param {Type} param2Name
  ##
  ## @returns undefined (or what it returns)

  methodName:
    parameters:
      - paramName
      - param2Name

events:

  ## @name node.vwf#eventName
  ## @event
  ##
  ## @param {Type} paramName
  ## @param {Type} param2Name  

  eventName: