@@ -476,7 +476,6 @@ Blockly.JavaScript['console'] = function (block) {
476476
477477Blockly . JavaScript [ 'getdate' ]  =  function  ( block )  { 
478478 var  dropdown_date_  =  block . getFieldValue ( 'date_' ) ; 
479- 
480479 var  functionName  =  Blockly . JavaScript . provideFunction_ ( 
481480 'get_date' , 
482481 [  'function '  +  Blockly . JavaScript . FUNCTION_NAME_PLACEHOLDER_  +  '(t) {' , 
@@ -934,56 +933,71 @@ Blockly.JavaScript['buzzer_music'] = function (block) {
934933 var  value_music_name_  =  Blockly . JavaScript . valueToCode ( block ,  'music_name_' ,  Blockly . JavaScript . ORDER_ATOMIC ) ; 
935934 var  statements_music_  =  Blockly . JavaScript . statementToCode ( block ,  'music_' ) ; 
936935 var  functionName  =  Blockly . JavaScript . provideFunction_ ( 
937-  'get_date' , 
938-  [  'function '  +  Blockly . JavaScript . FUNCTION_NAME_PLACEHOLDER_  +  '(t) {' , 
939-  ' var varDay = new Date();' , 
940-  ' var varYear = varDay.getFullYear();' , 
941-  ' var varMonth = varDay.getMonth()+1;' , 
942-  ' var varDate = varDay.getDate();' , 
943-  ' var varNow;' , 
944-  ' if(t=="f1"){' , 
945-  ' varNow = varYear + "/" + varMonth + "/" + varDate;' ,  
946-  ' }else if(t=="f2"){' , 
947-  ' varNow = varMonth + "/" + varDate + "/" + varYear;' ,  
948-  ' }else if(t=="f3"){' , 
949-  ' varNow = varDate + "/" + varMonth + "/" + varYear;' ,  
950-  ' }else if(t=="y"){' , 
951-  ' varNow = varYear;' ,  
952-  ' }else if(t=="m"){' , 
953-  ' varNow = varMonth;' ,  
954-  ' }else if(t=="d"){' ,  
955-  ' varNow = varDate;' ,  
956-  ' }' , 
957-  ' return varNow;' , 
958-  '}' ] ) ; 
959-  var  code  =  functionName  +  '("' +  dropdown_date_  + '")' ; 
960-  return  [ code ,  Blockly . JavaScript . ORDER_FUNCTION_CALL ] ; 
961-  var  code  =  'var '  +  value_music_name_  +  '={};\n'  + 
962-  '(function(){\n'  + 
963-  ' var musicNotes = {};\n'  + 
964-  ' musicNotes.notes = [];\n'  + 
965-  ' musicNotes.tempos = [];\n'  + 
966-  statements_music_  +  '\n'  + 
967-  ' '  +  value_music_name_  +  '.notes = musicNotes.notes;\n'  + 
968-  ' '  +  value_music_name_  +  '.tempos = musicNotes.tempos;\n'  + 
969-  '})();\n' ; 
970-  return  code ; 
971- } ; 
936+  'buzzer_music' , 
937+  [  'function '  +  Blockly . JavaScript . FUNCTION_NAME_PLACEHOLDER_  +  '(m) {' , 
938+  _buzzer_music . toString ( ) . replace ( 'function _buzzer_music(m){\n' , '' ) ] ) ; 
939+  var  code  =  value_music_name_  +  ' = '  + functionName  +  '([' +  statements_music_  + ']);\n' ; 
940+  return  code ; 
941+ } ; 
942+ 
943+ function  _buzzer_music ( m ) { 
944+  var  musicNotes  =  { } ; 
945+  musicNotes . notes  =  [ ] ; 
946+  musicNotes . tempos  =  [ ] ; 
947+  if ( m . length > 1 ) { 
948+  for ( var  i = 0 ;  i < m . length ;  i ++ ) { 
949+  if ( Array . isArray ( m [ i ] . notes ) ) { 
950+  var  cn  =  musicNotes . notes . concat ( m [ i ] . notes ) ; 
951+  musicNotes . notes  =  cn ; 
952+  } else { 
953+  musicNotes . notes . push ( m [ i ] . notes ) ; 
954+  } 
955+  if ( Array . isArray ( m [ i ] . tempos ) ) { 
956+  var  ct  =  musicNotes . tempos . concat ( m [ i ] . tempos ) ; 
957+  musicNotes . tempos  =  ct ; 
958+  } else { 
959+  musicNotes . tempos . push ( m [ i ] . tempos ) ; 
960+  } 
961+  } 
962+  } else { 
963+  musicNotes . notes  =  m [ 0 ] . notes ; 
964+  musicNotes . tempos  =  m [ 0 ] . tempos ; 
965+  } 
966+  return  musicNotes ; 
967+ } 
972968
973969
974970Blockly . JavaScript [ 'buzzer_music_array' ]  =  function  ( block )  { 
975971 var  value_music_name_  =  Blockly . JavaScript . valueToCode ( block ,  'music_name_' ,  Blockly . JavaScript . ORDER_ATOMIC ) ; 
976972 var  value_notes_  =  Blockly . JavaScript . valueToCode ( block ,  'notes_' ,  Blockly . JavaScript . ORDER_ATOMIC ) ; 
977973 var  value_tempos_  =  Blockly . JavaScript . valueToCode ( block ,  'tempos_' ,  Blockly . JavaScript . ORDER_ATOMIC ) ; 
978-  var  a  =  value_notes_ . split ( ',' ) ; 
979-  value_notes_  =  '['  +  a . join ( '\',\'' )  +  ']' ; 
980-  var  b  =  value_tempos_ . split ( ',' ) ; 
981-  value_tempos_  =  '['  +  b . join ( '\',\'' )  +  ']' ; 
982-  var  code  =  'var '  +  value_music_name_  +  '={};\n'  + 
983-  '(function(){\n'  + 
984-  ' '  +  value_music_name_  +  '.notes = '  +  value_notes_  +  ';\n'  + 
985-  ' '  +  value_music_name_  +  '.tempos = '  +  value_tempos_  +  ';\n'  + 
986-  '})();\n' ; 
974+  var  next  =  block . getNextBlock ( ) ; 
975+  var  notes  =  value_notes_ . replace ( / \' / g, '' ) ; 
976+  var  tempos  =  value_tempos_ . replace ( / \' / g, '' ) ; 
977+  var  notesGen  =  notes . split ( ',' ) ; 
978+  var  temposGen  =  tempos . split ( ',' ) ; 
979+  if ( notesGen . length > temposGen . length ) { 
980+  var  nt  =  notesGen . length  -  temposGen . length ; 
981+  var  tl  =  temposGen . length  -  1 ; 
982+  for ( var  i = 0 ;  i < nt ;  i ++ ) { 
983+  temposGen . push ( temposGen [ tl ] ) 
984+  } 
985+  } else  if ( notesGen . length < temposGen . length ) { 
986+  var  nb  =  temposGen . length  -  notesGen . length ; 
987+  temposGen . splice ( notesGen . length , nb ) ; 
988+  } 
989+  for ( var  i = 0 ;  i < notesGen . length ;  i ++ ) { 
990+  notesGen [ i ]  =  '"' + notesGen [ i ] + '"' ; 
991+  } 
992+  for ( var  i = 0 ;  i < temposGen . length ;  i ++ ) { 
993+  temposGen [ i ]  =  '"' + temposGen [ i ] + '"' ; 
994+  } 
995+  var  code ; 
996+  if  ( next  ===  null )  { 
997+  code  =  '{notes : ['  +  notesGen  +  '] , tempos : ['  +  temposGen  +  '] }' ; 
998+  }  else  { 
999+  code  =  '{notes : ['  +  notesGen  +  '] , tempos : ['  +  temposGen  +  '] },' ; 
1000+  } 
9871001 return  code ; 
9881002} ; 
9891003
@@ -992,11 +1006,16 @@ Blockly.JavaScript['buzzer_notes_tempos'] = function (block) {
9921006 var  dropdown_tone_  =  block . getFieldValue ( 'tone_' ) ; 
9931007 var  dropdown_pitch_  =  block . getFieldValue ( 'pitch_' ) ; 
9941008 var  dropdown_tempos_  =  block . getFieldValue ( 'tempos_' ) ; 
1009+  var  next  =  block . getNextBlock ( ) ; 
1010+  var  code ; 
9951011 if  ( dropdown_tone_  ==  '0' )  { 
9961012 dropdown_pitch_  =  '' ; 
9971013 } 
998-  var  code  =  'musicNotes.notes.push("'  +  dropdown_tone_  +  dropdown_pitch_  +  '");\n'  + 
999-  'musicNotes.tempos.push("'  +  dropdown_tempos_  +  '");\n' ; 
1014+  if  ( next  ===  null )  { 
1015+  code  =  '{notes:"' + dropdown_tone_ + dropdown_pitch_ + '",tempos:"' + dropdown_tempos_ + '"}' ; 
1016+  }  else  { 
1017+  code  =  '{notes:"' + dropdown_tone_ + dropdown_pitch_ + '",tempos:"' + dropdown_tempos_ + '"},' ; 
1018+  } 
10001019 return  code ; 
10011020} ; 
10021021
@@ -1043,35 +1062,28 @@ Blockly.JavaScript['buzzer_state'] = function (block) {
10431062
10441063Blockly . JavaScript [ 'buzzer_load_music' ]  =  function  ( block )  { 
10451064 var  dropdown_music_  =  block . getFieldValue ( 'music_' ) ; 
1046-  var  notes ,  tempos ,  a ,  b ; 
1047-  var  m  =  function  ( )  { 
1048-  a  =  notes . split ( ',' ) ; 
1049-  notes  =  '["'  +  a . join ( '","' )  +  '"]' ; 
1050-  b  =  tempos . split ( ',' ) ; 
1051-  tempos  =  '["'  +  b . join ( '","' )  +  '"]' ; 
1052-  } 
1065+  var  notes ,  tempos ; 
1066+  var  next  =  block . getNextBlock ( ) ; 
10531067 if  ( dropdown_music_  ==  'm1' )  { 
1054-  notes  =  "E7,E7,0,E7,0,C7,E7,0,G7,0,0,0,G6,0,0,0,C7,0,0,G6,0,0,E6,0,0,A6,0,B6,0,AS6,A6,0,G6,E7,0,G7,A7,0,F7,G7,0,E7,0,C7,D7,B6,0,0,C7,0,0,G6,0,0,E6,0,0,A6,0,B6,0,AS6,A6,0,G6,E7,0,G7,A7,0,F7,G7,0,E7,0,C7,D7,B6,0,0" ; 
1055-  tempos  =  "8" ; 
1056-  m ( ) ; 
1057-  } 
1058-  if  ( dropdown_music_  ==  'm2' )  { 
1059-  notes  =  "c4,e4,e4,0,e4,g4,g4,0,d4,f4,f4,0,a4,b4,b4,0,c4,d4,e4,c4,e4,c4,e4,0,d4,e4,f4,f4,e4,d4,f4,0,e4,f4,g4,e4,g4,e4,g4,0,f4,g4,a4,a4,g4,f4,a4,0,g4,c4,d4,e4,f4,g4,a4,0,a4,d4,e4,f4,g4,a4,b4,0,b4,e4,f4,g4,a4,b4,c5,0,c5,b4,a4,f4,b4,g4,c5" ; 
1060-  tempos  =  "6, 6, 6,6,6 ,6 ,6 ,6,6 ,6 ,6 ,6,6 ,6 ,6 ,6 ,6 ,6 ,6 ,6 ,6 ,6 ,6,6,6 ,6 ,6 ,6 ,6 ,6 ,6 ,6,6 ,6 ,6 , 6, 6, 6, 6,6, 6, 6, 6, 6, 6, 6, 6,6, 6, 6, 6, 6,6 ,6 ,6 ,6,6 ,6 ,6 ,6 ,6 ,6 ,6 ,6,6 ,6 ,6 ,6 ,6 ,6 ,6 ,6,6 ,6 ,6 ,6 ,6 ,6 ,6" ; 
1061-  m ( ) ; 
1068+  notes  =  '["E7","E7","0","E7","0","C7","E7","0","G7","0","0","0","G6","0","0","0","C7","0","0","G6","0","0","E6","0","0","A6","0","B6","0","AS6","A6","0","G6","E7","0","G7","A7","0","F7","G7","0","E7","0","C7","D7","B6","0","0","C7","0","0","G6","0","0","E6","0","0","A6","0","B6","0","AS6","A6","0","G6","E7","0","G7","A7","0","F7","G7","0","E7","0","C7","D7","B6","0","0"]' ; 
1069+  tempos  =  '["8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8"]' ; 
1070+  } else  if  ( dropdown_music_  ==  'm2' )  { 
1071+  notes  =  '["c4","e4","e4","0","e4","g4","g4","0","d4","f4","f4","0","a4","b4","b4","0","c4","d4","e4","c4","e4","c4","e4","0","d4","e4","f4","f4","e4","d4","f4","0","e4","f4","g4","e4","g4","e4","g4","0","f4","g4","a4","a4","g4","f4","a4","0","g4","c4","d4","e4","f4","g4","a4","0","a4","d4","e4","f4","g4","a4","b4","0","b4","e4","f4","g4","a4","b4","c5","0","c5","b4","a4","f4","b4","g4","c5"]' ; 
1072+  tempos  =  '["6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6"]' ; 
1073+  } else  if  ( dropdown_music_  ==  'm3' )  { 
1074+  notes  =  '["C5","C5","G4","G4","A4","A4","G4","0","E4","G4","C5","A4","G4","0","0","A4","0","G4","0","E4","A4","G4","0","E4","0","G4","0","E4","D4","C4","0","E4","E4","G4","G4","A4","A4","G4","G4","0","D5","0","C5","A4","G4","A4","C5","G4","0","A4","A4","G4","A4","C5","G4","0","A4","A4","G4","A4","D5","C5"]' ; 
1075+  tempos  =  '["6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6"]' ; 
1076+  } else  if  ( dropdown_music_  ==  'm4' )  { 
1077+  notes  =  '["FS6","FS6","0","FS6","0","D6","FS6","0","B6","0","0","0","G6","0","0","0","G6","0","0","E6","0","0","C6","0","0","F6","0","G6","0","FS6","F6","0","E6","C7","0","E7","F7","0","D7","E7","0","C7","0","A6","B6","G6","0","0","G6","0","0","E6","0","0","C6","0","0","F6","0","G6","0","FS6","F6","0","E6","G6","0","E7","F7","0","D7","E7","0","C7","0","A6","B6","G6","0","0"]' ; 
1078+  tempos  =  '["8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8", "8"]' ; 
10621079 } 
1063-  if  ( dropdown_music_  ==  'm3' )  { 
1064-  notes  =  "C5,C5,G4,G4,A4,A4,G4,0,E4,G4,C5,A4,G4,0,0,A4,0,G4,0,E4,A4,G4,0,E4,0,G4,0,E4,D4,C4,0,E4,E4,G4,G4,A4,A4,G4,G4,0,D5,0,C5,A4,G4,A4,C5,G4,0,A4,A4,G4,A4,C5,G4,0,A4,A4,G4,A4,D5,C5" ; 
1065-  tempos  =  "6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6" ; 
1066-  m ( ) ; 
1067-  } 
1068-  if  ( dropdown_music_  ==  'm4' )  { 
1069-  notes  =  "FS6,FS6,0,FS6,0,D6,FS6,0,B6,0,0,0,G6,0,0,0,G6,0,0,E6,0,0,C6,0,0,F6,0,G6,0,FS6,F6,0,E6,C7,0,E7,F7,0,D7,E7,0,C7,0,A6,B6,G6,0,0,G6,0,0,E6,0,0,C6,0,0,F6,0,G6,0,FS6,F6,0,E6,G6,0,E7,F7,0,D7,E7,0,C7,0,A6,B6,G6,0,0" ; 
1070-  tempos  =  "8" ; 
1071-  m ( ) ; 
1080+  var  code ; 
1081+  if  ( next  ===  null )  { 
1082+  code  =  '{notes:' +  notes  +  ' , tempos:'  +  tempos  +  '}' ; 
1083+  }  else  { 
1084+  code  =  '{notes:' +  notes  +  ' , tempos:'  +  tempos  +  '},' ; 
10721085 } 
1073-  var  code  =  notes  +  ','  +  tempos ; 
1074-  return  [ code ,  Blockly . JavaScript . ORDER_ATOMIC ] ; 
1086+  return  code ; 
10751087} ; 
10761088
10771089
0 commit comments