@@ -13,9 +13,11 @@ This module allows to create console menu for your REPL application. It allows y
1313var menu = require (' node-menu' );
1414```
1515
16+ Each method returns reference on self object, so calls could be chained.
17+
1618### menu.addItem(title, handler, owner, args)
1719
18- Add item to the menu.
20+ Add item to the menu. Returns __ menu __ for chaining calls.
1921
2022- _ title_ - title of the menu item;
2123- _ handler_ - item handler function;
@@ -46,7 +48,7 @@ menu.addItem(
4648
4749### menu.addDelimiter(delimiter, cnt, title)
4850
49- Adds delimiter to the menu.
51+ Adds delimiter to the menu. Returns __ menu __ for chaining calls.
5052
5153- _ delimiter_ - delimiter character;
5254- _ cnt_ - delimiter's repetition count;
@@ -60,6 +62,32 @@ The output of the delimiter:
6062 menu.addDelimiter('*', 33)
6163 *********************************
6264
65+ ### menu.enableDefaultHeader()
66+
67+ Turns on default header (turned on by default). Returns __ menu__ for chaining calls.
68+
69+ ``` javascript
70+ menu .enableDefaultHeader ()
71+ ```
72+
73+ ### menu.disableDefaultHeader()
74+
75+ Turns off default header. No header will be printed in this case. Returns __ menu__ for chaining calls.
76+
77+ ``` javascript
78+ menu .disableDefaultHeader ()
79+ ```
80+
81+ ### menu.customHeader(customHeaderFunc)
82+
83+ Turns off default header and prints custom header passed in __ customHeaderFunc__ . Returns __ menu__ for chaining calls.
84+
85+ ``` javascript
86+ menu .customHeader (function () {
87+ process .stdout .write (" Custom header\n " );
88+ })
89+ ```
90+
6391### menu.start()
6492
6593Start menu.
@@ -68,7 +96,7 @@ Start menu.
6896
6997## Live Example
7098
71- <a href =" http://runnable.com/U1H42Un5ZlsFdb2x/console-menu-for-your-cool-repl-application-for-shell-and-cli " target =" _blank " ><img src =" https://runnable.com/external/styles/assets/runnablebtn.png " style =" width :67px ;height :25px ;" ></a >
99+ <a href =" http://runnable.com/U1H42Un5ZlsFdb2x/console-menu-for-your-cool-repl-application-for-shell-and-cli " target =" _blank " ><img src =" https://code. runnable.com/external/styles/assets/runnablebtn.png " style =" width :67px ;height :25px ;" ></a >
72100
73101## Source
74102
@@ -91,46 +119,43 @@ TestObject.prototype.printFieldB = function(arg) {
91119
92120var testObject = new TestObject ();
93121
94- menu .addDelimiter (' -' , 40 , ' Main Menu' );
95-
96- menu .addItem (
97- ' No parameters' ,
98- function () {
99- console .log (' No parameters is invoked' );
100- });
101-
102- menu .addItem (
103- " Print Field A" ,
104- testObject .printFieldA ,
105- testObject);
106-
107- menu .addItem (
108- ' Print Field B concatenated with arg1' ,
109- testObject .printFieldB ,
110- testObject,
111- [{' name' : ' arg1' , ' type' : ' string' }]);
112-
113- menu .addItem (
114- ' Sum' ,
115- function (op1 , op2 ) {
116- var sum = op1 + op2;
117- console .log (' Sum ' + op1 + ' +' + op2 + ' =' + sum);
118- },
119- null ,
120- [{' name' : ' op1' , ' type' : ' numeric' }, {' name' : ' op2' , ' type' : ' numeric' }]);
121-
122- menu .addItem (
123- ' String and Bool parameters' ,
124- function (str , b ) {
125- console .log (" String is: " + str);
126- console .log (" Bool is: " + b);
127- },
128- null ,
129- [{' name' : ' str' , ' type' : ' string' }, {' name' : ' bool' , ' type' : ' bool' }]);
130-
131- menu .addDelimiter (' *' , 40 );
132-
133- menu .start ();
122+ menu .addDelimiter (' -' , 40 , ' Main Menu' )
123+ .addItem (
124+ ' No parameters' ,
125+ function () {
126+ console .log (' No parameters is invoked' );
127+ })
128+ .addItem (
129+ " Print Field A" ,
130+ testObject .printFieldA ,
131+ testObject)
132+ .addItem (
133+ ' Print Field B concatenated with arg1' ,
134+ testObject .printFieldB ,
135+ testObject,
136+ [{' name' : ' arg1' , ' type' : ' string' }])
137+ .addItem (
138+ ' Sum' ,
139+ function (op1 , op2 ) {
140+ var sum = op1 + op2;
141+ console .log (' Sum ' + op1 + ' +' + op2 + ' =' + sum);
142+ },
143+ null ,
144+ [{' name' : ' op1' , ' type' : ' numeric' }, {' name' : ' op2' , ' type' : ' numeric' }])
145+ .addItem (
146+ ' String and Bool parameters' ,
147+ function (str , b ) {
148+ console .log (" String is: " + str);
149+ console .log (" Bool is: " + b);
150+ },
151+ null ,
152+ [{' name' : ' str' , ' type' : ' string' }, {' name' : ' bool' , ' type' : ' bool' }])
153+ .addDelimiter (' *' , 40 )
154+ // .customHeader(function() {
155+ // process.stdout.write("Hello\n");
156+ // })
157+ // .disableDefaultHeader()
158+ .start ();
134159```
135160
136161Output of this example:
@@ -139,7 +164,7 @@ Output of this example:
139164 / | / /____ ____/ /___ / |/ /___ ____ __ __
140165 / |/ // __ \ / __ // _ \ / /|_/ // _ \ / __ \ / / / /
141166 / /| // /_/ // /_/ // __// / / // __// / / // /_/ /
142- /_/ |_/ \____/ \__,_/ \___//_/ /_/ \___//_/ /_/ \__,_/ v.0.0.8
167+ /_/ |_/ \____/ \__,_/ \___//_/ /_/ \___//_/ /_/ \__,_/ v.0.0.9
143168
144169 ---------------Main Menu---------------
145170 1. No parameters
@@ -155,5 +180,3 @@ Output of this example:
155180 >>
156181
157182To invoke item without arguments just type number and Enter. To invoke item with arguments, type number then arguments delimited with space. If string argument has spaces it must be double quoted.
158-
159- ## To be continued...
0 commit comments