graphql 1.8.12 → 1.8.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/lib/graphql/language/lexer.rb +14 -14
- data/lib/graphql/language/lexer.rl +2 -2
- data/lib/graphql/version.rb +1 -1
- data/spec/graphql/language/lexer_spec.rb +8 -0
- data/spec/integration/tmp/app/graphql/types/bird_type.rb +7 -0
- data/spec/integration/tmp/dummy/Gemfile +34 -29
- data/spec/integration/tmp/dummy/README.rdoc +15 -248
- data/spec/integration/tmp/dummy/Rakefile +1 -2
- data/spec/integration/tmp/dummy/app/assets/javascripts/application.js +5 -4
- data/spec/integration/tmp/dummy/app/assets/stylesheets/application.css +6 -4
- data/spec/integration/tmp/dummy/app/controllers/application_controller.rb +3 -1
- data/spec/integration/tmp/dummy/app/views/layouts/application.html.erb +2 -2
- data/spec/integration/tmp/dummy/bin/bundle +3 -0
- data/spec/integration/tmp/dummy/bin/rails +4 -0
- data/spec/integration/tmp/dummy/bin/rake +4 -0
- data/spec/integration/tmp/dummy/bin/setup +29 -0
- data/spec/integration/tmp/dummy/config.ru +2 -2
- data/spec/integration/tmp/dummy/config/application.rb +7 -43
- data/spec/integration/tmp/dummy/config/boot.rb +1 -4
- data/spec/integration/tmp/dummy/config/environment.rb +3 -3
- data/spec/integration/tmp/dummy/config/environments/development.rb +20 -13
- data/spec/integration/tmp/dummy/config/environments/production.rb +43 -31
- data/spec/integration/tmp/dummy/config/environments/test.rb +19 -12
- data/spec/integration/tmp/dummy/config/initializers/assets.rb +11 -0
- data/spec/integration/tmp/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/spec/integration/tmp/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/integration/tmp/dummy/config/initializers/inflections.rb +6 -5
- data/spec/integration/tmp/dummy/config/initializers/mime_types.rb +0 -1
- data/spec/integration/tmp/dummy/config/initializers/session_store.rb +1 -6
- data/spec/integration/tmp/dummy/config/initializers/to_time_preserves_timezone.rb +10 -0
- data/spec/integration/tmp/dummy/config/initializers/wrap_parameters.rb +2 -3
- data/spec/integration/tmp/dummy/config/locales/en.yml +20 -2
- data/spec/integration/tmp/dummy/config/routes.rb +22 -26
- data/spec/integration/tmp/dummy/config/secrets.yml +22 -0
- data/spec/integration/tmp/dummy/public/404.html +54 -13
- data/spec/integration/tmp/dummy/public/422.html +54 -13
- data/spec/integration/tmp/dummy/public/500.html +53 -12
- data/spec/integration/tmp/dummy/public/robots.txt +2 -2
- metadata +23 -30
- data/spec/integration/tmp/app/graphql/types/winged_creature_type.rb +0 -4
- data/spec/integration/tmp/dummy/app/assets/images/rails.png +0 -0
- data/spec/integration/tmp/dummy/config/initializers/secret_token.rb +0 -7
- data/spec/integration/tmp/dummy/doc/README_FOR_APP +0 -2
- data/spec/integration/tmp/dummy/public/index.html +0 -241
- data/spec/integration/tmp/dummy/script/rails +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e7d0514259aea13c063dc200684fbbed9baaa700347a8d43c0d5f10cbdd1479c
|
4
|
+
data.tar.gz: fa06f40049b2b3f7d1c17363ec6a0af93bf3aa884e9a2ce8cc318eddee11ae47
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5ae45f893d360fe740aa33f5094b1b69092f06fa121ed09233b7b29d65bcb2e2811e2fbf387536c785bff39bcca672ad695ea449cb2144f228e6a89a92bde30a
|
7
|
+
data.tar.gz: 4c1a37657cade8b49502cdb3eca8e55f53466f241e4913cd83af927a729fd9da64e6ee3e492bd40cb4d1c1567108856752445e2934d876473e80e54b90adad5a
|
@@ -20,7 +20,7 @@ class << self
|
|
20
20
|
private :_graphql_lexer_trans_keys, :_graphql_lexer_trans_keys=
|
21
21
|
end
|
22
22
|
self._graphql_lexer_trans_keys = [
|
23
|
-
4, 21, 4, 21, 4, 21, 4, 4, 4,
|
23
|
+
4, 21, 4, 21, 4, 21, 4, 4, 4, 4, 4, 21, 4, 4, 4, 4, 13, 14, 13, 14, 10, 14, 12, 12, 0, 47, 0, 0, 4, 21, 4, 21, 4, 4, 4, 4, 4, 4, 4, 21, 4, 4, 4, 4, 1, 1, 13, 14, 10, 27, 13, 14, 10, 27, 10, 27, 12, 12, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 0 ,
|
24
24
|
]
|
25
25
|
|
26
26
|
class << self
|
@@ -36,7 +36,7 @@ class << self
|
|
36
36
|
private :_graphql_lexer_index_offsets, :_graphql_lexer_index_offsets=
|
37
37
|
end
|
38
38
|
self._graphql_lexer_index_offsets = [
|
39
|
-
0, 18, 36, 54, 55,
|
39
|
+
0, 18, 36, 54, 55, 56, 74, 75, 76, 78, 80, 85, 86, 134, 135, 153, 171, 172, 173, 174, 192, 193, 194, 195, 197, 215, 217, 235, 253, 254, 286, 318, 350, 382, 414, 446, 478, 510, 542, 574, 606, 638, 670, 702, 734, 766, 798, 830, 862, 894, 926, 958, 990, 1022, 1054, 1086, 1118, 1150, 1182, 1214, 1246, 1278, 1310, 1342, 1374, 1406, 1438, 1470, 1502, 1534, 1566, 1598, 1630, 1662, 1694, 1726, 1758, 1790, 1822, 1854, 1886, 1918, 1950, 1982, 2014, 2046, 2078, 2110, 2142, 2174, 2206, 2238, 2270, 2302, 2334, 2366, 2398, 2430, 2462, 2494, 2526, 2558, 2590, 2622, 2654, 2686, 2718, 2750, 2782, 2814, 2846, 2878, 2910, 2942, 2974, 0 ,
|
40
40
|
]
|
41
41
|
|
42
42
|
class << self
|
@@ -44,7 +44,7 @@ class << self
|
|
44
44
|
private :_graphql_lexer_indicies, :_graphql_lexer_indicies=
|
45
45
|
end
|
46
46
|
self._graphql_lexer_indicies = [
|
47
|
-
2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 9, 10, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 11, 12, 13, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 14, 15, 12, 16, 16, 18, 18, 19, 19, 0, 16, 16, 21, 23, 24, 22, 25, 26, 27, 28, 29, 30, 31, 22, 32, 33, 34, 35, 36, 37, 38, 39, 39, 40, 22, 41, 39, 39, 39, 42, 43, 44, 39, 39, 45, 39, 46, 47, 48, 39, 49, 39, 50, 51, 52, 39, 39, 39, 53, 54, 55, 23, 58, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 5, 61, 62, 63, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 64, 12, 65, 34, 35, 19, 19, 67, 16, 16, 66, 66, 66, 66, 68, 66, 66, 66, 66, 66, 66, 66, 68, 16, 16, 19, 19, 69, 18, 18, 69, 69, 69, 69, 68, 69, 69, 69, 69, 69, 69, 69, 68, 19, 19, 67, 35, 35, 66, 66, 66, 66, 68, 66, 66, 66, 66, 66, 66, 66, 68, 70, 39, 39, 0, 0, 0, 39, 39, 0, 0, 0, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 72, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 73, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 74, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 75, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 76, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 77, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 78, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 79, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 80, 39, 39, 39, 39, 39, 39, 39, 39, 81, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 82, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 83, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 84, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 85, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 86, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 87, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 88, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 89, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 90, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 91, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 92, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 93, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 94, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 95, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 96, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 97, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 98, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 99, 100, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 101, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 102, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 103, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 104, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 105, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 106, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 107, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 108, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 109, 39, 39, 39, 110, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 111, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 112, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 113, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 114, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 115, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 116, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 117, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 118, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 119, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 120, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 121, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 122, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 123, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 124, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 125, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 126, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 127, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 128, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 129, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 130, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 131, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 132, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 133, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 134, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 135, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 136, 39, 39, 39, 39, 39, 39, 137, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 138, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 139, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 140, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 141, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 142, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 143, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 144, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 145, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 146, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 147, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 148, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 149, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 150, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 151, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 152, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 153, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 154, 39, 39, 39, 39, 39, 155, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 156, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 157, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 158, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 159, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 160, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 161, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 162, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 71, 71, 71, 39, 39, 71, 71, 71, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 163, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 0 ,
|
47
|
+
2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 8, 9, 10, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 11, 12, 13, 13, 15, 15, 16, 16, 0, 13, 13, 18, 20, 21, 19, 22, 23, 24, 25, 26, 27, 28, 19, 29, 30, 31, 32, 33, 34, 35, 36, 36, 37, 19, 38, 36, 36, 36, 39, 40, 41, 36, 36, 42, 36, 43, 44, 45, 36, 46, 36, 47, 48, 49, 36, 36, 36, 50, 51, 52, 20, 55, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 5, 58, 59, 60, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 61, 9, 62, 31, 32, 16, 16, 64, 13, 13, 63, 63, 63, 63, 65, 63, 63, 63, 63, 63, 63, 63, 65, 13, 13, 16, 16, 66, 15, 15, 66, 66, 66, 66, 65, 66, 66, 66, 66, 66, 66, 66, 65, 16, 16, 64, 32, 32, 63, 63, 63, 63, 65, 63, 63, 63, 63, 63, 63, 63, 65, 67, 36, 36, 0, 0, 0, 36, 36, 0, 0, 0, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 69, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 70, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 71, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 72, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 73, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 74, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 75, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 76, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 77, 36, 36, 36, 36, 36, 36, 36, 36, 78, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 79, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 80, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 81, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 82, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 83, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 84, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 85, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 86, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 87, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 88, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 89, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 90, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 91, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 92, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 93, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 94, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 95, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 96, 97, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 98, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 99, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 100, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 101, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 102, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 103, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 104, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 105, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 106, 36, 36, 36, 107, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 108, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 109, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 110, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 111, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 112, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 113, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 114, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 115, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 116, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 117, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 118, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 119, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 120, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 121, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 122, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 123, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 124, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 125, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 126, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 127, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 128, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 129, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 130, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 131, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 132, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 133, 36, 36, 36, 36, 36, 36, 134, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 135, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 136, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 137, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 138, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 139, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 140, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 141, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 142, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 143, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 144, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 145, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 146, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 147, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 148, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 149, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 150, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 151, 36, 36, 36, 36, 36, 152, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 153, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 154, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 155, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 156, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 157, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 158, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 159, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 160, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 0 ,
|
48
48
|
]
|
49
49
|
|
50
50
|
class << self
|
@@ -52,7 +52,7 @@ class << self
|
|
52
52
|
private :_graphql_lexer_index_defaults, :_graphql_lexer_index_defaults=
|
53
53
|
end
|
54
54
|
self._graphql_lexer_index_defaults = [
|
55
|
-
1, 1, 5,
|
55
|
+
1, 1, 5, 5, 5, 5, 5, 5, 0, 14, 0, 17, 19, 53, 1, 1, 56, 57, 57, 5, 5, 5, 24, 54, 63, 66, 66, 63, 54, 0, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 0 ,
|
56
56
|
]
|
57
57
|
|
58
58
|
class << self
|
@@ -60,7 +60,7 @@ class << self
|
|
60
60
|
private :_graphql_lexer_trans_cond_spaces, :_graphql_lexer_trans_cond_spaces=
|
61
61
|
end
|
62
62
|
self._graphql_lexer_trans_cond_spaces = [
|
63
|
-
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
63
|
+
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0 ,
|
64
64
|
]
|
65
65
|
|
66
66
|
class << self
|
@@ -68,7 +68,7 @@ class << self
|
|
68
68
|
private :_graphql_lexer_cond_targs, :_graphql_lexer_cond_targs=
|
69
69
|
end
|
70
70
|
self._graphql_lexer_cond_targs = [
|
71
|
-
|
71
|
+
12, 0, 12, 1, 15, 2, 3, 5, 4, 17, 6, 7, 19, 25, 12, 26, 8, 12, 12, 12, 13, 12, 12, 14, 22, 12, 12, 12, 12, 23, 28, 24, 27, 12, 12, 12, 29, 12, 12, 30, 38, 45, 55, 73, 80, 83, 84, 88, 106, 111, 12, 12, 12, 12, 12, 16, 12, 12, 18, 12, 20, 21, 12, 12, 9, 10, 12, 11, 12, 31, 32, 33, 34, 35, 36, 37, 29, 39, 41, 40, 29, 42, 43, 44, 29, 46, 49, 47, 48, 29, 50, 51, 52, 53, 54, 29, 56, 64, 57, 58, 59, 60, 61, 62, 63, 29, 65, 67, 66, 29, 68, 69, 70, 71, 72, 29, 74, 75, 76, 77, 78, 79, 29, 81, 82, 29, 29, 85, 86, 87, 29, 89, 96, 90, 93, 91, 92, 29, 94, 95, 29, 97, 98, 99, 100, 101, 102, 103, 104, 105, 29, 107, 109, 108, 29, 110, 29, 112, 113, 114, 29, 0 ,
|
72
72
|
]
|
73
73
|
|
74
74
|
class << self
|
@@ -76,7 +76,7 @@ class << self
|
|
76
76
|
private :_graphql_lexer_cond_actions, :_graphql_lexer_cond_actions=
|
77
77
|
end
|
78
78
|
self._graphql_lexer_cond_actions = [
|
79
|
-
1, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0,
|
79
|
+
1, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 5, 6, 0, 7, 8, 11, 0, 12, 13, 14, 0, 15, 16, 17, 18, 0, 19, 20, 20, 21, 22, 23, 24, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, 31, 3, 32, 33, 0, 34, 4, 4, 35, 36, 0, 0, 37, 0, 38, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 48, 49, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 51, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 54, 0, 55, 0, 0, 0, 56, 0 ,
|
80
80
|
]
|
81
81
|
|
82
82
|
class << self
|
@@ -84,7 +84,7 @@ class << self
|
|
84
84
|
private :_graphql_lexer_to_state_actions, :_graphql_lexer_to_state_actions=
|
85
85
|
end
|
86
86
|
self._graphql_lexer_to_state_actions = [
|
87
|
-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
87
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,
|
88
88
|
]
|
89
89
|
|
90
90
|
class << self
|
@@ -92,7 +92,7 @@ class << self
|
|
92
92
|
private :_graphql_lexer_from_state_actions, :_graphql_lexer_from_state_actions=
|
93
93
|
end
|
94
94
|
self._graphql_lexer_from_state_actions = [
|
95
|
-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
95
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,
|
96
96
|
]
|
97
97
|
|
98
98
|
class << self
|
@@ -100,7 +100,7 @@ class << self
|
|
100
100
|
private :_graphql_lexer_eof_trans, :_graphql_lexer_eof_trans=
|
101
101
|
end
|
102
102
|
self._graphql_lexer_eof_trans = [
|
103
|
-
1, 1, 1, 1, 1, 1, 1, 1, 1,
|
103
|
+
1, 1, 1, 1, 1, 1, 1, 1, 1, 15, 1, 18, 0, 54, 55, 57, 57, 58, 58, 58, 58, 58, 63, 55, 64, 67, 67, 64, 55, 1, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 0 ,
|
104
104
|
]
|
105
105
|
|
106
106
|
class << self
|
@@ -116,7 +116,7 @@ class << self
|
|
116
116
|
private :_graphql_lexer_nfa_offsets, :_graphql_lexer_nfa_offsets=
|
117
117
|
end
|
118
118
|
self._graphql_lexer_nfa_offsets = [
|
119
|
-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
119
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,
|
120
120
|
]
|
121
121
|
|
122
122
|
class << self
|
@@ -138,12 +138,12 @@ self._graphql_lexer_nfa_pop_trans = [
|
|
138
138
|
class << self
|
139
139
|
attr_accessor :graphql_lexer_start
|
140
140
|
end
|
141
|
-
self.graphql_lexer_start =
|
141
|
+
self.graphql_lexer_start = 12;
|
142
142
|
|
143
143
|
class << self
|
144
144
|
attr_accessor :graphql_lexer_first_final
|
145
145
|
end
|
146
|
-
self.graphql_lexer_first_final =
|
146
|
+
self.graphql_lexer_first_final = 12;
|
147
147
|
|
148
148
|
class << self
|
149
149
|
attr_accessor :graphql_lexer_error
|
@@ -153,7 +153,7 @@ self.graphql_lexer_error = -1;
|
|
153
153
|
class << self
|
154
154
|
attr_accessor :graphql_lexer_en_main
|
155
155
|
end
|
156
|
-
self.graphql_lexer_en_main =
|
156
|
+
self.graphql_lexer_en_main = 12;
|
157
157
|
|
158
158
|
def self.run_lexer(query_string)
|
159
159
|
data = query_string.unpack("c*")
|
@@ -37,7 +37,7 @@
|
|
37
37
|
QUOTE = '"';
|
38
38
|
BLOCK_QUOTE = '"""';
|
39
39
|
ESCAPED_BLOCK_QUOTE = '\\"""';
|
40
|
-
BLOCK_STRING_CHAR = (ESCAPED_BLOCK_QUOTE | ^QUOTE |
|
40
|
+
BLOCK_STRING_CHAR = (ESCAPED_BLOCK_QUOTE | ^QUOTE | QUOTE{1,2} ^QUOTE);
|
41
41
|
ESCAPED_QUOTE = '\\"';
|
42
42
|
STRING_CHAR = (ESCAPED_QUOTE | ^QUOTE);
|
43
43
|
VAR_SIGN = '$';
|
@@ -49,7 +49,7 @@
|
|
49
49
|
AMP = '&';
|
50
50
|
|
51
51
|
QUOTED_STRING = QUOTE STRING_CHAR* QUOTE;
|
52
|
-
BLOCK_STRING = BLOCK_QUOTE
|
52
|
+
BLOCK_STRING = BLOCK_QUOTE BLOCK_STRING_CHAR* QUOTE{0,2} BLOCK_QUOTE;
|
53
53
|
# catch-all for anything else. must be at the bottom for precedence.
|
54
54
|
UNKNOWN_CHAR = /./;
|
55
55
|
|
data/lib/graphql/version.rb
CHANGED
@@ -45,6 +45,14 @@ describe GraphQL::Language::Lexer do
|
|
45
45
|
assert_equal '""', tokens[0].value # first 8 quotes are a valid block string """"""""
|
46
46
|
assert_equal '', tokens[1].value # last 2 quotes are a valid string ""
|
47
47
|
end
|
48
|
+
|
49
|
+
it "tokenizes with nested single quote strings correctly" do
|
50
|
+
tokens = subject.tokenize('"""{"x"}"""')
|
51
|
+
assert_equal '{"x"}', tokens[0].value
|
52
|
+
|
53
|
+
tokens = subject.tokenize('"""{"foo":"bar"}"""')
|
54
|
+
assert_equal '{"foo":"bar"}', tokens[0].value
|
55
|
+
end
|
48
56
|
end
|
49
57
|
|
50
58
|
it "unescapes escaped characters" do
|
@@ -1,40 +1,45 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
gem 'rails', '3.2.22.5'
|
4
|
-
|
5
|
-
# Bundle edge Rails instead:
|
6
|
-
# gem 'rails', :git => 'git://github.com/rails/rails.git'
|
7
3
|
|
4
|
+
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
|
5
|
+
gem 'rails', '4.2.10'
|
6
|
+
# Use SCSS for stylesheets
|
7
|
+
gem 'sass-rails', '~> 5.0'
|
8
|
+
# Use Uglifier as compressor for JavaScript assets
|
9
|
+
gem 'uglifier', '>= 1.3.0'
|
10
|
+
# Use CoffeeScript for .coffee assets and views
|
11
|
+
gem 'coffee-rails', '~> 4.1.0'
|
12
|
+
# See https://github.com/rails/execjs#readme for more supported runtimes
|
13
|
+
# gem 'therubyracer', platforms: :ruby
|
14
|
+
|
15
|
+
# Use jquery as the JavaScript library
|
16
|
+
gem 'jquery-rails'
|
17
|
+
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
|
18
|
+
gem 'turbolinks'
|
19
|
+
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
|
20
|
+
gem 'jbuilder', '~> 2.0'
|
21
|
+
# bundle exec rake doc:rails generates the API under doc/api.
|
22
|
+
gem 'sdoc', '~> 0.4.0', group: :doc
|
8
23
|
|
24
|
+
# Use ActiveModel has_secure_password
|
25
|
+
# gem 'bcrypt', '~> 3.1.7'
|
9
26
|
|
10
|
-
#
|
11
|
-
#
|
12
|
-
group :assets do
|
13
|
-
gem 'sass-rails', '~> 3.2.3'
|
14
|
-
gem 'coffee-rails', '~> 3.2.1'
|
27
|
+
# Use Unicorn as the app server
|
28
|
+
# gem 'unicorn'
|
15
29
|
|
16
|
-
|
17
|
-
|
30
|
+
# Use Capistrano for deployment
|
31
|
+
# gem 'capistrano-rails', group: :development
|
18
32
|
|
19
|
-
|
33
|
+
group :development, :test do
|
34
|
+
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
|
35
|
+
gem 'byebug'
|
20
36
|
end
|
21
37
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
# To use Jbuilder templates for JSON
|
28
|
-
# gem 'jbuilder'
|
29
|
-
|
30
|
-
# Use unicorn as the app server
|
31
|
-
# gem 'unicorn'
|
32
|
-
|
33
|
-
# Deploy with Capistrano
|
34
|
-
# gem 'capistrano'
|
38
|
+
group :development do
|
39
|
+
# Access an IRB console on exception pages or by using <%= console %> in views
|
40
|
+
gem 'web-console', '~> 2.0'
|
41
|
+
end
|
35
42
|
|
36
|
-
# To use debugger
|
37
|
-
# gem 'debugger'
|
38
43
|
|
39
|
-
gem
|
40
|
-
gem
|
44
|
+
gem 'graphql-batch'
|
45
|
+
gem 'graphiql-rails', group: :development
|
@@ -1,261 +1,28 @@
|
|
1
|
-
==
|
1
|
+
== README
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
This README would normally document whatever steps are necessary to get the
|
4
|
+
application up and running.
|
5
5
|
|
6
|
-
|
7
|
-
templates that are primarily responsible for inserting pre-built data in between
|
8
|
-
HTML tags. The model contains the "smart" domain objects (such as Account,
|
9
|
-
Product, Person, Post) that holds all the business logic and knows how to
|
10
|
-
persist themselves to a database. The controller handles the incoming requests
|
11
|
-
(such as Save New Account, Update Product, Show Post) by manipulating the model
|
12
|
-
and directing data to the view.
|
6
|
+
Things you may want to cover:
|
13
7
|
|
14
|
-
|
15
|
-
layer entitled Active Record. This layer allows you to present the data from
|
16
|
-
database rows as objects and embellish these data objects with business logic
|
17
|
-
methods. You can read more about Active Record in
|
18
|
-
link:files/vendor/rails/activerecord/README.html.
|
8
|
+
* Ruby version
|
19
9
|
|
20
|
-
|
21
|
-
layers by its two parts: Action View and Action Controller. These two layers
|
22
|
-
are bundled in a single package due to their heavy interdependence. This is
|
23
|
-
unlike the relationship between the Active Record and Action Pack that is much
|
24
|
-
more separate. Each of these packages can be used independently outside of
|
25
|
-
Rails. You can read more about Action Pack in
|
26
|
-
link:files/vendor/rails/actionpack/README.html.
|
10
|
+
* System dependencies
|
27
11
|
|
12
|
+
* Configuration
|
28
13
|
|
29
|
-
|
14
|
+
* Database creation
|
30
15
|
|
31
|
-
|
32
|
-
<tt>rails new myapp</tt> (where <tt>myapp</tt> is the application name)
|
16
|
+
* Database initialization
|
33
17
|
|
34
|
-
|
35
|
-
<tt>cd myapp; rails server</tt> (run with --help for options)
|
18
|
+
* How to run the test suite
|
36
19
|
|
37
|
-
|
38
|
-
"Welcome aboard: You're riding Ruby on Rails!"
|
20
|
+
* Services (job queues, cache servers, search engines, etc.)
|
39
21
|
|
40
|
-
|
41
|
-
the following resources handy:
|
22
|
+
* Deployment instructions
|
42
23
|
|
43
|
-
*
|
44
|
-
* Ruby on Rails Tutorial Book: http://www.railstutorial.org/
|
24
|
+
* ...
|
45
25
|
|
46
26
|
|
47
|
-
|
48
|
-
|
49
|
-
Sometimes your application goes wrong. Fortunately there are a lot of tools that
|
50
|
-
will help you debug it and get it back on the rails.
|
51
|
-
|
52
|
-
First area to check is the application log files. Have "tail -f" commands
|
53
|
-
running on the server.log and development.log. Rails will automatically display
|
54
|
-
debugging and runtime information to these files. Debugging info will also be
|
55
|
-
shown in the browser on requests from 127.0.0.1.
|
56
|
-
|
57
|
-
You can also log your own messages directly into the log file from your code
|
58
|
-
using the Ruby logger class from inside your controllers. Example:
|
59
|
-
|
60
|
-
class WeblogController < ActionController::Base
|
61
|
-
def destroy
|
62
|
-
@weblog = Weblog.find(params[:id])
|
63
|
-
@weblog.destroy
|
64
|
-
logger.info("#{Time.now} Destroyed Weblog ID ##{@weblog.id}!")
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
The result will be a message in your log file along the lines of:
|
69
|
-
|
70
|
-
Mon Oct 08 14:22:29 +1000 2007 Destroyed Weblog ID #1!
|
71
|
-
|
72
|
-
More information on how to use the logger is at http://www.ruby-doc.org/core/
|
73
|
-
|
74
|
-
Also, Ruby documentation can be found at http://www.ruby-lang.org/. There are
|
75
|
-
several books available online as well:
|
76
|
-
|
77
|
-
* Programming Ruby: http://www.ruby-doc.org/docs/ProgrammingRuby/ (Pickaxe)
|
78
|
-
* Learn to Program: http://pine.fm/LearnToProgram/ (a beginners guide)
|
79
|
-
|
80
|
-
These two books will bring you up to speed on the Ruby language and also on
|
81
|
-
programming in general.
|
82
|
-
|
83
|
-
|
84
|
-
== Debugger
|
85
|
-
|
86
|
-
Debugger support is available through the debugger command when you start your
|
87
|
-
Mongrel or WEBrick server with --debugger. This means that you can break out of
|
88
|
-
execution at any point in the code, investigate and change the model, and then,
|
89
|
-
resume execution! You need to install ruby-debug to run the server in debugging
|
90
|
-
mode. With gems, use <tt>sudo gem install ruby-debug</tt>. Example:
|
91
|
-
|
92
|
-
class WeblogController < ActionController::Base
|
93
|
-
def index
|
94
|
-
@posts = Post.all
|
95
|
-
debugger
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
So the controller will accept the action, run the first line, then present you
|
100
|
-
with a IRB prompt in the server window. Here you can do things like:
|
101
|
-
|
102
|
-
>> @posts.inspect
|
103
|
-
=> "[#<Post:0x14a6be8
|
104
|
-
@attributes={"title"=>nil, "body"=>nil, "id"=>"1"}>,
|
105
|
-
#<Post:0x14a6620
|
106
|
-
@attributes={"title"=>"Rails", "body"=>"Only ten..", "id"=>"2"}>]"
|
107
|
-
>> @posts.first.title = "hello from a debugger"
|
108
|
-
=> "hello from a debugger"
|
109
|
-
|
110
|
-
...and even better, you can examine how your runtime objects actually work:
|
111
|
-
|
112
|
-
>> f = @posts.first
|
113
|
-
=> #<Post:0x13630c4 @attributes={"title"=>nil, "body"=>nil, "id"=>"1"}>
|
114
|
-
>> f.
|
115
|
-
Display all 152 possibilities? (y or n)
|
116
|
-
|
117
|
-
Finally, when you're ready to resume execution, you can enter "cont".
|
118
|
-
|
119
|
-
|
120
|
-
== Console
|
121
|
-
|
122
|
-
The console is a Ruby shell, which allows you to interact with your
|
123
|
-
application's domain model. Here you'll have all parts of the application
|
124
|
-
configured, just like it is when the application is running. You can inspect
|
125
|
-
domain models, change values, and save to the database. Starting the script
|
126
|
-
without arguments will launch it in the development environment.
|
127
|
-
|
128
|
-
To start the console, run <tt>rails console</tt> from the application
|
129
|
-
directory.
|
130
|
-
|
131
|
-
Options:
|
132
|
-
|
133
|
-
* Passing the <tt>-s, --sandbox</tt> argument will rollback any modifications
|
134
|
-
made to the database.
|
135
|
-
* Passing an environment name as an argument will load the corresponding
|
136
|
-
environment. Example: <tt>rails console production</tt>.
|
137
|
-
|
138
|
-
To reload your controllers and models after launching the console run
|
139
|
-
<tt>reload!</tt>
|
140
|
-
|
141
|
-
More information about irb can be found at:
|
142
|
-
link:http://www.rubycentral.org/pickaxe/irb.html
|
143
|
-
|
144
|
-
|
145
|
-
== dbconsole
|
146
|
-
|
147
|
-
You can go to the command line of your database directly through <tt>rails
|
148
|
-
dbconsole</tt>. You would be connected to the database with the credentials
|
149
|
-
defined in database.yml. Starting the script without arguments will connect you
|
150
|
-
to the development database. Passing an argument will connect you to a different
|
151
|
-
database, like <tt>rails dbconsole production</tt>. Currently works for MySQL,
|
152
|
-
PostgreSQL and SQLite 3.
|
153
|
-
|
154
|
-
== Description of Contents
|
155
|
-
|
156
|
-
The default directory structure of a generated Ruby on Rails application:
|
157
|
-
|
158
|
-
|-- app
|
159
|
-
| |-- assets
|
160
|
-
| | |-- images
|
161
|
-
| | |-- javascripts
|
162
|
-
| | `-- stylesheets
|
163
|
-
| |-- controllers
|
164
|
-
| |-- helpers
|
165
|
-
| |-- mailers
|
166
|
-
| |-- models
|
167
|
-
| `-- views
|
168
|
-
| `-- layouts
|
169
|
-
|-- config
|
170
|
-
| |-- environments
|
171
|
-
| |-- initializers
|
172
|
-
| `-- locales
|
173
|
-
|-- db
|
174
|
-
|-- doc
|
175
|
-
|-- lib
|
176
|
-
| |-- assets
|
177
|
-
| `-- tasks
|
178
|
-
|-- log
|
179
|
-
|-- public
|
180
|
-
|-- script
|
181
|
-
|-- test
|
182
|
-
| |-- fixtures
|
183
|
-
| |-- functional
|
184
|
-
| |-- integration
|
185
|
-
| |-- performance
|
186
|
-
| `-- unit
|
187
|
-
|-- tmp
|
188
|
-
| `-- cache
|
189
|
-
| `-- assets
|
190
|
-
`-- vendor
|
191
|
-
|-- assets
|
192
|
-
| |-- javascripts
|
193
|
-
| `-- stylesheets
|
194
|
-
`-- plugins
|
195
|
-
|
196
|
-
app
|
197
|
-
Holds all the code that's specific to this particular application.
|
198
|
-
|
199
|
-
app/assets
|
200
|
-
Contains subdirectories for images, stylesheets, and JavaScript files.
|
201
|
-
|
202
|
-
app/controllers
|
203
|
-
Holds controllers that should be named like weblogs_controller.rb for
|
204
|
-
automated URL mapping. All controllers should descend from
|
205
|
-
ApplicationController which itself descends from ActionController::Base.
|
206
|
-
|
207
|
-
app/models
|
208
|
-
Holds models that should be named like post.rb. Models descend from
|
209
|
-
ActiveRecord::Base by default.
|
210
|
-
|
211
|
-
app/views
|
212
|
-
Holds the template files for the view that should be named like
|
213
|
-
weblogs/index.html.erb for the WeblogsController#index action. All views use
|
214
|
-
eRuby syntax by default.
|
215
|
-
|
216
|
-
app/views/layouts
|
217
|
-
Holds the template files for layouts to be used with views. This models the
|
218
|
-
common header/footer method of wrapping views. In your views, define a layout
|
219
|
-
using the <tt>layout :default</tt> and create a file named default.html.erb.
|
220
|
-
Inside default.html.erb, call <% yield %> to render the view using this
|
221
|
-
layout.
|
222
|
-
|
223
|
-
app/helpers
|
224
|
-
Holds view helpers that should be named like weblogs_helper.rb. These are
|
225
|
-
generated for you automatically when using generators for controllers.
|
226
|
-
Helpers can be used to wrap functionality for your views into methods.
|
227
|
-
|
228
|
-
config
|
229
|
-
Configuration files for the Rails environment, the routing map, the database,
|
230
|
-
and other dependencies.
|
231
|
-
|
232
|
-
db
|
233
|
-
Contains the database schema in schema.rb. db/migrate contains all the
|
234
|
-
sequence of Migrations for your schema.
|
235
|
-
|
236
|
-
doc
|
237
|
-
This directory is where your application documentation will be stored when
|
238
|
-
generated using <tt>rake doc:app</tt>
|
239
|
-
|
240
|
-
lib
|
241
|
-
Application specific libraries. Basically, any kind of custom code that
|
242
|
-
doesn't belong under controllers, models, or helpers. This directory is in
|
243
|
-
the load path.
|
244
|
-
|
245
|
-
public
|
246
|
-
The directory available for the web server. Also contains the dispatchers and the
|
247
|
-
default HTML files. This should be set as the DOCUMENT_ROOT of your web
|
248
|
-
server.
|
249
|
-
|
250
|
-
script
|
251
|
-
Helper scripts for automation and generation.
|
252
|
-
|
253
|
-
test
|
254
|
-
Unit and functional tests along with fixtures. When using the rails generate
|
255
|
-
command, template test files will be generated for you and placed in this
|
256
|
-
directory.
|
257
|
-
|
258
|
-
vendor
|
259
|
-
External libraries that the application depends on. Also includes the plugins
|
260
|
-
subdirectory. If the app has frozen rails, those gems also go here, under
|
261
|
-
vendor/rails/. This directory is in the load path.
|
27
|
+
Please feel free to use a different markup language if you do not plan to run
|
28
|
+
<tt>rake doc:app</tt>.
|