Example #1
0
// generateVariables generates all the variables/fields under the given type or module into ES5.
func (gen *es5generator) generateVariables(typeOrModule typegraph.TGTypeOrModule, initMap varMap) {
	members := typeOrModule.Members()

	// Find all variables defined under the type or module.
	for _, member := range members {
		srgMember, hasSRGMember := gen.getSRGMember(member)
		if !hasSRGMember || srgMember.MemberKind() != srg.VarMember {
			continue
		}

		// If the variable has a base member (i.e. it shadows another variable),
		// nothing more to do.
		_, hasBaseMember := member.BaseMember()
		if hasBaseMember {
			continue
		}

		// We only need to generate variables that have initializers.
		_, hasInitializer := srgMember.Initializer()
		if !hasInitializer {
			continue
		}

		initMap.Set(member, gen.generateVariable(member))
	}
}
Example #2
0
// generateImplementedMembers generates all the members under the given type or module into ES5.
func (gen *es5generator) generateImplementedMembers(typeOrModule typegraph.TGTypeOrModule) *ordered_map.OrderedMap {
	memberMap := ordered_map.NewOrderedMap()
	members := typeOrModule.Members()
	for _, member := range members {
		// Check for a base member. If one exists, generate the member has an aliased member.
		_, hasBaseMember := member.BaseMember()
		if hasBaseMember {
			memberMap.Set(member, gen.generateImplementedAliasedMember(member))
			continue
		}

		// Otherwise, generate the member if it has an implementation.
		srgMember, hasSRGMember := gen.getSRGMember(member)
		if !hasSRGMember || !srgMember.HasImplementation() {
			continue
		}

		memberMap.Set(member, gen.generateImplementedMember(member))
	}

	return memberMap
}