final class PolymerClassRewriter
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
private AbstractCompiler |
compiler |
private Node |
polymerElementExterns |
Constructor and Description |
---|
PolymerClassRewriter(AbstractCompiler compiler,
Node polymerElementExterns) |
Modifier and Type | Method and Description |
---|---|
private void |
addInterfaceExterns(PolymerClassDefinition cls,
java.util.List<PolymerPass.MemberDefinition> readOnlyProps)
Adds an interface for the given ClassDefinition to externs.
|
private void |
addTypesToFunctions(Node objLit,
java.lang.String thisType)
Adds an @this annotation to all functions in the objLit.
|
private void |
appendBehaviorMembersToBlock(PolymerClassDefinition cls,
Node block)
Appends all required behavior functions and non-property members to the given block.
|
private void |
appendPropertiesToBlock(PolymerClassDefinition cls,
Node block,
java.lang.String basePath)
Appends all properties in the ClassDefinition to the prototype of the custom element.
|
private JSDocInfoBuilder |
getConstructorDoc(PolymerClassDefinition cls) |
private static java.lang.String |
getInterfaceName(PolymerClassDefinition cls) |
private static boolean |
hasShorthandAssignment(Node objLit) |
private Node |
makeReadOnlySetter(java.lang.String propName,
java.lang.String qualifiedPath)
Adds the generated setter for a readonly property.
|
private com.google.common.collect.ImmutableList<PolymerPass.MemberDefinition> |
parseReadOnlyProperties(PolymerClassDefinition cls,
Node block)
Generates the _set* setters for readonly properties and appends them to the given block.
|
private void |
removePropertyDocs(Node objLit)
Remove all JSDocs from properties of a class definition
|
(package private) void |
rewritePolymerClass(Node exprRoot,
PolymerClassDefinition cls,
boolean isInGlobalScope)
Rewrites a given call to Polymer({}) to a set of declarations and assignments which can be
understood by the compiler.
|
private static Node |
varToAssign(Node var) |
private final AbstractCompiler compiler
private Node polymerElementExterns
PolymerClassRewriter(AbstractCompiler compiler, Node polymerElementExterns)
void rewritePolymerClass(Node exprRoot, PolymerClassDefinition cls, boolean isInGlobalScope)
exprRoot
- The root expression of the call to Polymer({}).cls
- The extracted PolymerClassDefinition
for the Polymer element created by this
call.private void addTypesToFunctions(Node objLit, java.lang.String thisType)
private com.google.common.collect.ImmutableList<PolymerPass.MemberDefinition> parseReadOnlyProperties(PolymerClassDefinition cls, Node block)
private JSDocInfoBuilder getConstructorDoc(PolymerClassDefinition cls)
private void appendPropertiesToBlock(PolymerClassDefinition cls, Node block, java.lang.String basePath)
private void removePropertyDocs(Node objLit)
private void appendBehaviorMembersToBlock(PolymerClassDefinition cls, Node block)
private Node makeReadOnlySetter(java.lang.String propName, java.lang.String qualifiedPath)
https://www.polymer-project.org/0.8/docs/devguide/properties.html#read-only
private void addInterfaceExterns(PolymerClassDefinition cls, java.util.List<PolymerPass.MemberDefinition> readOnlyProps)
https://www.polymer-project.org/0.8/docs/devguide/properties.html#read-only
private static boolean hasShorthandAssignment(Node objLit)
private static java.lang.String getInterfaceName(PolymerClassDefinition cls)