EFL 1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. data/README.txt +36 -0
  2. data/lib/EFL.rb +494 -0
  3. data/lib/EFL_array.rb +20 -0
  4. data/lib/EFL_errors.rb +48 -0
  5. data/lib/EFL_hash.rb +18 -0
  6. data/lib/EFL_production.rb +49 -0
  7. data/lib/EFL_regexp.rb +112 -0
  8. data/lib/EFL_regexp_generator.rb +70 -0
  9. data/lib/EFL_substitution.rb +221 -0
  10. data/lib/EFL_syntactic_sugar.rb +67 -0
  11. data/lib/Hash Doc.doc +0 -0
  12. data/lib/Limitaciones.txt +3 -0
  13. data/lib/doc/classes/Generator.html +634 -0
  14. data/lib/doc/classes/Generator.src/M000008.html +18 -0
  15. data/lib/doc/classes/Generator.src/M000009.html +18 -0
  16. data/lib/doc/classes/Generator.src/M000010.html +18 -0
  17. data/lib/doc/classes/Generator.src/M000011.html +18 -0
  18. data/lib/doc/classes/Generator.src/M000012.html +18 -0
  19. data/lib/doc/classes/Generator.src/M000013.html +18 -0
  20. data/lib/doc/classes/Generator.src/M000014.html +18 -0
  21. data/lib/doc/classes/Generator.src/M000015.html +18 -0
  22. data/lib/doc/classes/Generator.src/M000016.html +28 -0
  23. data/lib/doc/classes/Generator.src/M000017.html +24 -0
  24. data/lib/doc/classes/Generator.src/M000018.html +157 -0
  25. data/lib/doc/classes/Generator.src/M000019.html +25 -0
  26. data/lib/doc/classes/Generator.src/M000020.html +30 -0
  27. data/lib/doc/classes/Generator.src/M000021.html +32 -0
  28. data/lib/doc/classes/Generator.src/M000022.html +22 -0
  29. data/lib/doc/classes/Generator.src/M000023.html +18 -0
  30. data/lib/doc/classes/Generator.src/M000024.html +27 -0
  31. data/lib/doc/classes/Generator.src/M000025.html +22 -0
  32. data/lib/doc/classes/Generator.src/M000026.html +18 -0
  33. data/lib/doc/classes/Generator.src/M000027.html +27 -0
  34. data/lib/doc/classes/Regexp.html +271 -0
  35. data/lib/doc/classes/Regexp.src/M000028.html +37 -0
  36. data/lib/doc/classes/Regexp.src/M000029.html +29 -0
  37. data/lib/doc/classes/Regexp.src/M000030.html +32 -0
  38. data/lib/doc/created.rid +1 -0
  39. data/lib/doc/files/EFL_rb.html +147 -0
  40. data/lib/doc/files/EFL_regexp_generator_rb.html +242 -0
  41. data/lib/doc/files/EFL_regexp_generator_rb.src/M000003.html +27 -0
  42. data/lib/doc/files/EFL_regexp_generator_rb.src/M000004.html +27 -0
  43. data/lib/doc/files/EFL_regexp_generator_rb.src/M000005.html +19 -0
  44. data/lib/doc/files/EFL_regexp_generator_rb.src/M000006.html +20 -0
  45. data/lib/doc/files/EFL_regexp_generator_rb.src/M000007.html +19 -0
  46. data/lib/doc/files/EFL_regexp_rb.html +139 -0
  47. data/lib/doc/files/EFL_syntactic_sugar_rb.html +208 -0
  48. data/lib/doc/files/EFL_syntactic_sugar_rb.src/M000001.html +29 -0
  49. data/lib/doc/files/EFL_syntactic_sugar_rb.src/M000002.html +19 -0
  50. data/lib/doc/fr_class_index.html +28 -0
  51. data/lib/doc/fr_file_index.html +30 -0
  52. data/lib/doc/fr_method_index.html +56 -0
  53. data/lib/doc/index.html +24 -0
  54. data/tests/Add_Sup_1.rb +223 -0
  55. data/tests/Add_Sup_1.rb.bak +223 -0
  56. data/tests/Add_Sup_1_NI.rb +25 -0
  57. data/tests/Add_Sup_2.rb +142 -0
  58. data/tests/Add_Sup_2.rb.bak +140 -0
  59. data/tests/All.rb +2 -0
  60. data/tests/All_1.rb +7 -0
  61. data/tests/All_2.rb +7 -0
  62. data/tests/All_2.rb.bak +5 -0
  63. data/tests/BeforeAfter.rb +83 -0
  64. data/tests/Bloques.rb +34 -0
  65. data/tests/Bloques.rb.bak +34 -0
  66. data/tests/Complementary.rb +144 -0
  67. data/tests/ComplementaryZoom.rb +78 -0
  68. data/tests/Del.rb +126 -0
  69. data/tests/Dup.rb +55 -0
  70. data/tests/Dup.rb.bak +54 -0
  71. data/tests/Error.rb +11 -0
  72. data/tests/ErrorArgClass.rb +169 -0
  73. data/tests/ErrorArgClass.rb.bak +158 -0
  74. data/tests/ErrorCollision.rb +218 -0
  75. data/tests/ErrorCollision.rb.bak +219 -0
  76. data/tests/ErrorWithoutDeclaration.rb +60 -0
  77. data/tests/ErrorWithoutDeclaration.rb.bak +60 -0
  78. data/tests/Extract.rb +56 -0
  79. data/tests/ExtractDollar.rb +17 -0
  80. data/tests/HashTest.rb +54 -0
  81. data/tests/HashTest.rb.bak +54 -0
  82. data/tests/Lista Czarnecki/AntiguaInterfaz/List.cpp +75 -0
  83. data/tests/Lista Czarnecki/AntiguaInterfaz/ListTransformer.rb +69 -0
  84. data/tests/Lista Czarnecki/AntiguaInterfaz/ListTransformer.rb.bak +100 -0
  85. data/tests/Lista Czarnecki/AntiguaInterfaz/ejecutame.bat +1 -0
  86. data/tests/Lista Czarnecki/AntiguaInterfaz/outDir/MyClassList.cpp +75 -0
  87. data/tests/Lista Czarnecki/AntiguaInterfaz/runme.bat +1 -0
  88. data/tests/Lista Czarnecki/AntiguaInterfaz/specification1.txt +5 -0
  89. data/tests/Lista Czarnecki/AntiguaInterfaz/specification2.txt +3 -0
  90. data/tests/Lista Czarnecki/AntiguaInterfaz/specification3.txt +5 -0
  91. data/tests/Lista Czarnecki/NuevaInterfaz/List.cpp +75 -0
  92. data/tests/Lista Czarnecki/NuevaInterfaz/ListTransformer.rb +58 -0
  93. data/tests/Lista Czarnecki/NuevaInterfaz/ListTransformer.rb.bak +57 -0
  94. data/tests/Lista Czarnecki/NuevaInterfaz/ejecutame.bat +1 -0
  95. data/tests/Lista Czarnecki/NuevaInterfaz/outDir/MyClassList.cpp +75 -0
  96. data/tests/Lista Czarnecki/NuevaInterfaz/outDir/NewClassList.cpp +75 -0
  97. data/tests/Lista Czarnecki/NuevaInterfaz/specification1.txt +5 -0
  98. data/tests/Lista Czarnecki/NuevaInterfaz/specification1.txt.bak +5 -0
  99. data/tests/Lista Czarnecki/NuevaInterfaz/specification2.txt +3 -0
  100. data/tests/Lista Czarnecki/NuevaInterfaz/specification3.txt +5 -0
  101. data/tests/Minus.rb +89 -0
  102. data/tests/Plus.rb.bak +48 -0
  103. data/tests/REVit.rb +84 -0
  104. data/tests/RenameTest.rb +46 -0
  105. data/tests/RenameTest.rb.bak +46 -0
  106. data/tests/SubCrash.rb +26 -0
  107. data/tests/SubList.rb.bak +43 -0
  108. data/tests/archAuxiliares/1.txt +328 -0
  109. data/tests/archAuxiliares/2.txt +328 -0
  110. data/tests/archAuxiliares/Bloques/s1.txt +328 -0
  111. data/tests/archAuxiliares/Copia de Matriz.java +19 -0
  112. data/tests/archAuxiliares/Gen/Tesis_156_1.lgi +10 -0
  113. data/tests/archAuxiliares/Gen/Tesis_156_2.lgi +10 -0
  114. data/tests/archAuxiliares/Gen/t01.txt +328 -0
  115. data/tests/archAuxiliares/Gen/t01.txt.bak +328 -0
  116. data/tests/archAuxiliares/Gen/t02.txt +328 -0
  117. data/tests/archAuxiliares/Gen/t02.txt.bak +328 -0
  118. data/tests/archAuxiliares/Gen/t03.txt +328 -0
  119. data/tests/archAuxiliares/Gen/t03.txt.bak +328 -0
  120. data/tests/archAuxiliares/Gen/t04.txt +328 -0
  121. data/tests/archAuxiliares/Gen/t04.txt.bak +328 -0
  122. data/tests/archAuxiliares/Gen/t1.txt +328 -0
  123. data/tests/archAuxiliares/Gen/t1.txt.bak +328 -0
  124. data/tests/archAuxiliares/Gen/t2.txt +328 -0
  125. data/tests/archAuxiliares/Gen/t2.txt.bak +328 -0
  126. data/tests/archAuxiliares/Gen/t5.txt +328 -0
  127. data/tests/archAuxiliares/Gen/t9.txt +328 -0
  128. data/tests/archAuxiliares/Gen/t9.txt.bak +328 -0
  129. data/tests/archAuxiliares/GenTesis_156_1.lgi +10 -0
  130. data/tests/archAuxiliares/Matriz.java +74 -0
  131. data/tests/archAuxiliares/MatrizOut.java +74 -0
  132. data/tests/archAuxiliares/MatrizOut10.java +68 -0
  133. data/tests/archAuxiliares/MatrizOut11.java +86 -0
  134. data/tests/archAuxiliares/MatrizOut2.java +74 -0
  135. data/tests/archAuxiliares/MatrizOut3.java +74 -0
  136. data/tests/archAuxiliares/MatrizOut4.java +74 -0
  137. data/tests/archAuxiliares/MatrizOut5.java +21 -0
  138. data/tests/archAuxiliares/MatrizOut6.java +21 -0
  139. data/tests/archAuxiliares/MatrizOut7.java +21 -0
  140. data/tests/archAuxiliares/MatrizOut8.java +16 -0
  141. data/tests/archAuxiliares/MatrizOut9.java +86 -0
  142. data/tests/archAuxiliares/MatrizOut_9.java +86 -0
  143. data/tests/archAuxiliares/Matriz_1.java +74 -0
  144. data/tests/archAuxiliares/Matriz_10.java +68 -0
  145. data/tests/archAuxiliares/Matriz_11.java +86 -0
  146. data/tests/archAuxiliares/Matriz_2.java +74 -0
  147. data/tests/archAuxiliares/Matriz_3.java +74 -0
  148. data/tests/archAuxiliares/Matriz_4.java +74 -0
  149. data/tests/archAuxiliares/Matriz_5.java +21 -0
  150. data/tests/archAuxiliares/Matriz_6.java +21 -0
  151. data/tests/archAuxiliares/Matriz_7.java +21 -0
  152. data/tests/archAuxiliares/Matriz_8.java +16 -0
  153. data/tests/archAuxiliares/Matriz_9.java +86 -0
  154. data/tests/archAuxiliares/Matriz_N_1.java +21 -0
  155. data/tests/archAuxiliares/Matriz_N_2.java +91 -0
  156. data/tests/archAuxiliares/N1.txt +18 -0
  157. data/tests/archAuxiliares/N1_EXPECTED.txt +18 -0
  158. data/tests/archAuxiliares/N1_OUT.txt +18 -0
  159. data/tests/archAuxiliares/N2_EXPECTED.txt +18 -0
  160. data/tests/archAuxiliares/N2_OUT.txt +18 -0
  161. data/tests/archAuxiliares/N3.txt +23 -0
  162. data/tests/archAuxiliares/N3_EXPECTED.txt +22 -0
  163. data/tests/archAuxiliares/N3_OUT.txt +22 -0
  164. data/tests/archAuxiliares/N4_EXPECTED.txt +10 -0
  165. data/tests/archAuxiliares/N4_OUT.txt +10 -0
  166. data/tests/archAuxiliares/N5_OUT.txt +18 -0
  167. data/tests/archAuxiliares/N6_OUT.txt +18 -0
  168. data/tests/archAuxiliares/PedidorTerceroWS.jsp +142 -0
  169. data/tests/archAuxiliares/Tesis_156.lgi +7 -0
  170. data/tests/archAuxiliares/aspectgen.rb +328 -0
  171. data/tests/archAuxiliares/aspectgenCopy.rb +328 -0
  172. data/tests/archAuxiliares/extract_dollar.txt +1 -0
  173. data/tests/archAuxiliares/minus.txt +26 -0
  174. data/tests/archAuxiliares/minus_expected_1.txt +26 -0
  175. data/tests/archAuxiliares/minus_expected_2.txt +26 -0
  176. data/tests/archAuxiliares/minus_out_1.txt +26 -0
  177. data/tests/archAuxiliares/minus_out_2.txt +26 -0
  178. data/tests/archAuxiliares/p1.txt +328 -0
  179. data/tests/archAuxiliares/p2.txt +328 -0
  180. data/tests/archAuxiliares/s1.txt +328 -0
  181. data/tests/archAuxiliares/s2.txt +328 -0
  182. data/tests/archAuxiliares/s3.txt +328 -0
  183. data/tests/archAuxiliares/s4.txt +328 -0
  184. data/tests/archAuxiliares/s5.txt +328 -0
  185. data/tests/archAuxiliares/s7.txt +328 -0
  186. data/tests/archAuxiliares/s8.txt +328 -0
  187. data/tests/archAuxiliares/s9.txt +328 -0
  188. data/tests/archAuxiliares/text.txt +1 -0
  189. data/tests/delay.rb +33 -0
  190. data/tests/delay.rb.bak +33 -0
  191. data/tests/satisfy.rb +44 -0
  192. data/tests/satisfy.rb.bak +34 -0
  193. metadata +252 -0
