Commit 4a11b35c by Иван Кубота

take any count of new questions, generate lists, generate human readable

parent 09075ed1
Pipeline #533 failed with stage
......@@ -19,7 +19,12 @@ const options = yargs
.option("c", { alias: "category", describe: "1 - product, 2 - standard", type: "string"})
.option("i", { alias: "id", describe: "return question with id. use it with `seed` arg", type: "number"})
.option("a", { alias: "add", describe: `pass json [{"q": "questionsPath", "a": "answersPath"}]. Paths are relative to dir`, type: "string"})
.option("h", { alias: "human", describe: `human readable format`, type: "boolean"})
.option("l", { alias: "list", describe: `generate lots of questions`, type: "number"})
.argv;
let categoryFixed = false;
if(options.c)
categoryFixed = true;
......@@ -64,22 +69,43 @@ var js = sources.map(a=>'./public/'+a).map(n=>fs.readFileSync(n)+'').join('\n\n'
if(options.dir)
process.env.KUS_DATA_DIR = options.dir;
const data = require("../db.js");
const body = 'const window = {};'+js+'; return {quizGenerator, standardGenerator, initDataProvider, seeded: Math.random.seeded, rand}';
const body = 'const window = {}, localStorage = {getItem:()=>"{}"};'+js+'; return {quizGenerator, standardGenerator, initDataProvider, seeded: Math.random.seeded, rand}';
var ctx = new Function('',body)();
const rand = ctx.rand,
seeded = ctx.seeded;
try{
if( options.add )
data.more = new Function('','return '+ options.add+';' )();
}catch(e){
throw new Error(e)
}
//console.log(options);
data.after = function(){
data.after = function(skipInit){
if(options.list){
ctx.initDataProvider( data );
var c = options.list, origI = options.i|0;
options.list = false;
for(var i = 0; i< c; i++){
options.i = origI+i;
console.log(`Question `+(options.i+1));
data.after(true);
console.log('');
}
return;
}
if( options.seed )
ctx.seeded.setStringSeed( options.seed );
let countStdQ = Object.values(data.standardQuestions).length;
let state = {id: rand(0,countStdQ-1)};
let state = {id: rand(1,countStdQ)};
if(options.random){
......@@ -100,8 +126,9 @@ data.after = function(){
};
let id;
do{
id = rand(0,countStdQ-1);
id = rand(1, countStdQ);
}while(id in used);
used[id] = true;
cur.id = id;
......@@ -132,7 +159,9 @@ data.after = function(){
rand(Object.values(data.products)).image = 'https://robohash.org/'+seeded.toString(36)
}
}
ctx.initDataProvider( data );
if(!skipInit){
ctx.initDataProvider( data );
}
......@@ -142,13 +171,19 @@ data.after = function(){
}else{
result = ctx.standardGenerator(()=>state.id)
}
if( options.verbose ){
console.log( result.log.join( '\n' ) )
if(options.human){
console.log(result.question)
result.answers.forEach(a=>
console.log( (result.type==='checkbox'?(a.correct?'[v]':'[ ]'):(a.correct?'(o)':'( )'))+ ' '+a.text)
)
}else{
if( options.nolog )
delete result.log;
console.log( '--- START ---\n\n' + JSON.stringify( result, null, 2 ) + '\n\n--- END ---' )
if( options.verbose ){
console.log( result.log.join( '\n' ) )
}else{
if( options.nolog )
delete result.log;
console.log( '--- START ---\n\n' + JSON.stringify( result, null, 2 ) + '\n\n--- END ---' )
}
}
if( options.output )
fs.writeFileSync( options.output, JSON.stringify( result, null, 2 ) )
......
номер вопроса,ответ,правильный
2,"ААААКонечно, ведь наши производители используют только натуральное отборное сырье . Молоко не стерилизуют, а только лишь пастеризуют,убивая вредные бактерии, но сохраняя полезные. У детской продукции короткие сроки хранения, всего 5-7 суток.",да
2,"ААААКонечно, ведь наши производители используют только натуральное отборное сырье . Молоко не пастеризуют, а только лишь стерилизуют,убивая вредные бактерии, но сохраняя полезные. У детской продукции короткие сроки хранения, всего 5-7 суток.",
2,"ААААКонечно, ведь наши производители используют только натуральное отборное сырье . Молоко не стерилизуют, а только лишь пастеризуют,убивая вредные бактерии, но сохраняя полезные. У детской продукции короткие сроки хранения, всего 2-3 суток.",
2,"ААААКонечно, ведь наши производители используют только отборное непастеризованное молоко. У детской продукции короткие сроки хранения, всего 5-7 суток. И нежный приятный деткам вкус.",
,,
3,Селёдка,да
3,Жюльен,
3,Лук,да
\ No newline at end of file
категория,номер вопроса,Заголовок,карточка,множественный выбор,Тип вопроса,Тип ответа
4,2,Порекомендуете ли вы наши детские кисломолочные продукты покупателям с детьми? ,1,нет,текст,текст
4,3,Что изображено под шубой?,2,нет,текст с картинкой,картинка
\ No newline at end of file
......@@ -14,14 +14,18 @@ const store = new Store({
});
try{
var data = JSON.parse( localStorage.getItem( 'store' ) );
window.addEventListener && console.log(data)
for(var k in data){
store.set(k, data[k]);
if(!window.storeLoaded){
window.storeLoaded = true;
try{
var data = JSON.parse( localStorage.getItem( 'store' ) );
window.addEventListener && console.log( data )
for( var k in data ){
store.set( k, data[ k ] );
}
}catch( e ){
}
}catch( e ){}
store.on('change', function() {
localStorage.setItem('store', JSON.stringify(store._props));
});
store.on( 'change', function(){
localStorage.setItem( 'store', JSON.stringify( store._props ) );
} );
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment