tripper 0.0.3d

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 (210) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +29 -0
  6. data/Rakefile +1 -0
  7. data/TODO +26 -0
  8. data/lib/generators/USAGE +8 -0
  9. data/lib/generators/tripper.rb +51 -0
  10. data/lib/generators/tripper/commonalities/commonalities.rb +226 -0
  11. data/lib/generators/tripper/detect_changes/detect_changes_generator.rb +173 -0
  12. data/lib/generators/tripper/detect_changes/model.rb +226 -0
  13. data/lib/generators/tripper/detect_changes/templates/migration.rb +7 -0
  14. data/lib/generators/tripper/detect_changes/templates/model/belongs_to.rb +1 -0
  15. data/lib/generators/tripper/detect_changes/templates/model/has_one.rb +1 -0
  16. data/lib/generators/tripper/detect_changes/templates/model/validates.rb +2 -0
  17. data/lib/generators/tripper/from_community/from_community_generator.rb +95 -0
  18. data/lib/generators/tripper/from_community/templates/actions/create.rb +8 -0
  19. data/lib/generators/tripper/from_community/templates/actions/destroy.rb +5 -0
  20. data/lib/generators/tripper/from_community/templates/actions/edit.rb +3 -0
  21. data/lib/generators/tripper/from_community/templates/actions/index.rb +3 -0
  22. data/lib/generators/tripper/from_community/templates/actions/new.rb +3 -0
  23. data/lib/generators/tripper/from_community/templates/actions/show.rb +3 -0
  24. data/lib/generators/tripper/from_community/templates/actions/update.rb +8 -0
  25. data/lib/generators/tripper/from_community/templates/controller.rb +3 -0
  26. data/lib/generators/tripper/from_community/templates/fixtures.yml +9 -0
  27. data/lib/generators/tripper/from_community/templates/helper.rb +2 -0
  28. data/lib/generators/tripper/from_community/templates/migration.rb +30 -0
  29. data/lib/generators/tripper/from_community/templates/model.rb +54 -0
  30. data/lib/generators/tripper/from_community/templates/tests/rspec/actions/create.rb +11 -0
  31. data/lib/generators/tripper/from_community/templates/tests/rspec/actions/destroy.rb +6 -0
  32. data/lib/generators/tripper/from_community/templates/tests/rspec/actions/edit.rb +4 -0
  33. data/lib/generators/tripper/from_community/templates/tests/rspec/actions/index.rb +4 -0
  34. data/lib/generators/tripper/from_community/templates/tests/rspec/actions/new.rb +4 -0
  35. data/lib/generators/tripper/from_community/templates/tests/rspec/actions/show.rb +4 -0
  36. data/lib/generators/tripper/from_community/templates/tests/rspec/actions/update.rb +11 -0
  37. data/lib/generators/tripper/from_community/templates/tests/rspec/controller.rb +8 -0
  38. data/lib/generators/tripper/from_community/templates/tests/rspec/model.rb +7 -0
  39. data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/create.rb +13 -0
  40. data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/destroy.rb +8 -0
  41. data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/edit.rb +6 -0
  42. data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/index.rb +6 -0
  43. data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/new.rb +6 -0
  44. data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/show.rb +6 -0
  45. data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/update.rb +13 -0
  46. data/lib/generators/tripper/from_community/templates/tests/shoulda/controller.rb +5 -0
  47. data/lib/generators/tripper/from_community/templates/tests/shoulda/model.rb +7 -0
  48. data/lib/generators/tripper/from_community/templates/tests/testunit/actions/create.rb +11 -0
  49. data/lib/generators/tripper/from_community/templates/tests/testunit/actions/destroy.rb +6 -0
  50. data/lib/generators/tripper/from_community/templates/tests/testunit/actions/edit.rb +4 -0
  51. data/lib/generators/tripper/from_community/templates/tests/testunit/actions/index.rb +4 -0
  52. data/lib/generators/tripper/from_community/templates/tests/testunit/actions/new.rb +4 -0
  53. data/lib/generators/tripper/from_community/templates/tests/testunit/actions/show.rb +4 -0
  54. data/lib/generators/tripper/from_community/templates/tests/testunit/actions/update.rb +11 -0
  55. data/lib/generators/tripper/from_community/templates/tests/testunit/controller.rb +5 -0
  56. data/lib/generators/tripper/from_community/templates/tests/testunit/model.rb +7 -0
  57. data/lib/generators/tripper/from_community/templates/views/erb/_form.html.erb +16 -0
  58. data/lib/generators/tripper/from_community/templates/views/erb/edit.html.erb +14 -0
  59. data/lib/generators/tripper/from_community/templates/views/erb/index.html.erb +29 -0
  60. data/lib/generators/tripper/from_community/templates/views/erb/new.html.erb +7 -0
  61. data/lib/generators/tripper/from_community/templates/views/erb/show.html.erb +25 -0
  62. data/lib/generators/tripper/from_community/templates/views/haml/_form.html.haml +9 -0
  63. data/lib/generators/tripper/from_community/templates/views/haml/edit.html.haml +14 -0
  64. data/lib/generators/tripper/from_community/templates/views/haml/index.html.haml +25 -0
  65. data/lib/generators/tripper/from_community/templates/views/haml/new.html.haml +7 -0
  66. data/lib/generators/tripper/from_community/templates/views/haml/show.html.haml +20 -0
  67. data/lib/generators/tripper/layout/USAGE +18 -0
  68. data/lib/generators/tripper/layout/layout_generator.rb +29 -0
  69. data/lib/generators/tripper/layout/templates/error_messages_helper.rb +23 -0
  70. data/lib/generators/tripper/layout/templates/layout.html.erb +19 -0
  71. data/lib/generators/tripper/layout/templates/layout.html.haml +21 -0
  72. data/lib/generators/tripper/layout/templates/layout_helper.rb +22 -0
  73. data/lib/generators/tripper/layout/templates/stylesheet.css +83 -0
  74. data/lib/generators/tripper/layout/templates/stylesheet.sass +73 -0
  75. data/lib/generators/tripper/obj_constraint.rb +23 -0
  76. data/lib/generators/tripper/predicate.rb +12 -0
  77. data/lib/generators/tripper/sync_with_community/model.rb +260 -0
  78. data/lib/generators/tripper/sync_with_community/sync_with_community_generator.rb +310 -0
  79. data/lib/generators/tripper/sync_with_community/templates/migration.rb +7 -0
  80. data/lib/generators/tripper/sync_with_community/templates/model/belongs_to.rb +1 -0
  81. data/lib/generators/tripper/sync_with_community/templates/model/has_one.rb +1 -0
  82. data/lib/generators/tripper/sync_with_community/templates/model/validates.rb +2 -0
  83. data/lib/generators/tripper/templates/actions/create.rb +8 -0
  84. data/lib/generators/tripper/templates/actions/destroy.rb +5 -0
  85. data/lib/generators/tripper/templates/actions/edit.rb +3 -0
  86. data/lib/generators/tripper/templates/actions/index.rb +3 -0
  87. data/lib/generators/tripper/templates/actions/new.rb +3 -0
  88. data/lib/generators/tripper/templates/actions/show.rb +3 -0
  89. data/lib/generators/tripper/templates/actions/update.rb +8 -0
  90. data/lib/generators/tripper/templates/controller.rb +3 -0
  91. data/lib/generators/tripper/templates/fixtures.yml +9 -0
  92. data/lib/generators/tripper/templates/helper.rb +2 -0
  93. data/lib/generators/tripper/templates/migration.rb +30 -0
  94. data/lib/generators/tripper/templates/model.rb +54 -0
  95. data/lib/generators/tripper/templates/tests/rspec/actions/create.rb +11 -0
  96. data/lib/generators/tripper/templates/tests/rspec/actions/destroy.rb +6 -0
  97. data/lib/generators/tripper/templates/tests/rspec/actions/edit.rb +4 -0
  98. data/lib/generators/tripper/templates/tests/rspec/actions/index.rb +4 -0
  99. data/lib/generators/tripper/templates/tests/rspec/actions/new.rb +4 -0
  100. data/lib/generators/tripper/templates/tests/rspec/actions/show.rb +4 -0
  101. data/lib/generators/tripper/templates/tests/rspec/actions/update.rb +11 -0
  102. data/lib/generators/tripper/templates/tests/rspec/controller.rb +8 -0
  103. data/lib/generators/tripper/templates/tests/rspec/model.rb +7 -0
  104. data/lib/generators/tripper/templates/tests/shoulda/actions/create.rb +13 -0
  105. data/lib/generators/tripper/templates/tests/shoulda/actions/destroy.rb +8 -0
  106. data/lib/generators/tripper/templates/tests/shoulda/actions/edit.rb +6 -0
  107. data/lib/generators/tripper/templates/tests/shoulda/actions/index.rb +6 -0
  108. data/lib/generators/tripper/templates/tests/shoulda/actions/new.rb +6 -0
  109. data/lib/generators/tripper/templates/tests/shoulda/actions/show.rb +6 -0
  110. data/lib/generators/tripper/templates/tests/shoulda/actions/update.rb +13 -0
  111. data/lib/generators/tripper/templates/tests/shoulda/controller.rb +5 -0
  112. data/lib/generators/tripper/templates/tests/shoulda/model.rb +7 -0
  113. data/lib/generators/tripper/templates/tests/testunit/actions/create.rb +11 -0
  114. data/lib/generators/tripper/templates/tests/testunit/actions/destroy.rb +6 -0
  115. data/lib/generators/tripper/templates/tests/testunit/actions/edit.rb +4 -0
  116. data/lib/generators/tripper/templates/tests/testunit/actions/index.rb +4 -0
  117. data/lib/generators/tripper/templates/tests/testunit/actions/new.rb +4 -0
  118. data/lib/generators/tripper/templates/tests/testunit/actions/show.rb +4 -0
  119. data/lib/generators/tripper/templates/tests/testunit/actions/update.rb +11 -0
  120. data/lib/generators/tripper/templates/tests/testunit/controller.rb +5 -0
  121. data/lib/generators/tripper/templates/tests/testunit/model.rb +7 -0
  122. data/lib/generators/tripper/templates/views/erb/_form.html.erb +16 -0
  123. data/lib/generators/tripper/templates/views/erb/edit.html.erb +14 -0
  124. data/lib/generators/tripper/templates/views/erb/index.html.erb +29 -0
  125. data/lib/generators/tripper/templates/views/erb/new.html.erb +7 -0
  126. data/lib/generators/tripper/templates/views/erb/show.html.erb +25 -0
  127. data/lib/generators/tripper/templates/views/haml/_form.html.haml +9 -0
  128. data/lib/generators/tripper/templates/views/haml/edit.html.haml +14 -0
  129. data/lib/generators/tripper/templates/views/haml/index.html.haml +25 -0
  130. data/lib/generators/tripper/templates/views/haml/new.html.haml +7 -0
  131. data/lib/generators/tripper/templates/views/haml/show.html.haml +20 -0
  132. data/lib/tripper.rb +1 -0
  133. data/lib/tripper/GOSPLDB/config/database.yml +6 -0
  134. data/lib/tripper/GOSPLDB/config_db.rb +9 -0
  135. data/lib/tripper/GOSPLDB/console +2 -0
  136. data/lib/tripper/GOSPLDB/gospl_db_classes.rb +343 -0
  137. data/lib/tripper/GOSPLDB/play_around.rb +4 -0
  138. data/lib/tripper/GOSPLDB/rakefile.rb +88 -0
  139. data/lib/tripper/GOSPLDBToORMDB/gospl_db_to_orm_db.rb +88 -0
  140. data/lib/tripper/ORMDB/config/database.yml +6 -0
  141. data/lib/tripper/ORMDB/config_db.rb +9 -0
  142. data/lib/tripper/ORMDB/console +2 -0
  143. data/lib/tripper/ORMDB/db/migrations/0_create_orm_object_table.rb +17 -0
  144. data/lib/tripper/ORMDB/db/migrations/10_create_no_lot_constraint_table.rb +17 -0
  145. data/lib/tripper/ORMDB/db/migrations/11_create_value_constraint_table.rb +14 -0
  146. data/lib/tripper/ORMDB/db/migrations/12_create_value_constraint_value_table.rb +16 -0
  147. data/lib/tripper/ORMDB/db/migrations/13_create_value_range_table.rb +15 -0
  148. data/lib/tripper/ORMDB/db/migrations/14_create_frequency_constraint_table.rb +16 -0
  149. data/lib/tripper/ORMDB/db/migrations/15_create_value_table.rb +15 -0
  150. data/lib/tripper/ORMDB/db/migrations/16_create_ring_constraint_table.rb +14 -0
  151. data/lib/tripper/ORMDB/db/migrations/17_create_orm_schema_table.rb +21 -0
  152. data/lib/tripper/ORMDB/db/migrations/18_create_uniqueness_constraint_table.rb +15 -0
  153. data/lib/tripper/ORMDB/db/migrations/1_create_no_lot_table.rb +18 -0
  154. data/lib/tripper/ORMDB/db/migrations/2_create_lot_table.rb +18 -0
  155. data/lib/tripper/ORMDB/db/migrations/3_create_object_role_table.rb +18 -0
  156. data/lib/tripper/ORMDB/db/migrations/4_create_reference_table.rb +17 -0
  157. data/lib/tripper/ORMDB/db/migrations/5_create_predicate_table.rb +18 -0
  158. data/lib/tripper/ORMDB/db/migrations/6_create_object_role_constraint_table.rb +18 -0
  159. data/lib/tripper/ORMDB/db/migrations/7_create_subtype_table.rb +17 -0
  160. data/lib/tripper/ORMDB/db/migrations/8_create_mandatory_constraint_table.rb +15 -0
  161. data/lib/tripper/ORMDB/db/migrations/9_create_constraint_table.rb +15 -0
  162. data/lib/tripper/ORMDB/db/orm_ml.sqlite3 +0 -0
  163. data/lib/tripper/ORMDB/db/orm_ml.sqlite3.backup +0 -0
  164. data/lib/tripper/ORMDB/db/orm_ml.sqlite3.juli28-2013 +0 -0
  165. data/lib/tripper/ORMDB/db/orm_ml.sqlite3.old +0 -0
  166. data/lib/tripper/ORMDB/db/schema.rb +58 -0
  167. data/lib/tripper/ORMDB/erd.pdf +0 -0
  168. data/lib/tripper/ORMDB/migrate_db.rb +21 -0
  169. data/lib/tripper/ORMDB/orm_db_classes.rb +423 -0
  170. data/lib/tripper/ORMDB/populate.rb +4 -0
  171. data/lib/tripper/ORMDB/rakefile.rb +88 -0
  172. data/lib/tripper/model_parsers/attribute_parser/AttributeParser.g +50 -0
  173. data/lib/tripper/model_parsers/attribute_parser/AttributeParser.tokens +13 -0
  174. data/lib/tripper/model_parsers/attribute_parser/AttributeParserLexer.rb +538 -0
  175. data/lib/tripper/model_parsers/attribute_parser/AttributeParserParser.rb +412 -0
  176. data/lib/tripper/model_parsers/attribute_parser/playing_around.rb +14 -0
  177. data/lib/tripper/model_parsers/belongs_to/BelongsToParser.g +63 -0
  178. data/lib/tripper/model_parsers/belongs_to/BelongsToParser.tokens +21 -0
  179. data/lib/tripper/model_parsers/belongs_to/BelongsToParserLexer.rb +667 -0
  180. data/lib/tripper/model_parsers/belongs_to/BelongsToParserParser.rb +552 -0
  181. data/lib/tripper/model_parsers/belongs_to/playing_around.rb +9 -0
  182. data/lib/tripper/model_parsers/database_fields_parser/DatabaseFieldsParser.g +47 -0
  183. data/lib/tripper/model_parsers/database_fields_parser/DatabaseFieldsParser.tokens +14 -0
  184. data/lib/tripper/model_parsers/database_fields_parser/DatabaseFieldsParserLexer.rb +513 -0
  185. data/lib/tripper/model_parsers/database_fields_parser/DatabaseFieldsParserParser.rb +279 -0
  186. data/lib/tripper/model_parsers/database_fields_parser/playing_around.rb +14 -0
  187. data/lib/tripper/model_parsers/has_and_belongs_to_many/HasAndBelongsToManyParser.g +92 -0
  188. data/lib/tripper/model_parsers/has_and_belongs_to_many/HasAndBelongsToManyParser.tokens +25 -0
  189. data/lib/tripper/model_parsers/has_and_belongs_to_many/HasAndBelongsToManyParserLexer.rb +787 -0
  190. data/lib/tripper/model_parsers/has_and_belongs_to_many/HasAndBelongsToManyParserParser.rb +1024 -0
  191. data/lib/tripper/model_parsers/has_and_belongs_to_many/playing_around.rb +9 -0
  192. data/lib/tripper/model_parsers/has_many/HasManyParser.g +77 -0
  193. data/lib/tripper/model_parsers/has_many/HasManyParser.tokens +23 -0
  194. data/lib/tripper/model_parsers/has_many/HasManyParserLexer.rb +710 -0
  195. data/lib/tripper/model_parsers/has_many/HasManyParserParser.rb +788 -0
  196. data/lib/tripper/model_parsers/has_many/playing_around.rb +9 -0
  197. data/lib/tripper/model_parsers/has_one/HasOneParser.g +63 -0
  198. data/lib/tripper/model_parsers/has_one/HasOneParser.tokens +21 -0
  199. data/lib/tripper/model_parsers/has_one/HasOneParserLexer.rb +664 -0
  200. data/lib/tripper/model_parsers/has_one/HasOneParserParser.rb +552 -0
  201. data/lib/tripper/model_parsers/has_one/playing_around.rb +9 -0
  202. data/lib/tripper/model_parsers/validates/ValidatesParser.g +68 -0
  203. data/lib/tripper/model_parsers/validates/ValidatesParser.tokens +35 -0
  204. data/lib/tripper/model_parsers/validates/ValidatesParserLexer.rb +899 -0
  205. data/lib/tripper/model_parsers/validates/ValidatesParserParser.rb +869 -0
  206. data/lib/tripper/model_parsers/validates/playing_around.rb +9 -0
  207. data/lib/tripper/rails.rb +8 -0
  208. data/lib/tripper/version.rb +3 -0
  209. data/tripper.gemspec +33 -0
  210. metadata +408 -0
