Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/fourtyone11/origin-hugo-theme.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'assets/node_modules/postcss-jsx/object-stringifier.js')
-rw-r--r--assets/node_modules/postcss-jsx/object-stringifier.js124
1 files changed, 124 insertions, 0 deletions
diff --git a/assets/node_modules/postcss-jsx/object-stringifier.js b/assets/node_modules/postcss-jsx/object-stringifier.js
new file mode 100644
index 0000000..99f7c72
--- /dev/null
+++ b/assets/node_modules/postcss-jsx/object-stringifier.js
@@ -0,0 +1,124 @@
+"use strict";
+const Stringifier = require("postcss/lib/stringifier");
+const camelCase = require("./camel-case");
+
+class ObjectStringifier extends Stringifier {
+ object (node, semicolon) {
+ this.builder("{", node, "start");
+
+ let after;
+ if (node.nodes && node.nodes.length) {
+ this.body(node);
+ after = this.raw(node, "after");
+ } else {
+ after = this.raw(node, "after", "emptyBody");
+ }
+
+ if (after) this.builder(after);
+ this.builder("}", node, "end");
+ }
+ literal (node, semicolon) {
+ this.builder(node.text + (semicolon ? "," : ""), node);
+ }
+ decl (node, semicolon) {
+ let prop = this.rawValue(node, "prop");
+ if (prop === "float") {
+ prop = "cssFloat";
+ }
+ let string = prop;
+
+ const isObjectShorthand = node.raws.node && node.raws.node.shorthand;
+ if (!isObjectShorthand) {
+ const between = this.raw(node, "between", "colon");
+ const value = this.rawValue(node, "value");
+ string += between + value;
+ }
+
+ if (semicolon) string += ",";
+ this.builder(string, node);
+ }
+ rule (node, semicolon) {
+ this.block(node, this.rawValue(node, "selector"), semicolon);
+ }
+ atrule (node, semicolon) {
+ const name = this.rawValue(node, "name");
+ const params = this.rawValue(node, "params");
+ if (node.nodes) {
+ let string;
+ if (params) {
+ const afterName = this.raw(node, "afterName");
+ string = name + afterName + params;
+ } else {
+ string = name;
+ }
+ this.block(node, string, semicolon);
+ } else {
+ const between = this.raw(node, "between", "colon");
+ let string = name + between + params;
+ if (semicolon) string += ",";
+ this.builder(string, node);
+ }
+ }
+ block (node, start, semicolon) {
+ super.block(node, start);
+ if (semicolon) {
+ this.builder(",", node);
+ }
+ }
+ comment (node) {
+ const left = this.raw(node, "left", "commentLeft");
+ const right = this.raw(node, "right", "commentRight");
+
+ if (node.raws.inline) {
+ const text = node.raws.text || node.text;
+ this.builder("//" + left + text + right, node);
+ } else {
+ this.builder("/*" + left + node.text + right + "*/", node);
+ }
+ }
+ raw (node, own, detect) {
+ let value = super.raw(node, own, detect);
+ if ((own === "between" || (own === "afterName" && node.type === "atrule" && !node.nodes)) && !/:/.test(value)) {
+ value = ":" + value;
+ } else if (own === "before" && /^(decl|rule)$/.test(node.type)) {
+ value = value.replace(/\S+$/, "");
+ }
+ return value;
+ }
+ rawValue (node, prop) {
+ const raw = node.raws[prop];
+ if (raw) {
+ const descriptor = Object.getOwnPropertyDescriptor(raw, "raw");
+ if (descriptor && descriptor.get) {
+ return raw.prefix + raw.raw + raw.suffix;
+ }
+ }
+
+ let value = super.rawValue(node, prop);
+ if (value == null) {
+ return value;
+ }
+ if (/^(prop|selector)$/i.test(prop)) {
+ value = camelCase(value);
+ if (node.raws.before && /(\S+)$/.test(node.raws.before)) {
+ value = RegExp.$1 + value;
+ } else if (value && !/\W/.test(value)) {
+ return value;
+ }
+ } else if (node.type === "atrule") {
+ if (prop === "name") {
+ value = "@" + value;
+ } else if (node.nodes) {
+ return;
+ }
+ if (node.nodes) {
+ value += this.raw(node, "afterName");
+ value += super.rawValue(node, "params");
+ }
+ }
+ value = JSON.stringify(value);
+ return value;
+ }
+};
+
+module.exports = ObjectStringifier;