macro_and_args.pl 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. use vars qw(%result_texis %result_texts %result_trees %result_errors
  2. %result_indices %result_sectioning %result_nodes %result_menus
  3. %result_floats %result_converted %result_converted_errors
  4. %result_elements %result_directions_text);
  5. use utf8;
  6. $result_trees{'macro_and_args'} = {
  7. 'contents' => [
  8. {
  9. 'args' => [
  10. {
  11. 'parent' => {},
  12. 'text' => 'good',
  13. 'type' => 'macro_name'
  14. },
  15. {
  16. 'parent' => {},
  17. 'text' => 'aaa',
  18. 'type' => 'macro_arg'
  19. },
  20. {
  21. 'parent' => {},
  22. 'text' => '2b-bb',
  23. 'type' => 'macro_arg'
  24. }
  25. ],
  26. 'cmdname' => 'macro',
  27. 'contents' => [],
  28. 'extra' => {
  29. 'arg_line' => ' good { aaa, 2b-bb}
  30. '
  31. },
  32. 'line_nr' => {
  33. 'file_name' => '',
  34. 'line_nr' => 1,
  35. 'macro' => ''
  36. },
  37. 'parent' => {}
  38. },
  39. {
  40. 'extra' => {
  41. 'command' => {}
  42. },
  43. 'parent' => {},
  44. 'text' => '
  45. ',
  46. 'type' => 'empty_line_after_command'
  47. },
  48. {
  49. 'parent' => {},
  50. 'text' => '
  51. ',
  52. 'type' => 'empty_line'
  53. },
  54. {
  55. 'args' => [
  56. {
  57. 'parent' => {},
  58. 'text' => 'bad',
  59. 'type' => 'macro_name'
  60. },
  61. {
  62. 'parent' => {},
  63. 'text' => 'ggg"@@^_ ff',
  64. 'type' => 'macro_arg'
  65. },
  66. {
  67. 'parent' => {},
  68. 'text' => 'nnn_b',
  69. 'type' => 'macro_arg'
  70. },
  71. {
  72. 'parent' => {},
  73. 'text' => 'ccc v',
  74. 'type' => 'macro_arg'
  75. }
  76. ],
  77. 'cmdname' => 'macro',
  78. 'contents' => [],
  79. 'extra' => {
  80. 'arg_line' => ' bad { ggg"@@^_ ff, nnn_b, ccc v}
  81. ',
  82. 'invalid_syntax' => 1
  83. },
  84. 'line_nr' => {
  85. 'file_name' => '',
  86. 'line_nr' => 4,
  87. 'macro' => ''
  88. },
  89. 'parent' => {}
  90. },
  91. {
  92. 'extra' => {
  93. 'command' => {}
  94. },
  95. 'parent' => {},
  96. 'text' => '
  97. ',
  98. 'type' => 'empty_line_after_command'
  99. }
  100. ],
  101. 'type' => 'text_root'
  102. };
  103. $result_trees{'macro_and_args'}{'contents'}[0]{'args'}[0]{'parent'} = $result_trees{'macro_and_args'}{'contents'}[0];
  104. $result_trees{'macro_and_args'}{'contents'}[0]{'args'}[1]{'parent'} = $result_trees{'macro_and_args'}{'contents'}[0];
  105. $result_trees{'macro_and_args'}{'contents'}[0]{'args'}[2]{'parent'} = $result_trees{'macro_and_args'}{'contents'}[0];
  106. $result_trees{'macro_and_args'}{'contents'}[0]{'parent'} = $result_trees{'macro_and_args'};
  107. $result_trees{'macro_and_args'}{'contents'}[1]{'extra'}{'command'} = $result_trees{'macro_and_args'}{'contents'}[0];
  108. $result_trees{'macro_and_args'}{'contents'}[1]{'parent'} = $result_trees{'macro_and_args'};
  109. $result_trees{'macro_and_args'}{'contents'}[2]{'parent'} = $result_trees{'macro_and_args'};
  110. $result_trees{'macro_and_args'}{'contents'}[3]{'args'}[0]{'parent'} = $result_trees{'macro_and_args'}{'contents'}[3];
  111. $result_trees{'macro_and_args'}{'contents'}[3]{'args'}[1]{'parent'} = $result_trees{'macro_and_args'}{'contents'}[3];
  112. $result_trees{'macro_and_args'}{'contents'}[3]{'args'}[2]{'parent'} = $result_trees{'macro_and_args'}{'contents'}[3];
  113. $result_trees{'macro_and_args'}{'contents'}[3]{'args'}[3]{'parent'} = $result_trees{'macro_and_args'}{'contents'}[3];
  114. $result_trees{'macro_and_args'}{'contents'}[3]{'parent'} = $result_trees{'macro_and_args'};
  115. $result_trees{'macro_and_args'}{'contents'}[4]{'extra'}{'command'} = $result_trees{'macro_and_args'}{'contents'}[3];
  116. $result_trees{'macro_and_args'}{'contents'}[4]{'parent'} = $result_trees{'macro_and_args'};
  117. $result_texis{'macro_and_args'} = '@macro good { aaa, 2b-bb}
  118. @end macro
  119. @macro bad { ggg"@@^_ ff, nnn_b, ccc v}
  120. @end macro
  121. ';
  122. $result_texts{'macro_and_args'} = '
  123. ';
  124. $result_errors{'macro_and_args'} = [
  125. {
  126. 'error_line' => ':4: bad or empty @macro formal argument: ggg"@@^_ ff
  127. ',
  128. 'file_name' => '',
  129. 'line_nr' => 4,
  130. 'macro' => '',
  131. 'text' => 'bad or empty @macro formal argument: ggg"@@^_ ff',
  132. 'type' => 'error'
  133. },
  134. {
  135. 'error_line' => ':4: bad or empty @macro formal argument: ccc v
  136. ',
  137. 'file_name' => '',
  138. 'line_nr' => 4,
  139. 'macro' => '',
  140. 'text' => 'bad or empty @macro formal argument: ccc v',
  141. 'type' => 'error'
  142. }
  143. ];
  144. $result_converted{'xml'}->{'macro_and_args'} = '<macro name="good" line=" good { aaa, 2b-bb}"><formalarg>aaa</formalarg><formalarg>2b-bb</formalarg></macro>
  145. <macro name="bad" line=" bad { ggg&quot;@@^_ ff, nnn_b, ccc v}"><formalarg>ggg&quot;@@^_ ff</formalarg><formalarg>nnn_b</formalarg><formalarg>ccc v</formalarg></macro>
  146. ';
  147. 1;