aboutsummaryrefslogtreecommitdiff
path: root/node_modules/renderkid/lib/Layout.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/renderkid/lib/Layout.js')
-rw-r--r--node_modules/renderkid/lib/Layout.js110
1 files changed, 110 insertions, 0 deletions
diff --git a/node_modules/renderkid/lib/Layout.js b/node_modules/renderkid/lib/Layout.js
new file mode 100644
index 000000000..842945e29
--- /dev/null
+++ b/node_modules/renderkid/lib/Layout.js
@@ -0,0 +1,110 @@
+// Generated by CoffeeScript 1.9.3
+var Block, Layout, SpecialString, fn, i, len, object, prop, ref, terminalWidth;
+
+Block = require('./layout/Block');
+
+object = require('utila').object;
+
+SpecialString = require('./layout/SpecialString');
+
+terminalWidth = require('./tools').getCols();
+
+module.exports = Layout = (function() {
+ var self;
+
+ self = Layout;
+
+ Layout._rootBlockDefaultConfig = {
+ linePrependor: {
+ options: {
+ amount: 0
+ }
+ },
+ lineAppendor: {
+ options: {
+ amount: 0
+ }
+ },
+ blockPrependor: {
+ options: {
+ amount: 0
+ }
+ },
+ blockAppendor: {
+ options: {
+ amount: 0
+ }
+ }
+ };
+
+ Layout._defaultConfig = {
+ terminalWidth: terminalWidth
+ };
+
+ function Layout(config, rootBlockConfig) {
+ var rootConfig;
+ if (config == null) {
+ config = {};
+ }
+ if (rootBlockConfig == null) {
+ rootBlockConfig = {};
+ }
+ this._written = [];
+ this._activeBlock = null;
+ this._config = object.append(self._defaultConfig, config);
+ rootConfig = object.append(self._rootBlockDefaultConfig, rootBlockConfig);
+ this._root = new Block(this, null, rootConfig, '__root');
+ this._root._open();
+ }
+
+ Layout.prototype.getRootBlock = function() {
+ return this._root;
+ };
+
+ Layout.prototype._append = function(text) {
+ return this._written.push(text);
+ };
+
+ Layout.prototype._appendLine = function(text) {
+ var s;
+ this._append(text);
+ s = SpecialString(text);
+ if (s.length < this._config.terminalWidth) {
+ this._append('<none>\n</none>');
+ }
+ return this;
+ };
+
+ Layout.prototype.get = function() {
+ this._ensureClosed();
+ if (this._written[this._written.length - 1] === '<none>\n</none>') {
+ this._written.pop();
+ }
+ return this._written.join("");
+ };
+
+ Layout.prototype._ensureClosed = function() {
+ if (this._activeBlock !== this._root) {
+ throw Error("Not all the blocks have been closed. Please call block.close() on all open blocks.");
+ }
+ if (this._root.isOpen()) {
+ this._root.close();
+ }
+ };
+
+ return Layout;
+
+})();
+
+ref = ['openBlock', 'write'];
+fn = function() {
+ var method;
+ method = prop;
+ return Layout.prototype[method] = function() {
+ return this._root[method].apply(this._root, arguments);
+ };
+};
+for (i = 0, len = ref.length; i < len; i++) {
+ prop = ref[i];
+ fn();
+}