derya
Version:
Multi-Parser & Code-Generator, developed with TypeScript on node.js.
74 lines (64 loc) • 1.92 kB
text/typescript
//Imports
import {CSSElement} from "./css_element";
import {SourceObject} from "samara";
import * as sys from "samara";
//Classes
export class CSSSourceCode{
//Declarations
private readonly elements:CSSElement[];
private ids:number = 0;
private readonly name:string;
//Constructor
constructor(name:string){
this.name = name;
this.elements = [];
}
//Methods
addElement(element:CSSElement):void{
this.elements.push(element);
}
addPropertyToElement(selector:string, property:string, value:string):void{
let element = this.getElementBySelector(selector);
if(element !== undefined){
element.addProperty(property, value);
}
}
getCSS():string{
let sc:SourceObject = new SourceObject();
for(let element of this.elements){
sc.add(element.selector + "{", 0);
for(let property of element.properties){
sc.add(property.getName() + ": " + property.getValue() + ";", 1);
}
sc.add("}", 0);
}
return sc.getString();
}
getElement(id:number):CSSElement{
for(let element of this.elements){
if(element.id === id){
return element;
}
}
return undefined;
}
getElementBySelector(selector:string):CSSElement{
for(let element of this.elements){
if(element.selector === selector){
return element;
}
}
return undefined;
}
getName():string{
return this.name;
}
private getNewID():number{
return this.ids++;
}
new(selector:string):CSSElement{
let element = new CSSElement(this.getNewID(), selector);
this.addElement(element);
return element;
}
}