@@ -0,0 +1,9 @@
1
+ require './HasAndBelongsToManyParserParser'
2
+ require './HasAndBelongsToManyParserLexer'
3
+ @input = ANTLR3::StringStream.new( "has_and_belongs_to_many :communities, class_name: 'Community', foreign_key: :community_id" )
4
+ @lexer = HasAndBelongsToManyParser::Lexer.new(@input)
5
+ @tokens = ANTLR3::CommonTokenStream.new(@lexer)
6
+ @parser = HasAndBelongsToManyParser::Parser.new(@tokens)
7
+ a= @parser.has_and_belongs_to_many
8
+ puts a
9
+ #belongs_to :community, :class_name => 'Community'
@@ -0,0 +1,77 @@
1
+ grammar HasManyParser;
2
+
3
+ options {
4
+ language = Ruby;
5
+ }
6
+
7
+ @header {
8
+ def strip_quotes str
9
+ return str[1,(str.length)-2]
10
+ end
11
+
12
+ @@attribute = nil
13
+ @@class_name = nil
14
+ @@foreign_key = nil
15
+ }
16
+
17
+ @members {
18
+ attr_accessor :attribute, :class_name, :foreign_key
19
+ }
20
+
21
+ comment: COMMENT;
22
+
23
+ has_many returns [expr]: ((c=COMMENT)* | 'has_many' attribute class_name? foreign_key? comment?)
24
+ {
25
+ $expr = {attribute: @attribute, class_name: @class_name, foreign_key: @foreign_key} unless $c
26
+ }
27
+ ;
28
+
29
+ class_name: ',' (class_name_old_syntax | class_name_new_syntax);
30
+
31
+ class_name_old_syntax: ':' 'class_name' '=>' class_name_word
32
+ ;
33
+
34
+ class_name_word: (('\'' a=ATTRIBUTE '\'') | ('"' a=ATTRIBUTE '"') | (':' a=ATTRIBUTE))
35
+ {
36
+ @class_name = $a.text
37
+ }
38
+ ;
39
+
40
+ class_name_new_syntax: 'class_name' ':' class_name_word;
41
+
42
+ foreign_key: ',' (foreign_key_old_syntax | foreign_key_new_syntax);
43
+
44
+ foreign_key_old_syntax: ':' 'foreign_key' '=>' foreign_key_word
45
+ ;
46
+
47
+ foreign_key_word: (('\'' a=ATTRIBUTE '\'') | ('"' a=ATTRIBUTE '"') | (':' a=ATTRIBUTE))
48
+ {
49
+ @foreign_key = $a.text
50
+ }
51
+ ;
52
+
53
+ foreign_key_new_syntax: 'foreign_key' ':' foreign_key_word;
54
+
55
+
56
+ attribute: ('\'' a=ATTRIBUTE '\'') | ('"' a=ATTRIBUTE '"') | (':' a=ATTRIBUTE)
57
+ {
58
+ @attribute = $a.text
59
+ }
60
+ ;
61
+
62
+ //string: STRING;
63
+
64
+ /*------------------------------------------------------------------
65
+ * LEXER RULES
66
+ *------------------------------------------------------------------*/
67
+ //LITERAL: (HC|LC)(HC|LC|'_')*;
68
+ ATTRIBUTE: (HC|LC)(HC|LC|DIGIT|'_')*;
69
+ //LITERAL: (HC|LC)(HC|LC|DIGIT|'_'|'-')*;
70
+ //NUMERICCONSTANT: ('-')? DIGIT+ ('.' DIGIT+)?;
71
+ //STRING: '\'' ACTUALSTRING '\'';
72
+ WHITESPACE: ( '\t' | ' ' | '\r' | '\n'| '\u000C' )+ { $channel = HIDDEN; };
73
+ COMMENT: '#' ~('\n'|'\r')*;
74
+ fragment ACTUALSTRING: ~('\\'|'\'')*;
75
+ fragment DIGIT: '0'..'9';
76
+ fragment HC: 'A'..'Z';
77
+ fragment LC: 'a'..'z';
@@ -0,0 +1,23 @@
1
+ ACTUALSTRING=10
2
+ T__16=16
3
+ HC=6
4
+ T__15=15
5
+ T__18=18
6
+ T__17=17
7
+ T__12=12
8
+ T__11=11
9
+ T__14=14
10
+ T__13=13
11
+ ATTRIBUTE=5
12
+ WHITESPACE=9
13
+ LC=7
14
+ DIGIT=8
15
+ COMMENT=4
16
+ '"'=17
17
+ 'has_many'=11
18
+ ':'=13
19
+ ','=12
20
+ '=>'=15
21
+ 'foreign_key'=18
22
+ 'class_name'=14
23
+ '\''=16
@@ -0,0 +1,710 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # HasManyParser.g
4
+ # --
5
+ # Generated using ANTLR version: 3.2.1-SNAPSHOT Jul 31, 2010 19:34:52
6
+ # Ruby runtime library version: 1.8.11
7
+ # Input grammar file: HasManyParser.g
8
+ # Generated at: 2013-07-28 14:21:15
9
+ #
10
+
11
+ # ~~~> start load path setup
12
+ this_directory = File.expand_path( File.dirname( __FILE__ ) )
13
+ $LOAD_PATH.unshift( this_directory ) unless $LOAD_PATH.include?( this_directory )
14
+
15
+ antlr_load_failed = proc do
16
+ load_path = $LOAD_PATH.map { |dir| ' - ' << dir }.join( $/ )
17
+ raise LoadError, <<-END.strip!
18
+
19
+ Failed to load the ANTLR3 runtime library (version 1.8.11):
20
+
21
+ Ensure the library has been installed on your system and is available
22
+ on the load path. If rubygems is available on your system, this can
23
+ be done with the command:
24
+
25
+ gem install antlr3
26
+
27
+ Current load path:
28
+ #{ load_path }
29
+
30
+ END
31
+ end
32
+
33
+ defined?( ANTLR3 ) or begin
34
+
35
+ # 1: try to load the ruby antlr3 runtime library from the system path
36
+ require 'antlr3'
37
+
38
+ rescue LoadError
39
+
40
+ # 2: try to load rubygems if it isn't already loaded
41
+ defined?( Gem ) or begin
42
+ require 'rubygems'
43
+ rescue LoadError
44
+ antlr_load_failed.call
45
+ end
46
+
47
+ # 3: try to activate the antlr3 gem
48
+ begin
49
+ Gem.activate( 'antlr3', '~> 1.8.11' )
50
+ rescue Gem::LoadError
51
+ antlr_load_failed.call
52
+ end
53
+
54
+ require 'antlr3'
55
+
56
+ end
57
+ # <~~~ end load path setup
58
+
59
+
60
+ module HasManyParser
61
+ # TokenData defines all of the token type integer values
62
+ # as constants, which will be included in all
63
+ # ANTLR-generated recognizers.
64
+ const_defined?( :TokenData ) or TokenData = ANTLR3::TokenScheme.new
65
+
66
+ module TokenData
67
+
68
+ # define the token constants
69
+ define_tokens( :ACTUALSTRING => 10, :T__16 => 16, :T__15 => 15, :HC => 6,
70
+ :T__18 => 18, :T__17 => 17, :T__12 => 12, :T__11 => 11,
71
+ :T__14 => 14, :T__13 => 13, :ATTRIBUTE => 5, :LC => 7,
72
+ :WHITESPACE => 9, :DIGIT => 8, :COMMENT => 4, :EOF => -1 )
73
+
74
+ end
75
+
76
+
77
+ class Lexer < ANTLR3::Lexer
78
+ @grammar_home = HasManyParser
79
+ include TokenData
80
+
81
+
82
+ begin
83
+ generated_using( "HasManyParser.g", "3.2.1-SNAPSHOT Jul 31, 2010 19:34:52", "1.8.11" )
84
+ rescue NoMethodError => error
85
+ # ignore
86
+ end
87
+
88
+ RULE_NAMES = [ "T__11", "T__12", "T__13", "T__14", "T__15", "T__16",
89
+ "T__17", "T__18", "ATTRIBUTE", "WHITESPACE", "COMMENT",
90
+ "ACTUALSTRING", "DIGIT", "HC", "LC" ].freeze
91
+ RULE_METHODS = [ :t__11!, :t__12!, :t__13!, :t__14!, :t__15!, :t__16!,
92
+ :t__17!, :t__18!, :attribute!, :whitespace!, :comment!,
93
+ :actualstring!, :digit!, :hc!, :lc! ].freeze
94
+
95
+
96
+ def initialize( input=nil, options = {} )
97
+ super( input, options )
98
+
99
+ end
100
+
101
+
102
+ # - - - - - - - - - - - lexer rules - - - - - - - - - - - -
103
+ # lexer rule t__11! (T__11)
104
+ # (in HasManyParser.g)
105
+ def t__11!
106
+ # -> uncomment the next line to manually enable rule tracing
107
+ # trace_in( __method__, 1 )
108
+
109
+ type = T__11
110
+ channel = ANTLR3::DEFAULT_CHANNEL
111
+
112
+
113
+ # - - - - main rule block - - - -
114
+ # at line 7:9: 'has_many'
115
+ match( "has_many" )
116
+
117
+
118
+ @state.type = type
119
+ @state.channel = channel
120
+
121
+ ensure
122
+ # -> uncomment the next line to manually enable rule tracing
123
+ # trace_out( __method__, 1 )
124
+
125
+ end
126
+
127
+ # lexer rule t__12! (T__12)
128
+ # (in HasManyParser.g)
129
+ def t__12!
130
+ # -> uncomment the next line to manually enable rule tracing
131
+ # trace_in( __method__, 2 )
132
+
133
+ type = T__12
134
+ channel = ANTLR3::DEFAULT_CHANNEL
135
+
136
+
137
+ # - - - - main rule block - - - -
138
+ # at line 8:9: ','
139
+ match( 0x2c )
140
+
141
+
142
+ @state.type = type
143
+ @state.channel = channel
144
+
145
+ ensure
146
+ # -> uncomment the next line to manually enable rule tracing
147
+ # trace_out( __method__, 2 )
148
+
149
+ end
150
+
151
+ # lexer rule t__13! (T__13)
152
+ # (in HasManyParser.g)
153
+ def t__13!
154
+ # -> uncomment the next line to manually enable rule tracing
155
+ # trace_in( __method__, 3 )
156
+
157
+ type = T__13
158
+ channel = ANTLR3::DEFAULT_CHANNEL
159
+
160
+
161
+ # - - - - main rule block - - - -
162
+ # at line 9:9: ':'
163
+ match( 0x3a )
164
+
165
+
166
+ @state.type = type
167
+ @state.channel = channel
168
+
169
+ ensure
170
+ # -> uncomment the next line to manually enable rule tracing
171
+ # trace_out( __method__, 3 )
172
+
173
+ end
174
+
175
+ # lexer rule t__14! (T__14)
176
+ # (in HasManyParser.g)
177
+ def t__14!
178
+ # -> uncomment the next line to manually enable rule tracing
179
+ # trace_in( __method__, 4 )
180
+
181
+ type = T__14
182
+ channel = ANTLR3::DEFAULT_CHANNEL
183
+
184
+
185
+ # - - - - main rule block - - - -
186
+ # at line 10:9: 'class_name'
187
+ match( "class_name" )
188
+
189
+
190
+ @state.type = type
191
+ @state.channel = channel
192
+
193
+ ensure
194
+ # -> uncomment the next line to manually enable rule tracing
195
+ # trace_out( __method__, 4 )
196
+
197
+ end
198
+
199
+ # lexer rule t__15! (T__15)
200
+ # (in HasManyParser.g)
201
+ def t__15!
202
+ # -> uncomment the next line to manually enable rule tracing
203
+ # trace_in( __method__, 5 )
204
+
205
+ type = T__15
206
+ channel = ANTLR3::DEFAULT_CHANNEL
207
+
208
+
209
+ # - - - - main rule block - - - -
210
+ # at line 11:9: '=>'
211
+ match( "=>" )
212
+
213
+
214
+ @state.type = type
215
+ @state.channel = channel
216
+
217
+ ensure
218
+ # -> uncomment the next line to manually enable rule tracing
219
+ # trace_out( __method__, 5 )
220
+
221
+ end
222
+
223
+ # lexer rule t__16! (T__16)
224
+ # (in HasManyParser.g)
225
+ def t__16!
226
+ # -> uncomment the next line to manually enable rule tracing
227
+ # trace_in( __method__, 6 )
228
+
229
+ type = T__16
230
+ channel = ANTLR3::DEFAULT_CHANNEL
231
+
232
+
233
+ # - - - - main rule block - - - -
234
+ # at line 12:9: '\\''
235
+ match( 0x27 )
236
+
237
+
238
+ @state.type = type
239
+ @state.channel = channel
240
+
241
+ ensure
242
+ # -> uncomment the next line to manually enable rule tracing
243
+ # trace_out( __method__, 6 )
244
+
245
+ end
246
+
247
+ # lexer rule t__17! (T__17)
248
+ # (in HasManyParser.g)
249
+ def t__17!
250
+ # -> uncomment the next line to manually enable rule tracing
251
+ # trace_in( __method__, 7 )
252
+
253
+ type = T__17
254
+ channel = ANTLR3::DEFAULT_CHANNEL
255
+
256
+
257
+ # - - - - main rule block - - - -
258
+ # at line 13:9: '\"'
259
+ match( 0x22 )
260
+
261
+
262
+ @state.type = type
263
+ @state.channel = channel
264
+
265
+ ensure
266
+ # -> uncomment the next line to manually enable rule tracing
267
+ # trace_out( __method__, 7 )
268
+
269
+ end
270
+
271
+ # lexer rule t__18! (T__18)
272
+ # (in HasManyParser.g)
273
+ def t__18!
274
+ # -> uncomment the next line to manually enable rule tracing
275
+ # trace_in( __method__, 8 )
276
+
277
+ type = T__18
278
+ channel = ANTLR3::DEFAULT_CHANNEL
279
+
280
+
281
+ # - - - - main rule block - - - -
282
+ # at line 14:9: 'foreign_key'
283
+ match( "foreign_key" )
284
+
285
+
286
+ @state.type = type
287
+ @state.channel = channel
288
+
289
+ ensure
290
+ # -> uncomment the next line to manually enable rule tracing
291
+ # trace_out( __method__, 8 )
292
+
293
+ end
294
+
295
+ # lexer rule attribute! (ATTRIBUTE)
296
+ # (in HasManyParser.g)
297
+ def attribute!
298
+ # -> uncomment the next line to manually enable rule tracing
299
+ # trace_in( __method__, 9 )
300
+
301
+ type = ATTRIBUTE
302
+ channel = ANTLR3::DEFAULT_CHANNEL
303
+
304
+
305
+ # - - - - main rule block - - - -
306
+ # at line 69:12: ( HC | LC ) ( HC | LC | DIGIT | '_' )*
307
+ if @input.peek( 1 ).between?( 0x41, 0x5a ) || @input.peek( 1 ).between?( 0x61, 0x7a )
308
+ @input.consume
309
+ else
310
+ mse = MismatchedSet( nil )
311
+ recover mse
312
+ raise mse
313
+ end
314
+
315
+
316
+ # at line 69:19: ( HC | LC | DIGIT | '_' )*
317
+ while true # decision 1
318
+ alt_1 = 2
319
+ look_1_0 = @input.peek( 1 )
320
+
321
+ if ( look_1_0.between?( 0x30, 0x39 ) || look_1_0.between?( 0x41, 0x5a ) || look_1_0 == 0x5f || look_1_0.between?( 0x61, 0x7a ) )
322
+ alt_1 = 1
323
+
324
+ end
325
+ case alt_1
326
+ when 1
327
+ # at line
328
+ if @input.peek( 1 ).between?( 0x30, 0x39 ) || @input.peek( 1 ).between?( 0x41, 0x5a ) || @input.peek(1) == 0x5f || @input.peek( 1 ).between?( 0x61, 0x7a )
329
+ @input.consume
330
+ else
331
+ mse = MismatchedSet( nil )
332
+ recover mse
333
+ raise mse
334
+ end
335
+
336
+
337
+
338
+ else
339
+ break # out of loop for decision 1
340
+ end
341
+ end # loop for decision 1
342
+
343
+
344
+ @state.type = type
345
+ @state.channel = channel
346
+
347
+ ensure
348
+ # -> uncomment the next line to manually enable rule tracing
349
+ # trace_out( __method__, 9 )
350
+
351
+ end
352
+
353
+ # lexer rule whitespace! (WHITESPACE)
354
+ # (in HasManyParser.g)
355
+ def whitespace!
356
+ # -> uncomment the next line to manually enable rule tracing
357
+ # trace_in( __method__, 10 )
358
+
359
+ type = WHITESPACE
360
+ channel = ANTLR3::DEFAULT_CHANNEL
361
+
362
+
363
+ # - - - - main rule block - - - -
364
+ # at line 73:13: ( '\\t' | ' ' | '\\r' | '\\n' | '\\u000C' )+
365
+ # at file 73:13: ( '\\t' | ' ' | '\\r' | '\\n' | '\\u000C' )+
366
+ match_count_2 = 0
367
+ while true
368
+ alt_2 = 2
369
+ look_2_0 = @input.peek( 1 )
370
+
371
+ if ( look_2_0.between?( 0x9, 0xa ) || look_2_0.between?( 0xc, 0xd ) || look_2_0 == 0x20 )
372
+ alt_2 = 1
373
+
374
+ end
375
+ case alt_2
376
+ when 1
377
+ # at line
378
+ if @input.peek( 1 ).between?( 0x9, 0xa ) || @input.peek( 1 ).between?( 0xc, 0xd ) || @input.peek(1) == 0x20
379
+ @input.consume
380
+ else
381
+ mse = MismatchedSet( nil )
382
+ recover mse
383
+ raise mse
384
+ end
385
+
386
+
387
+
388
+ else
389
+ match_count_2 > 0 and break
390
+ eee = EarlyExit(2)
391
+
392
+
393
+ raise eee
394
+ end
395
+ match_count_2 += 1
396
+ end
397
+
398
+ # --> action
399
+ channel = HIDDEN;
400
+ # <-- action
401
+
402
+
403
+ @state.type = type
404
+ @state.channel = channel
405
+
406
+ ensure
407
+ # -> uncomment the next line to manually enable rule tracing
408
+ # trace_out( __method__, 10 )
409
+
410
+ end
411
+
412
+ # lexer rule comment! (COMMENT)
413
+ # (in HasManyParser.g)
414
+ def comment!
415
+ # -> uncomment the next line to manually enable rule tracing
416
+ # trace_in( __method__, 11 )
417
+
418
+ type = COMMENT
419
+ channel = ANTLR3::DEFAULT_CHANNEL
420
+
421
+
422
+ # - - - - main rule block - - - -
423
+ # at line 74:10: '#' (~ ( '\\n' | '\\r' ) )*
424
+ match( 0x23 )
425
+ # at line 74:14: (~ ( '\\n' | '\\r' ) )*
426
+ while true # decision 3
427
+ alt_3 = 2
428
+ look_3_0 = @input.peek( 1 )
429
+
430
+ if ( look_3_0.between?( 0x0, 0x9 ) || look_3_0.between?( 0xb, 0xc ) || look_3_0.between?( 0xe, 0xffff ) )
431
+ alt_3 = 1
432
+
433
+ end
434
+ case alt_3
435
+ when 1
436
+ # at line 74:14: ~ ( '\\n' | '\\r' )
437
+ if @input.peek( 1 ).between?( 0x0, 0x9 ) || @input.peek( 1 ).between?( 0xb, 0xc ) || @input.peek( 1 ).between?( 0xe, 0xff )
438
+ @input.consume
439
+ else
440
+ mse = MismatchedSet( nil )
441
+ recover mse
442
+ raise mse
443
+ end
444
+
445
+
446
+
447
+ else
448
+ break # out of loop for decision 3
449
+ end
450
+ end # loop for decision 3
451
+
452
+
453
+ @state.type = type
454
+ @state.channel = channel
455
+
456
+ ensure
457
+ # -> uncomment the next line to manually enable rule tracing
458
+ # trace_out( __method__, 11 )
459
+
460
+ end
461
+
462
+ # lexer rule actualstring! (ACTUALSTRING)
463
+ # (in HasManyParser.g)
464
+ def actualstring!
465
+ # -> uncomment the next line to manually enable rule tracing
466
+ # trace_in( __method__, 12 )
467
+
468
+
469
+ # - - - - main rule block - - - -
470
+ # at line 75:24: (~ ( '\\\\' | '\\'' ) )*
471
+ # at line 75:24: (~ ( '\\\\' | '\\'' ) )*
472
+ while true # decision 4
473
+ alt_4 = 2
474
+ look_4_0 = @input.peek( 1 )
475
+
476
+ if ( look_4_0.between?( 0x0, 0x26 ) || look_4_0.between?( 0x28, 0x5b ) || look_4_0.between?( 0x5d, 0xffff ) )
477
+ alt_4 = 1
478
+
479
+ end
480
+ case alt_4
481
+ when 1
482
+ # at line 75:24: ~ ( '\\\\' | '\\'' )
483
+ if @input.peek( 1 ).between?( 0x0, 0x26 ) || @input.peek( 1 ).between?( 0x28, 0x5b ) || @input.peek( 1 ).between?( 0x5d, 0xff )
484
+ @input.consume
485
+ else
486
+ mse = MismatchedSet( nil )
487
+ recover mse
488
+ raise mse
489
+ end
490
+
491
+
492
+
493
+ else
494
+ break # out of loop for decision 4
495
+ end
496
+ end # loop for decision 4
497
+
498
+ ensure
499
+ # -> uncomment the next line to manually enable rule tracing
500
+ # trace_out( __method__, 12 )
501
+
502
+ end
503
+
504
+ # lexer rule digit! (DIGIT)
505
+ # (in HasManyParser.g)
506
+ def digit!
507
+ # -> uncomment the next line to manually enable rule tracing
508
+ # trace_in( __method__, 13 )
509
+
510
+
511
+ # - - - - main rule block - - - -
512
+ # at line 76:17: '0' .. '9'
513
+ match_range( 0x30, 0x39 )
514
+
515
+ ensure
516
+ # -> uncomment the next line to manually enable rule tracing
517
+ # trace_out( __method__, 13 )
518
+
519
+ end
520
+
521
+ # lexer rule hc! (HC)
522
+ # (in HasManyParser.g)
523
+ def hc!
524
+ # -> uncomment the next line to manually enable rule tracing
525
+ # trace_in( __method__, 14 )
526
+
527
+
528
+ # - - - - main rule block - - - -
529
+ # at line 77:14: 'A' .. 'Z'
530
+ match_range( 0x41, 0x5a )
531
+
532
+ ensure
533
+ # -> uncomment the next line to manually enable rule tracing
534
+ # trace_out( __method__, 14 )
535
+
536
+ end
537
+
538
+ # lexer rule lc! (LC)
539
+ # (in HasManyParser.g)
540
+ def lc!
541
+ # -> uncomment the next line to manually enable rule tracing
542
+ # trace_in( __method__, 15 )
543
+
544
+
545
+ # - - - - main rule block - - - -
546
+ # at line 78:14: 'a' .. 'z'
547
+ match_range( 0x61, 0x7a )
548
+
549
+ ensure
550
+ # -> uncomment the next line to manually enable rule tracing
551
+ # trace_out( __method__, 15 )
552
+
553
+ end
554
+
555
+ # main rule used to study the input at the current position,
556
+ # and choose the proper lexer rule to call in order to
557
+ # fetch the next token
558
+ #
559
+ # usually, you don't make direct calls to this method,
560
+ # but instead use the next_token method, which will
561
+ # build and emit the actual next token
562
+ def token!
563
+ # at line 1:8: ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | ATTRIBUTE | WHITESPACE | COMMENT )
564
+ alt_5 = 11
565
+ alt_5 = @dfa5.predict( @input )
566
+ case alt_5
567
+ when 1
568
+ # at line 1:10: T__11
569
+ t__11!
570
+
571
+ when 2
572
+ # at line 1:16: T__12
573
+ t__12!
574
+
575
+ when 3
576
+ # at line 1:22: T__13
577
+ t__13!
578
+
579
+ when 4
580
+ # at line 1:28: T__14
581
+ t__14!
582
+
583
+ when 5
584
+ # at line 1:34: T__15
585
+ t__15!
586
+
587
+ when 6
588
+ # at line 1:40: T__16
589
+ t__16!
590
+
591
+ when 7
592
+ # at line 1:46: T__17
593
+ t__17!
594
+
595
+ when 8
596
+ # at line 1:52: T__18
597
+ t__18!
598
+
599
+ when 9
600
+ # at line 1:58: ATTRIBUTE
601
+ attribute!
602
+
603
+ when 10
604
+ # at line 1:68: WHITESPACE
605
+ whitespace!
606
+
607
+ when 11
608
+ # at line 1:79: COMMENT
609
+ comment!
610
+
611
+ end
612
+ end
613
+
614
+
615
+ # - - - - - - - - - - DFA definitions - - - - - - - - - - -
616
+ class DFA5 < ANTLR3::DFA
617
+ EOT = unpack( 1, -1, 1, 9, 2, -1, 1, 9, 3, -1, 1, 9, 3, -1, 18, 9,
618
+ 1, 33, 2, 9, 1, -1, 2, 9, 1, 38, 1, 9, 1, -1, 1, 40,
619
+ 1, -1 )
620
+ EOF = unpack( 41, -1 )
621
+ MIN = unpack( 1, 9, 1, 97, 2, -1, 1, 108, 3, -1, 1, 111, 3, -1, 1,
622
+ 115, 1, 97, 1, 114, 1, 95, 1, 115, 1, 101, 1, 109, 1,
623
+ 115, 1, 105, 1, 97, 1, 95, 1, 103, 3, 110, 1, 121, 1,
624
+ 97, 1, 95, 1, 48, 1, 109, 1, 107, 1, -1, 2, 101, 1,
625
+ 48, 1, 121, 1, -1, 1, 48, 1, -1 )
626
+ MAX = unpack( 1, 122, 1, 97, 2, -1, 1, 108, 3, -1, 1, 111, 3, -1,
627
+ 1, 115, 1, 97, 1, 114, 1, 95, 1, 115, 1, 101, 1, 109,
628
+ 1, 115, 1, 105, 1, 97, 1, 95, 1, 103, 3, 110, 1, 121,
629
+ 1, 97, 1, 95, 1, 122, 1, 109, 1, 107, 1, -1, 2, 101,
630
+ 1, 122, 1, 121, 1, -1, 1, 122, 1, -1 )
631
+ ACCEPT = unpack( 2, -1, 1, 2, 1, 3, 1, -1, 1, 5, 1, 6, 1, 7, 1, -1,
632
+ 1, 9, 1, 10, 1, 11, 21, -1, 1, 1, 4, -1, 1, 4, 1,
633
+ -1, 1, 8 )
634
+ SPECIAL = unpack( 41, -1 )
635
+ TRANSITION = [
636
+ unpack( 2, 10, 1, -1, 2, 10, 18, -1, 1, 10, 1, -1, 1, 7, 1, 11,
637
+ 3, -1, 1, 6, 4, -1, 1, 2, 13, -1, 1, 3, 2, -1, 1, 5, 3,
638
+ -1, 26, 9, 6, -1, 2, 9, 1, 4, 2, 9, 1, 8, 1, 9, 1, 1, 18,
639
+ 9 ),
640
+ unpack( 1, 12 ),
641
+ unpack( ),
642
+ unpack( ),
643
+ unpack( 1, 13 ),
644
+ unpack( ),
645
+ unpack( ),
646
+ unpack( ),
647
+ unpack( 1, 14 ),
648
+ unpack( ),
649
+ unpack( ),
650
+ unpack( ),
651
+ unpack( 1, 15 ),
652
+ unpack( 1, 16 ),
653
+ unpack( 1, 17 ),
654
+ unpack( 1, 18 ),
655
+ unpack( 1, 19 ),
656
+ unpack( 1, 20 ),
657
+ unpack( 1, 21 ),
658
+ unpack( 1, 22 ),
659
+ unpack( 1, 23 ),
660
+ unpack( 1, 24 ),
661
+ unpack( 1, 25 ),
662
+ unpack( 1, 26 ),
663
+ unpack( 1, 27 ),
664
+ unpack( 1, 28 ),
665
+ unpack( 1, 29 ),
666
+ unpack( 1, 30 ),
667
+ unpack( 1, 31 ),
668
+ unpack( 1, 32 ),
669
+ unpack( 10, 9, 7, -1, 26, 9, 4, -1, 1, 9, 1, -1, 26, 9 ),
670
+ unpack( 1, 34 ),
671
+ unpack( 1, 35 ),
672
+ unpack( ),
673
+ unpack( 1, 36 ),
674
+ unpack( 1, 37 ),
675
+ unpack( 10, 9, 7, -1, 26, 9, 4, -1, 1, 9, 1, -1, 26, 9 ),
676
+ unpack( 1, 39 ),
677
+ unpack( ),
678
+ unpack( 10, 9, 7, -1, 26, 9, 4, -1, 1, 9, 1, -1, 26, 9 ),
679
+ unpack( )
680
+ ].freeze
681
+
682
+ ( 0 ... MIN.length ).zip( MIN, MAX ) do | i, a, z |
683
+ if a > 0 and z < 0
684
+ MAX[ i ] %= 0x10000
685
+ end
686
+ end
687
+
688
+ @decision = 5
689
+
690
+
691
+ def description
692
+ <<-'__dfa_description__'.strip!
693
+ 1:1: Tokens : ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | ATTRIBUTE | WHITESPACE | COMMENT );
694
+ __dfa_description__
695
+ end
696
+ end
697
+
698
+
699
+ private
700
+
701
+ def initialize_dfas
702
+ super rescue nil
703
+ @dfa5 = DFA5.new( self, 5 )
704
+
705
+ end
706
+ end # class Lexer < ANTLR3::Lexer
707
+
708
+ at_exit { Lexer.main( ARGV ) } if __FILE__ == $0
709
+ end
710
+