@@ -0,0 +1,58 @@
1
+ require 'EFL'
2
+
3
+ ######################################
4
+ # Analyzer
5
+ ######################################
6
+
7
+ unless ARGV[0]
8
+ print "You should specify the list specification file"
9
+ exit
10
+ end
11
+ eval "SPECIFICATION = {#{File.open("#{ARGV[0]}").read}}"
12
+
13
+ ######################################
14
+ # generators
15
+ ######################################
16
+
17
+ EXEMPLAR = 'List.cpp'
18
+
19
+ element_type = generator(:exemplar => EXEMPLAR, :out => SPECIFICATION['Out File'], 'v2' => 'pepe') {
20
+ gsub /MyClass/, SPECIFICATION['Element Type']
21
+ prod EXEMPLAR, SPECIFICATION['Out File']
22
+ puts out
23
+ }
24
+
25
+ ownership = generator {
26
+ case SPECIFICATION['Ownership']
27
+ when 'External reference'
28
+ sub /delete head_;/, ''
29
+ sub /new MyClass\(h\)/ , '&h'
30
+ when 'Owned reference'
31
+ sub /new MyClass\(h\)/ , '&h'
32
+ when 'Copy'
33
+ end
34
+ prod EXEMPLAR, SPECIFICATION['Out File']
35
+ }
36
+
37
+ length_counter = generator {
38
+ if SPECIFICATION['Length Type']
39
+ gsub /int/, SPECIFICATION['Length Type']
40
+ else
41
+ gsub /^.*length.*$/i, ''
42
+ gsub /\)\:/, '\0head_(0), tail_(t)'
43
+ end
44
+ prod EXEMPLAR, SPECIFICATION['Out File']
45
+ }
46
+
47
+ tracing = generator {
48
+ if !SPECIFICATION['Tracing']
49
+ gsub /cout.+$/, ''
50
+ end
51
+ prod EXEMPLAR, SPECIFICATION['Out File']
52
+ }
53
+
54
+ ######################################
55
+ # generator coordination
56
+ ######################################
57
+ element_type.gen
58
+ (ownership + length_counter + tracing).gen
@@ -0,0 +1,57 @@
1
+ require 'EFL'
2
+
3
+ ######################################
4
+ # Analyzer
5
+ ######################################
6
+
7
+ unless ARGV[0]
8
+ print "You should specify the list specification file"
9
+ exit
10
+ end
11
+ eval "SPECIFICATION = {#{File.open("#{ARGV[0]}").read}}"
12
+
13
+ ######################################
14
+ # generators
15
+ ######################################
16
+
17
+ MyClass = 'List.cpp'
18
+
19
+ element_type = generator {
20
+ gsub /MyClass/, SPECIFICATION['Element Type']
21
+ prod MyClass, SPECIFICATION['Out File']
22
+ }
23
+
24
+ ownership = generator {
25
+ case SPECIFICATION['Ownership']
26
+ when 'External reference'
27
+ sub /delete head_;/, ''
28
+ sub /new MyClass\(h\)/ , '&h'
29
+ when 'Owned reference'
30
+ sub /new MyClass\(h\)/ , '&h'
31
+ when 'Copy'
32
+ end
33
+ prod MyClass, SPECIFICATION['Out File']
34
+ }
35
+
36
+ length_counter = generator {
37
+ if SPECIFICATION['Length Type']
38
+ gsub /int/, SPECIFICATION['Length Type']
39
+ else
40
+ gsub /^.*length.*$/i, ''
41
+ gsub /\)\:/, '\0head_(0), tail_(t)'
42
+ end
43
+ prod MyClass, SPECIFICATION['Out File']
44
+ }
45
+
46
+ tracing = generator {
47
+ if !SPECIFICATION['Tracing']
48
+ gsub /cout.+$/, ''
49
+ end
50
+ prod MyClass, SPECIFICATION['Out File']
51
+ }
52
+
53
+ ######################################
54
+ # generator coordination
55
+ ######################################
56
+ element_type.gen
57
+ (ownership + length_counter + tracing).gen
@@ -0,0 +1 @@
1
+ ruby ListTransformer.rb specification1.txt
@@ -0,0 +1,75 @@
1
+ #include <iostream>
2
+ using namespace std;
3
+
4
+ class MyClass {};
5
+
6
+ ostream& operator<<(ostream& os, const MyClass &e)
7
+ {
8
+ os<<"- MyClass -";
9
+ return os;
10
+ };
11
+
12
+
13
+ ////////////////////////////////////////////////
14
+ // List
15
+ ////////////////////////////////////////////////
16
+
17
+ class List
18
+ {
19
+ private:
20
+ MyClass* head_;
21
+ List* tail_;
22
+
23
+ public:
24
+ List(MyClass&h, List *t=0):head_(0), tail_(t)
25
+
26
+ { setHead(h); }
27
+
28
+ ~List()
29
+ { delete head_; }
30
+
31
+ void setHead(MyClass& h)
32
+ {
33
+ cout << "setHead(" << h <<")" << endl;
34
+ head_ = new MyClass(h);
35
+ }
36
+
37
+ MyClass& head()
38
+ { cout << "head()" << endl;
39
+ return *head_;
40
+ }
41
+
42
+ void setTail(List *t)
43
+ {
44
+ cout << "setTail(t)" << endl;
45
+ tail_ = t;
46
+
47
+ }
48
+
49
+ List *tail() const
50
+ {
51
+ cout << "setTail(t)" << endl;
52
+ return tail_;
53
+ }
54
+
55
+
56
+
57
+
58
+ private:
59
+
60
+
61
+
62
+ };
63
+
64
+
65
+
66
+ int main()
67
+ {
68
+ MyClass e1, e2;
69
+ List l1(e1);
70
+ List l2(e2, &l1);
71
+ List l3(e1);
72
+
73
+ l3.setHead(e1);
74
+ l3.setTail(&l2);
75
+ }
@@ -0,0 +1,75 @@
1
+ #include <iostream>
2
+ using namespace std;
3
+
4
+ class MyClass {};
5
+
6
+ ostream& operator<<(ostream& os, const MyClass &e)
7
+ {
8
+ os<<"- MyClass -";
9
+ return os;
10
+ };
11
+
12
+
13
+ ////////////////////////////////////////////////
14
+ // List
15
+ ////////////////////////////////////////////////
16
+
17
+ class List
18
+ {
19
+ private:
20
+ MyClass* head_;
21
+ List* tail_;
22
+
23
+ public:
24
+ List(MyClass&h, List *t=0):head_(0), tail_(t)
25
+
26
+ { setHead(h); }
27
+
28
+ ~List()
29
+ { delete head_; }
30
+
31
+ void setHead(MyClass& h)
32
+ {
33
+ cout << "setHead(" << h <<")" << endl;
34
+ head_ = new MyClass(h);
35
+ }
36
+
37
+ MyClass& head()
38
+ { cout << "head()" << endl;
39
+ return *head_;
40
+ }
41
+
42
+ void setTail(List *t)
43
+ {
44
+ cout << "setTail(t)" << endl;
45
+ tail_ = t;
46
+
47
+ }
48
+
49
+ List *tail() const
50
+ {
51
+ cout << "setTail(t)" << endl;
52
+ return tail_;
53
+ }
54
+
55
+
56
+
57
+
58
+ private:
59
+
60
+
61
+
62
+ };
63
+
64
+
65
+
66
+ int main()
67
+ {
68
+ MyClass e1, e2;
69
+ List l1(e1);
70
+ List l2(e2, &l1);
71
+ List l3(e1);
72
+
73
+ l3.setHead(e1);
74
+ l3.setTail(&l2);
75
+ }
@@ -0,0 +1,5 @@
1
+ "Out File" => "outDir/NewClassList.cpp",
2
+ "Element Type" => "NewClass",
3
+ "Ownership" => "Copy",
4
+ "Length Counter Type" => "short",
5
+ "Tracing" => "yes"
@@ -0,0 +1,5 @@
1
+ "Out File" => "outDir/MyClassList.cpp",
2
+ "Element Type" => "NewClass",
3
+ "Ownership" => "Copy",
4
+ "Length Counter Type" => "short",
5
+ "Tracing" => "yes"
@@ -0,0 +1,3 @@
1
+ "Out File" => "outDir/MyClassList.cpp",
2
+ "Element Type" => "MyClass",
3
+ "Ownership" => "Owned reference"
@@ -0,0 +1,5 @@
1
+ "Out File" => "outDir/MyClassList.cpp",
2
+ "Element Type" => "MyClass",
3
+ "Ownership" => "External reference",
4
+ "Length Counter" => "no",
5
+ "Tracing" => "yes"
@@ -0,0 +1,89 @@
1
+ require 'test/unit'
2
+ require "EFL"
3
+
4
+ ########################################################
5
+ # Pruebas para regexp - regexp
6
+ #
7
+ # Ultima actualizacion: 29-10-2007
8
+ ########################################################
9
+
10
+ def identicalFiles? (f1, f2)
11
+ result = false
12
+ File.open(f1) { |fi1|
13
+ content01 = fi1.read
14
+ File.open(f2) { |fi2|
15
+ content2 = fi2.read
16
+ result = content01 == content2
17
+ }
18
+ }
19
+ end #identicalFiles
20
+
21
+ class Minus < Test::Unit::TestCase
22
+ def test_1
23
+ x = nil
24
+ g1 = generator {
25
+ x =extract('archAuxiliares/minus.txt',
26
+ /<b2\b.*?>.*<\/b2>/m > /<b3\b.*?>.*<\/b3>/m > />.*?</m > /[A-Za-z_0-9]+/m - /nbsp/)
27
+ }
28
+ assert_equal(x, ["text_3", "text_4", "text_5", "text_6"])
29
+ end
30
+
31
+ def test_2
32
+ x = nil
33
+ g1 = generator {
34
+ x =extract('archAuxiliares/minus.txt',
35
+ /<b2\b.*?>.*<\/b2>/m > /<b3\b.*?>.*<\/b3>/m > />.*?</m - /(.*nbsp.*)*/m -
36
+ /.*text_5.*/m - /.*text_6.*/m)
37
+ }
38
+ assert_equal(x,
39
+ [">\n text_3\n <",
40
+ ">\n <",
41
+ ">\n <",
42
+ ">\n\n<",
43
+ ">\n<",
44
+ ">\n text_4\n <",
45
+ ">\n <"])
46
+ end
47
+
48
+ def test_3
49
+ x = nil
50
+ g1 = generator {
51
+ x =extract('archAuxiliares/minus.txt', o(/<b3\b.*?>.*<\/b3>/m) - /.*\/b.*/m)
52
+ }
53
+ assert_equal(x, ["<b1>\n text_1\n <b2>\n text_2\n "])
54
+ end
55
+
56
+ def test_4
57
+ g1 = generator {
58
+ sub(/<b2\b.*?>.*<\/b2>/m > /<b3\b.*?>.*<\/b3>/m > />.*?</m > /[A-Za-z_0-9]+/m - /nbsp/ - /text_3/, '<sub>')
59
+ prod('archAuxiliares/minus.txt', 'archAuxiliares/minus_out_1.txt')
60
+ gen
61
+ }
62
+ assert(identicalFiles?('archAuxiliares/minus_expected_1.txt', 'archAuxiliares/minus_out_1.txt'))
63
+ end
64
+
65
+ def test_5
66
+ g1 = generator {
67
+ gsub(/<b2\b.*?>.*?<\/b2>/m > /<b3\b.*?>.*?<\/b3>/m > />.*?</m > /[A-Za-z_0-9]+/m - /text_3/, '<sub>')
68
+ prod('archAuxiliares/minus.txt', 'archAuxiliares/minus_out_2.txt')
69
+ gen
70
+ }
71
+ assert(identicalFiles?('archAuxiliares/minus_expected_2.txt', 'archAuxiliares/minus_out_2.txt'))
72
+ end
73
+
74
+ def test_5
75
+ g1 = generator
76
+ assert_raises(RuntimeError, "") {||
77
+ g1.gsub(/<b2\b.*?>.*?<\/b2>/m - /nbsp/ > /<b3\b.*?>.*?<\/b3>/m - /text_3/, '<sub>')
78
+ }
79
+ end
80
+
81
+ def test_6
82
+ x = nil
83
+ g1 = generator {
84
+ x =extract('archAuxiliares/text.txt', /text_[0-9]/ - /text_1/ - /text_3/)
85
+ }
86
+ #puts x
87
+ end
88
+
89
+ end
@@ -0,0 +1,48 @@
1
+ require 'test/unit'
2
+ require "EFL.rb"
3
+
4
+ ########################################################
5
+ # Bateria de pruebas para la redefinici�n de las funciones Array#+, String#+,
6
+ #
7
+ # Ultima actualizacion: 17-6-2005
8
+ ########################################################
9
+
10
+ class Plus < Test::Unit::TestCase
11
+ def setup
12
+ @a1 = ['1', '2', '3', '4']
13
+ @a2 = ['5', '6']
14
+ @a3 = ['7', '8', '9', '10']
15
+ @a4 = ['11', '12']
16
+ @s1 = 'a'
17
+ @s2 = 'b'
18
+ end
19
+
20
+ def test_1 #String + Array
21
+ assert_equal(@s1 + @s2, 'ab')
22
+ assert_equal(@s1 + @a1, ['a1', 'a2', 'a3', 'a4'])
23
+ end
24
+
25
+ def test_2 #Array + String
26
+ assert_equal(@a1 + @a2, ['1', '2', '3', '4', '5', '6'])
27
+ assert_equal(@a1 + @s1, ['1a', '2a', '3a', '4a'])
28
+ end
29
+
30
+ def test_3
31
+ assert_equal(@s1 + @a1 + @s2, ['a1b', 'a2b', 'a3b', 'a4b'])
32
+ assert_equal(@a1 + @a2+ @s1 + @s2, ['1ab', '2ab', '3ab', '4ab', '5ab', '6ab'])
33
+ end
34
+
35
+ def test_4
36
+ assert_equal(@a1 + @s1 + @a3 + @s2, ['1a7b', '2a8b', '3a9b', '4a10b'])
37
+ assert_equal(@a1 + @s1 + (@a2 + @a4) + @s2, ['1a5b', '2a6b', '3a11b', '4a12b'])
38
+
39
+ end
40
+
41
+ def test_5
42
+ assert_raises(RuntimeError, "") {||
43
+ @a1 +@s1 + @a2
44
+ }
45
+ end
46
+
47
+ end
48
+
@@ -0,0 +1,84 @@
1
+ require 'test/unit'
2
+ require "EFL"
3
+
4
+ ########################################################
5
+ # Bateria de pruebas para la funcion RegExp1 > RegExp2 > ... > RegExpN
6
+ #
7
+ # Ultima actualizacion: 19-7-2007
8
+ ########################################################
9
+
10
+ def identicalFiles? (f1, f2)
11
+ result = false
12
+ File.open(f1) { |fi1|
13
+ content01 = fi1.read
14
+ File.open(f2) { |fi2|
15
+ content2 = fi2.read
16
+ result = content01 == content2
17
+ }
18
+ }
19
+ end #identicalFiles
20
+
21
+
22
+ class REVit < Test::Unit::TestCase
23
+ def test_1
24
+ g1 = generator {
25
+ reg_exp_str_1 = nested_symbols( '{' , '}' ).to_s
26
+ reg_exp_str_2 = nested_symbols( '(' , ')' ).to_s
27
+ sub(/escribirMatriz\(\)\s*#{reg_exp_str_1}/m >
28
+ /for.*?#{reg_exp_str_1}/m >
29
+ nested_symbols( '{' , '}' ) >
30
+ /for.*?(#{reg_exp_str_2})/m >
31
+ nested_symbols( '(' , ')') >
32
+ /j(=)0/,
33
+ 'NuevaVariableee#{$1}0'
34
+ )
35
+
36
+ gsub(nested_symbols( '{' , '}' ) > /Matriz/, 'MatrizInterna')
37
+
38
+ prod('archAuxiliares/Matriz.java', 'archAuxiliares/MatrizOut.java')
39
+ }
40
+
41
+ g2 = generator {
42
+ sub(/Matriz/, 'MatrizExterna')
43
+ prod('archAuxiliares/Matriz.java', 'archAuxiliares/MatrizOut.java')
44
+ }
45
+
46
+ g3 = generator {
47
+ gsub(/print/, 'imprimePollo!')
48
+ prod('archAuxiliares/Matriz.java', 'archAuxiliares/MatrizOut.java')
49
+ }
50
+ (g1+g2+g3).gen
51
+
52
+ assert( identicalFiles?('archAuxiliares/Matriz_1.java', 'archAuxiliares/MatrizOut.java') )
53
+ end
54
+
55
+ def test_2
56
+ g1 = generator {
57
+ reg_exp_str_1 = nested_symbols( '{' , '}' ).to_s
58
+ reg_exp_str_2 = nested_symbols( '(' , ')' ).to_s
59
+ gsub(/escribirMatriz\(\)\s*#{reg_exp_str_1}/m >
60
+ /for.*?#{reg_exp_str_1}/m >
61
+ nested_symbols( '{' , '}' ) >
62
+ /for.*?(#{reg_exp_str_2})/m >
63
+ nested_symbols( '(' , ')') >
64
+ /j(=)0/,
65
+ 'NuevaVariableee#{$1}0'
66
+ )
67
+
68
+ gsub(nested_symbols( '{' , '}' ) > /Matriz/, 'MatrizInterna')
69
+
70
+ prod('archAuxiliares/Matriz.java', 'archAuxiliares/MatrizOut.java')
71
+ }
72
+
73
+ g2 = generator {
74
+ gsub(/Matriz/, 'MatrizExterna')
75
+ prod('archAuxiliares/Matriz.java', 'archAuxiliares/MatrizOut.java')
76
+ }
77
+
78
+ assert(!(g1.add?g2))
79
+ assert_raises(RuntimeError, "") {||
80
+ g1 + g2
81
+ }
82
+ end
83
+
84
+ end