sj-plist 3.2
Sign up to get free protection for your applications and to get access to all the features.
- data/MIT-LICENSE +21 -0
- data/README +40 -0
- data/Rakefile +135 -0
- data/docs/USAGE +104 -0
- data/lib/plist.rb +22 -0
- data/lib/plist/ascii.rb +251 -0
- data/lib/plist/binary.rb +510 -0
- data/lib/plist/generator.rb +240 -0
- data/lib/plist/parser.rb +224 -0
- data/test/assets/AlbumData.xml +203 -0
- data/test/assets/Cookies.plist +104 -0
- data/test/assets/commented.plist +9 -0
- data/test/assets/example_data.bin +0 -0
- data/test/assets/example_data.jpg +0 -0
- data/test/assets/example_data.plist +259 -0
- data/test/assets/example_data_ascii.plist +51 -0
- data/test/assets/ruby.plist +1696 -0
- data/test/assets/test_data_elements.plist +24 -0
- data/test/assets/test_empty_key.plist +13 -0
- data/test/test_ascii.rb +143 -0
- data/test/test_binary.rb +116 -0
- data/test/test_data_elements.rb +115 -0
- data/test/test_generator.rb +59 -0
- data/test/test_generator_basic_types.rb +58 -0
- data/test/test_generator_collections.rb +82 -0
- data/test/test_parser.rb +100 -0
- metadata +80 -0
@@ -0,0 +1,51 @@
|
|
1
|
+
{
|
2
|
+
IMs = (
|
3
|
+
"com.apple.syncservices:9583BE42-EC1A-4B3F-B248-7904BA60634B",
|
4
|
+
"com.apple.syncservices:2A222E96-4CC6-4320-BE0C-61D5F08C2E64",
|
5
|
+
"com.apple.syncservices:64DAA772-4558-49F8-9B87-C4A32D5E05C1",
|
6
|
+
"com.apple.syncservices:AF7C6884-B760-4E55-A4D5-B1B114C8A7DC",
|
7
|
+
"com.apple.syncservices:ECC7FAED-47D6-4DB9-8120-2F029C7D64C8",
|
8
|
+
"com.apple.syncservices:D704F079-F869-4613-9CFC-697C1976E8F4"
|
9
|
+
);
|
10
|
+
URLs = (
|
11
|
+
"com.apple.syncservices:5BA97109-F8E3-46A9-AF0B-5F8C093F49EA"
|
12
|
+
);
|
13
|
+
"com.apple.syncservices.RecordEntityName" = "com.apple.contacts.Contact";
|
14
|
+
"display as company" = person;
|
15
|
+
"email addresses" = (
|
16
|
+
"com.apple.syncservices:B97DCC9C-5B00-4D38-AB06-4B7A5D6BC369",
|
17
|
+
"com.apple.syncservices:E508D679-43E1-49E2-B5D7-F14A8E48C067",
|
18
|
+
"com.apple.syncservices:C6478063-34A5-4CCB-BD41-1F131D56F7BD",
|
19
|
+
"com.apple.syncservices:2B3E352C-7831-4349-9A87-0FA4BD290515"
|
20
|
+
);
|
21
|
+
"first name" = Mat;
|
22
|
+
image = <ffd8ffe0 00104a46 49460001 01000001 00010000 ffed001c 50686f74 6f73686f 7020332e 30003842 494d0404 00000000 0000ffe2 0f404943 435f5052 4f46494c 45000101 00000f30 6170706c 02000000 6d6e7472 52474220 58595a20 07d60005 00150014 00200006 61637370 4150504c 00000000 00000000 00000000 00000000 00000000 00000000 0000f6d6 00010000 0000d32d 6170706c 71107c80 799e1fbc 069c53e0 d6edc6d5 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000e 7258595a 0000012c 00000014 6758595a 00000140 00000014 6258595a 00000154 00000014 77747074 00000168 00000014 63686164 0000017c 0000002c 72545243 000001a8 0000000e 67545243 000001b8 0000000e 62545243 000001c8 0000000e 76636774 000001d8 00000612 6e64696e 000007ec 0000063e 64657363 00000e2c 00000064 6473636d 00000e90 00000048 6d6d6f64 00000ed8 00000028 63707274 00000f00 0000002d 58595a20 00000000 00006702 00003ca8 0000098e 58595a20 00000000 000068c0 0000abb4 00001e68 58595a20 00000000 00002714 000017bf 0000ab2f 58595a20 00000000 0000f352 00010000 000116cf 73663332 00000000 00010c42 000005de fffff326 00000792 0000fd91 fffffba2 fffffda3 000003dc 0000c06c 63757276 00000000 00000001 01cd0000 63757276 00000000 00000001 01cd0000 63757276 00000000 00000001 01cd0000 76636774 00000000 00000000 00030100 00020000 00270089 011601b0 026c0349 04480574 06c8083c 09d70b96 0d700f68 117d13a3 15d2180c 1a251bcc 1d6e1f0d 209b222f 23b52532 26aa2816 297d2ae1 2c392d8c 2edc302d 317532bf 34083548 36643772 387c398b 3a9d3bae 3cbf3dd2 3ee53ff8 41094214 431b441f 451d4618 470e47fd 48e849df 4af44c1c 4d404e62 4f8350a3 51c452e7 540d5531 56565784 58b359e4 5b1a5c52 5d8f5ed2 6014615b 629f63e1 6520665a 679668cb 69fd6b32 6c626d92 6ec66ff8 712a7261 739e74d8 76187757 789879b2 7abc7bc0 7cc57dcf 7ed67fde 80e981f7 83078418 852c8642 875b8876 89958ab6 8bd98cfe 8e228f45 9068918f 92ae93cc 94e595fd 97159829 99389a46 9b549c5f 9d689e70 9f76a07c a181a28a a391a499 a5a3a6ac a7bca8cd a9dcaae9 abf6ad00 ae05af04 affcb0ef b1d9b2bf b39ab46c b53bb612 b6ffb7fc b8fbb9f8 baf4bbee bce7bddb bed4bfd0 c0cac1c9 c2ccc3d4 c4dfc5f3 c70bc823 c940ca45 cb21cbe5 ccaacd71 ce38cefd cfc5d091 d15ed22c d2fdd3cf d4a6d57f d65ad738 d817d8f8 d9d9da98 db43dbe4 dc84dd22 ddc0de5a def3df8c e026e0bf e158e1f0 e28be327 e3c5e462 e501e5a2 e64de700 e7c0e87b e933e9e5 ea8feb33 ebd1ec63 ecf2ed71 edf0ee5f eeceef33 ef93eff4 f04af0a0 f0fbf18d f229f2d9 f383f429 f4c9f569 f608f6a9 f74cf7f1 f8a2f95a fa1afaea fbcdfcc0 fdc9fed0 ffff0000 00140046 009100f4 01840235 0310040d 053c0692 080f09b6 0b750d4a 0f34112d 132d1536 1714189d 1a221ba3 1d1b1e90 1ffe2162 22c42420 256c26bb 27fc2937 2a702ba6 2cd52e03 2f2f304d 315e3268 336d3472 35773679 377a387a 39783a74 3b703c67 3d5b3e4d 3f3c4028 411441fd 42e443d1 44cf45d6 46dc47e2 48e749ec 4af04bf6 4cfe4e03 4f07500d 51135217 531d5422 5527562f 57335839 593f5a46 5b4e5c53 5d5f5e6c 5f79608c 61a262bd 63e06505 662e675e 689769d0 6b0e6c4c 6d8d6ea7 6fb170b5 71ba72c4 73cb74d3 75de76ec 77fc790d 7a217b37 7c507d6b 7e8a7fab 80ce81f3 8317843a 855d8684 87a388c1 89da8af2 8c0a8d1e 8e2d8f3b 90499154 925d9365 946b9571 9676977f 9885998b 9a909b91 9c979d9d 9e9e9f9c a09da198 a295a38c a480a574 a663a751 a83ca924 aa0daaf4 abdaacbe ada8ae91 af80b06f b160b253 b349b443 b53fb63c b73cb83d b940ba45 bb49bc4d bd50be4d bf3bc021 c10ac1f6 c2e2c3cd c4bac5ab c69ac789 c879c968 ca55cb43 cc2fcd1a ce03ceea cfcfd0c4 d1c3d2bc d3b1d49f d586d666 d741d817 d8e9d9ba da86db53 dc21dcf0 ddc5de9a df74e051 e12be1fa e2c0e385 e449e50e e5d3e697 e75be81f e8e3e9a6 ea6aeb2e ebf3ecb6 ed7aee3e ef03efc7 f08cf150 f214f2d7 f39df461 f524f5ea f6adf771 f835f8fa f9bdfa81 fb45fc0a fccefd92 fe56ff1e ffff0000 00090020 00430070 00a700e8 015001d6 027c033e 041c051c 0635075f 089a09e7 0b3c0c95 0de90f13 10361158 1274138d 14a115af 16ba17bb 18b519a8 1a931b77 1c561d30 1e021ed0 1f992064 213a221f 22ff23e0 24bd2597 266f2745 281a28e9 29b82a84 2b4f2c17 2cdd2da3 2e682f2d 2ff130b4 3177323a 32f633af 3466351a 35cb367c 372e37da 38893939 39ea3a9d 3b523c0a 3cc53d84 3e443f08 3fcc4091 41554216 42d94399 44584516 45d0468a 474347f4 48a44954 4a014aac 4b554bf9 4c954d27 4dad4e30 4eb44f39 4fbe5044 50cc5156 51e35272 53035397 542d54c6 55615600 56a05742 580358ed 59f35afb 5c035d0a 5e105f1a 60286135 62436354 646a6582 669b67b8 68d769f7 6b1a6c41 6d696e8d 6faf70cd 71eb7308 741f7530 76407749 78507950 7a4a7b43 7c357d25 7e117efa 7fe380cf 81c882c7 83c584c0 85ba86ae 879f8889 89728a5a 8b3e8c1f 8d008de0 8ec08fa1 90839162 9244931e 93ed94b5 95819653 972797fc 98d699b6 9a979b7a 9c629d49 9e329f1c a006a0ef a1d7a2be a3a3a498 a597a692 a787a878 a964aa4b ab2fac13 acf7addd aec6afb1 b0a8b1a0 b2a6b3af b4bfb5db b6fab81e b944ba68 bb89bcab bdc9bee8 c004c120 c23ac354 c46fc58c c6aac7c7 c8e9ca08 cb2ccc52 cd81cec6 d026d18b d2ffd485 d614d7b2 d96bdb35 dd16df0c e128e364 e5c8e86e eb69eec5 f2eaf8d4 ffff0000 6e64696e 00000000 00000636 00009417 0000588d 000051b5 00008e62 0000285b 000016a8 0000500d 00005439 0002a3d7 00024000 00014a3d 00030100 00020000 0014002d 0046005f 0077008e 00a500bc 00d300e9 00ff0116 012c0143 01590170 0186019d 01b401cb 01e301fb 0213022c 02470262 028602aa 02d002f7 031f034a 037503a1 03cf03ff 04310464 049904d1 050a0545 058105c1 06020646 068a06d0 07190763 07ae07fb 084b08a6 0908096f 09d50a3c 0aa50b10 0b7c0bea 0c590ccb 0d3f0db8 0e340eb4 0f390fc1 104f10e3 117c120a 12881305 1387140a 148f1517 159f1629 16b3173d 17ca1858 18e3196f 19fc1a89 1b151ba2 1c2e1cb9 1d451dd2 1e5e1eed 1f7d2010 20a5213e 21d62272 231223b3 245424f9 25a02644 26ec2795 283f28e7 298d2a37 2adf2b87 2c322cd9 2d992e69 2f3f3018 30ee31c6 32a2337c 3456352f 360836e3 37bc3896 396e3a47 3b1e3bf5 3ccc3da4 3e7c3f57 40334111 41ec42cf 43b4449f 458c4679 476b4862 495e4a5c 4b5b4c5f 4d674e70 4f7d508c 519d52ac 53be54d1 55e356f8 58085917 5a2a5b41 5c585d74 5e955fbe 60f3622e 637a64cd 663667b0 69356a92 6bd36d0f 6e526f96 70e0722c 738174d2 76207772 78bf7a09 7b4e7c91 7dcc7f02 803b816f 82a38415 85da87a1 89638b2d 8cf58eb4 90769230 93ec959d 974e98f8 9aa29c4a 9df39feb a244a4a7 a716a999 ac21aead b142b3cf b657b8e1 bb60bdaa bfc9c1fc c44ac6bb c95fcc46 cf98d36b d7dadcdd dfdae257 e4f5e7b6 ea83ed4b f008f292 f4faf72a f92dfb08 fcbdfe83 ffff0000 00270047 00640080 009a00b3 00cc00e4 00fc0113 012b0143 015b0174 018c01a5 01be01d8 01f2020c 02270245 0264028a 02b202db 03050331 035f038e 03be03f1 0426045c 049404ce 050c054a 058b05d0 06170660 06aa06f8 0748079a 07ee0847 08a6090a 097209dc 0a480ab7 0b290b9d 0c140c8f 0d0b0d8c 0e110e99 0f260fb6 104910e1 117c1212 129e132c 13bc144f 14e3157a 161316ac 174617e5 18851925 19c81a6e 1b141bbd 1c681d12 1dc11e70 1f211fd3 2086213d 21f122a6 235d2411 24c52579 262926d8 27882836 28e2298a 2a352ade 2b872c32 2cd92d99 2e692f3f 301830ee 31c632a2 337c3456 352f3608 36e337bc 3896396e 3a473b1e 3bf53ccc 3da43e7c 3f574033 411141ec 42cf43b4 449f458c 4679476b 4862495e 4a5c4b5b 4c5f4d67 4e704f7d 508c519d 52ac53bf 54d455ec 570a5823 593f5a61 5b885cae 5ddc5f0a 6041617e 62bc6405 654e66a1 67f7694f 6aac6c0f 6d6a6ec9 70207179 72d07428 757976c9 78197968 7ab57c02 7d4f7e9a 7fea813c 828e83f4 857586f7 887389f0 8b738cf2 8e6d8fed 916f92f1 94799602 978f991f 9ab69c51 9df39f7c a0f6a27b a40aa5a6 a751a910 aadbacb4 ae94b081 b26bb459 b637b817 b9edbbbb bdadbfbc c1d2c3e9 c604c821 ca41cc67 ce8fd0b7 d2e1d50f d73fd972 dba6dddb e016e255 e48ee6d5 e914eb5e edaaeff1 f244f494 f6e6f93a fb93fdf0 ffff0000 0055008a 00b700e1 0108012e 0154017a 01a001c6 01ed0215 023e026a 029e02d4 030c0347 038503c5 04090450 049a04ea 053e0597 05f7065c 06c70739 07b10831 08ac0921 099b0a17 0a990b20 0bab0c3a 0cd00d6a 0e0a0eaf 0f591007 10b9116f 122a12e8 13b01480 155a163a 171f180d 18fc19ec 1adc1bcb 1cb71da3 1e8d1f7a 206a2161 2259235b 2460256f 268227a5 28cf2a00 2b3d2c87 2dff2fab 31573307 34b13654 37f13986 3b153c9e 3e243f64 405b4151 4246433f 44394536 462f4727 4822491e 4a184b0f 4c054cfd 4df34ee8 4fde50d4 51c952bb 53af54a7 55a156a2 57a358a5 59ac5abb 5bcf5ce5 5e055f28 6055618b 62c46409 655066a2 67f7694f 6a956bd3 6d106e55 6f9c70ec 724373a7 750e7679 77ef7969 7ae67c68 7de87f69 80f18275 841385d0 87878930 8adb8c80 8e198fb0 914692d5 946895f8 978a991d 9ab59c51 9df39f7c a0f6a279 a406a59d a73ea8ed aaa0ac56 ae09afb9 b165b2ff b499b61c b79fb919 ba84bbef bd53beb5 c019c181 c2efc45a c5ccc73e c8b4ca2c cba8cd26 cea4d021 d19fd31b d49ad614 d794d910 da89dc01 dd6adebb dff9e136 e26fe39d e4c0e5e0 e6fde813 e924ea27 eb26ec21 ed13ee01 eee9efd0 f0a9f17f f24df319 f3ddf49b f557f604 f6b2f756 f7eff889 f919f9a2 fa2bfaaf fb1dfb8c fbfafc68 fcb6fd04 fd52fda0 fdeffe3c fe81fec6 ff0cff51 ff97ffdc ffff0000 64657363 00000000 0000000a 436f6c6f 72204c43 44000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 6d6c7563 00000000 00000002 0000000c 656e5553 00000012 00000028 6a614a50 0000000e 0000003a 0043006f 006c006f 00720020 004c0043 004430ab 30e930fc 0020004c 00430044 6d6d6f64 00000000 00000610 00009c5e 00000000 c04b8a00 00000000 00000000 00000000 00000000 74657874 00000000 436f7079 72696768 74204170 706c6520 436f6d70 75746572 2c20496e 632e2c20 32303035 00000000 ffdb0043 00010101 01010101 01010101 01010101 01010101 01010101 01010101 01010101 01010101 01010101 01010101 01010101 01010101 01010101 01010101 01010101 01ffdb00 43010101 01010101 01010101 01010101 01010101 01010101 01010101 01010101 01010101 01010101 01010101 01010101 01010101 01010101 01010101 01010101 0101ffc0 00110800 30003003 01110002 11010311 01ffc400 1f000001 05010101 01010100 00000000 00000001 02030405 06070809 0a0bffc4 00b51000 02010303 02040305 05040400 00017d01 02030004 11051221 31410613 51610722 71143281 91a10823 42b1c115 52d1f024 33627282 090a1617 18191a25 26272829 2a343536 3738393a 43444546 4748494a 53545556 5758595a 63646566 6768696a 73747576 7778797a 83848586 8788898a 92939495 96979899 9aa2a3a4 a5a6a7a8 a9aab2b3 b4b5b6b7 b8b9bac2 c3c4c5c6 c7c8c9ca d2d3d4d5 d6d7d8d9 dae1e2e3 e4e5e6e7 e8e9eaf1 f2f3f4f5 f6f7f8f9 faffc400 1f010003 01010101 01010101 01000000 00000001 02030405 06070809 0a0bffc4 00b51100 02010204 04030407 05040400 01027700 01020311 04052131 06124151 07617113 22328108 144291a1 b1c10923 3352f015 6272d10a 162434e1 25f11718 191a2627 28292a35 36373839 3a434445 46474849 4a535455 56575859 5a636465 66676869 6a737475 76777879 7a828384 85868788 898a9293 94959697 98999aa2 a3a4a5a6 a7a8a9aa b2b3b4b5 b6b7b8b9 bac2c3c4 c5c6c7c8 c9cad2d3 d4d5d6d7 d8d9dae2 e3e4e5e6 e7e8e9ea f2f3f4f5 f6f7f8f9 faffda00 0c030100 02110311 003f00dd f817f1b3 fe09f9fb 42fc414f 869e0cf8 b5e32d0b 5597c3fa a6bf6dae fc44f0bd bf81fc25 751694f6 d1cf630e bfad4e96 67539c5c 99acec5d d1eed2de e5622d2a 2a37f977 8fc873dc 061de273 0c23c0d3 5354e55a ae372ca9 255a7094 d46786c1 e3b155e1 16a3273a 9382a6ae 94a5cf28 a7fd5d57 069252a1 5a963257 5cb47070 c6ca7187 334ea29d 5c1d3a72 4a4e29a8 4e527fca e29c97e7 3fedc7fb 4d7c3af0 67c46d6b e0dfc07f 1d6b57ba ff0081bc 6b6c2f3c 69e08d3b c29e36d2 7c5be1d4 d1edae26 b471afe9 51e95a2c 6badcf73 a65ddc47 7775f6a4 b2171637 b1473e24 fa9e1ce1 7aaf0f2c cf1f80c1 6372eaf8 474a8e23 35c757c0 d0a78b93 f7ea60ff 00b3a6f1 38cab416 8a0a13a1 794a528c a51b2f92 cc31aa55 a385a58c c4e17134 eba9d4c3 e1f0d4f1 35a74a29 72c6b2c4 4551c3c2 a36d5e56 a964b95c 632d7c27 c29ff052 4b5bed3a f2dd742d 2ec35cd1 4c90ea1a 16b496d6 7acdf985 4ef36538 78ec1ae0 b3462580 5a3aa9c2 464bb9d9 a667e196 77829e19 c6ad3af8 2c6252a5 996168d4 c56129d3 9cae9568 3e6aaa3c b195aa54 6a2d24d4 56add60f 88f26c44 2b73fb68 e230dcea ae0eb55a 746bca51 8b56a697 bb2b37f0 4799a7a3 7dbea9fd 933f6e2f 84df1dbe 23e83f09 3e2a1b4f 871e28f1 7ebf61e1 7f0aeada 64536a5e 1d9f59d4 6e1edad2 db5abdbc 36df625b ab87b6b4 4bab6b77 b78eee46 f3c45132 8431dc11 9e65d4e7 88c3a8e2 3031a11c 47b79d38 53a91e5d 670a9878 d69ce9c6 49a9539a 726e3ba4 945bca9e 6f95e26d 08d6a94f 14aaca9c a8c9f345 c747074e afb38f3c a2d494e2 f9526959 ead1fb2d a5fec27a ee8fe26d 610eafe1 b83c3b74 ed7505f5 b4d7d71a dcf74be5 f966fada e2c85bc6 837dc03e 4dc131fc 87043b01 f36e5899 460b91b9 45464a53 705157f8 f97979aa 2968926e 3cd271f7 92e9d54e 14e3293e 7f75b7b2 777d5377 7676ba4e cd6fa6b7 bf7b69fb 238b1980 1e2485c0 23936603 7504f38e 7919ec4e 31d2b9e5 1aee5cca 708d38da 6eeb9e4b e1937cde eaddb935 68dfb33b 292a6b54 e4eeda56 f5bedaa7 e4d37dae d9fc0cda cfa2d8f8 3f59f15a ea9a6beb 7a26a3a6 c163e0d7 8aea3d56 f63bb12b 1d7a49e6 b65d36df 49d3a78e 3864592e 24bcba9d cc51dbaa 2f98ff00 d533c1e2 3158ec3e 02a3a94f 0f8b8d58 d4c725ed 2945422e 53c34152 6ea3c454 86da4611 8b536deb 6f85c4e6 74b0b80a d8dc37b2 ad2a5384 2308d482 719d4725 0a9252d7 9572c9eb 15ccf6bd a513cf62 f1d78c3c 51e2016d e1dd2ad2 e35ed621 4975bd5a 6cc8cd69 24261481 49061b34 58c299a7 b6649a70 044c4c64 ab7d3e0b 83b034f0 b1a356ae 26585c2d 49472fc0 514a1185 48cd4ea5 7a92ba75 126e4a31 af7a74fe 38ae6e56 7c7c336c cb31c5ca 384a34fe b1885196 2f135136 dc1ae5e4 5a72d356 8c6ee1ef 4de8fddb a3d06dbe 09dccc61 bcd52f9a 3d6660ae 66b5631a 2b05da37 b91e63b0 40101503 7050080a 327a3155 31b818bc 3ba11585 92928539 de5cb1e6 57bf342c 9394be1b 36a4dfab fa6c2709 61ea4635 eb6266f1 56bca506 d6b67ef2 77bb928d 95db5a68 d68792f8 827d6fc2 9e254696 7bab9b8b 4b96f32e 599eda77 4b6656b5 ba120903 34918c34 3711b413 43246844 9d31586c 1e0f1983 ab4230a7 49349538 a8a70539 ff001211 8ca09c63 27f1539c 6519466d 72ee7c6e 694f1596 66127cf5 2a3a72bf 3cb9a2da 8bb539b6 a4b9a515 156941c5 a6acde8a dfd78c5f f057bf17 fc11ff00 82567eca 7fb516a1 e038be2e 7c55d4bc 61a87c05 f105aeb5 af3e8ba4 eacbe119 35a81fc4 fe26d434 e173aa3d fdff0087 f43b53a7 986cee15 bc45792d f5ec1f65 e25fc728 f00e1738 e32cdb87 9e31e5f8 5a586fed 284e9d18 d6a9ef46 9463469c 24a107c9 3ab17525 2a9192a5 1718c9ce 48fa8afc 4d530794 61333f61 edead492 c3ca0e4e 10e67cce 752525cd 68cf91a8 c527ef4b af2bb7b4 fece5ff0 5cbfd98f e387c3af 0c7887c6 da969df0 67e27ead 71e2cb3d 73e1bdfe a87c4b6f a33f84ec 355f1049 7abae8b0 d318e8fa 97863499 b53b4bfd 4ec34c85 ae92eb49 864b9bab 6dd2789c 47e1667d 9566388c 3e0a855c cf054e85 0ad4f1f1 a7ec156a 75aad1a1 ecfd939d 4bd5a788 ad0a32a7 4a556569 529ca2a3 2b1ede47 c5182cd2 8e1d4aad 2c262ab5 4ab0961e a544e349 d384eaca 52a8d452 a6e94252 5526a316 d38ddb4a df855e17 ff008270 78d3e2d7 ecff00f0 c3c6ba3f c51b2d43 48f1e7c0 9f1478dc 59e9fa26 8f278525 f18f863c 67a9e8fa 0e829adf d8b4ed53 40d0b55d 185adccb a8bc3736 f05f58dd c56fa608 ee8450fa 9538e32e ca38cb38 cbe390d5 a38ecaf3 4c3d3a15 1e3730ab 9a56a18f c053c456 9cf2fad8 cad43118 c588a38a a2e3154e 492a6e55 65384a4f d7ad93c3 38e1cfad 55ccb074 f0752186 83c4470b 81865d07 0ab5e356 ac71384c 247191a1 86a6b0d5 a518d2a9 154e553d c93e581f 2768df08 e5f85f3d d785afb4 eb5b6d6f 48bb9f4d d6658089 17ed9677 52d9dec7 0ddb00d3 430dcc32 c71bfcaa f16d7500 118fdd38 4b33c667 ee5ecf0f 5e327525 cf2af47d 94e29cae a1554925 4e51a72b 3a4939a9 2926bdd3 830194e0 32ec253a 942787ad 0a915cb5 f0f38d5a 55b97455 a8cec9ce 9cdae6a7 2697345d ecb9ac3b c4fe23d3 b409d6de eaef4fd3 e0b710f9 ba96b970 d6f1cb2c a5512cb4 eb68035c dcc8015c ccfe45be 59523691 c9c7dee2 f85678fa 55af8885 374e8f3d 65528ca5 08a838de 10519c67 3942c94e a3953859 5f99b6ef 962339a5 81ab052a 30a74ae9 3af52bc6 9425296d 18a69b75 1df64b75 7b75393f 1d785ad3 c71e0ebf 92d840f7 5059cd7d 673c7134 2ced1234 9e5b3322 ca566886 06780483 83c57e7f 530589ca 71545bb5 584d2946 5469ca3c d152493f 672519f3 b8c95e32 4f6d1bf7 59d19960 a867396e 2bf75cb5 29d394a9 cdc5ddca 29bb427f cb269a6d abb5f66d 73c37e2d f88f5fd3 3f67af86 5f0c2dfc 55ac4fe0 6d0bc5b7 be3083c2 6f744684 9e26f186 821f50f1 1476a8d8 9aea582c 534fb696 e18b592d bdf470c3 08bc99e7 ecc8f0d0 a99ce333 5a91a32c 5e638395 3e651ff6 9a347055 e9518519 c5c54a14 e7cd09c5 c39a35ac ddf9a9d9 7c7f1765 981c2708 640f0f4a 54f114b1 ae152a41 bf658b8e 2f0f52bc aa54576a 752956a4 e14a568c a1094a0e 2e3cad72 3fb24ea9 f0fadfe2 aeab37c5 068e7f87 f67f0c7e 356bba85 85c189a0 bed774ef 83fe39b4 f0ac4914 fb527bbf edbd5604 b0048134 d3046565 6207abc5 587c5aca 94b011e5 cd1e272e c1e0eac7 9d4e9ac6 66782f69 79c2f28d 36e8d39d 68da4d2a 49af792b fcaf097d 4966f059 9bbe5d4f 0b8dc4e2 a968d555 47078971 4ef6f797 34a31574 f9a495d5 da7fd157 86aebe2a fece1f09 fe1ce87a 67c52d2d 3e17fc3b d2fe21f8 57c09a7d dfc375b0 b7d42d75 df16eb16 9a0db5ce 93ae78b9 bc40b71e 28d2f54b dbb45d57 58f115fe 8f77aaaa d9c46c34 89b1fc33 473ea7c5 3c51c619 ed0fed1a 38fa389a 2b0f99d4 c765b1ab 8ac76419 2cf1d5e3 5f0f4f26 f611860f 178a54e9 469d0a1c f0e755e5 f5951847 fb2727e0 5ab84cf7 87bc34c5 e1b2dc46 4b9a62f0 983cf313 93fd6f19 84c1d1c6 56c073aa 58bc4661 2f6afdea f85a789a 52ab0a95 f098b9da 5854aa54 fc8ff89d f16be2e7 ed31f147 e25fc7ab 9d0bc19e 1b9af7c6 fe1db2d5 7fe115d2 ae742d3b 59d36483 51d2ecef b4ef0dc3 a85e69ba 75c6a163 e11b8b8d 62eedcdb c179aadc dc6a1f62 0d753bd7 f6670ee3 6865194d 5fed4c53 af8ec7e5 b3c655a9 1a5470b5 30d9c4b0 b86a9568 d1781c26 1e351deb 43d85270 e687bded 6b54936d 7e0f9961 e8d1e2dc d322e1a8 aa595647 9f4f2bc3 3a93ad88 962329c3 62274e8c 67ed3113 a74aa2a2 a12ab517 b8dcef0a 508a4886 df49b7d6 3c49136b d6d35c9b 99a39ac7 edd07da7 49b9092a cb6b1cd1 49906486 4b559a28 e4db1f99 6e24898c 84a1fd53 84f37c65 7ab2a18c a36abec3 dae0d62e 159d1ab1 a928cdde ac546136 e51e7f67 56729be4 e6514e2d 2f4b3dc8 70952539 c62dc5d4 837cb1a5 5146a413 519538d4 e69d2a96 565521ca f54afb1e b3afe9b0 d8e977a9 2c8b0493 5b48a263 b511e599 1a355519 5c21c90a 839da3b9 af3b8b32 d9d552af 1a318e2a fed27ece 71e576e5 56872c5a 8b776a0b 954b975b bbc91142 bd3c360e 749ced08 d3941395 efaa6bde 7a5db77e 6bb69eae cfafe5e7 c4e9f5af f842fc29 686791f4 1d2fc43e 2dd2260d 1829fdb5 673c51db 3cb72016 933a64de 5da46e7f 7691dc2a e7b7ca64 2a8d3cdb 33a338c1 62a586c0 e268a4fd ff00aacd 3f6c92be aa3898a7 26ae973c 1d973b6f f33e21a9 8ec46519 3d3bcde0 30d8bcc3 0faaf723 8c8d6bc7 9e492779 61a51f65 d125577e 9e1b1432 2c12cd1e 5edc2343 3340e77c 624531a0 94290e8b 26ed83cc 02398831 ee666c0f ab95484a a429c9a8 d5e68d48 2a91d25c ad4a4e17 56938dae f95b9d34 f9ac923e 4153a94d 7b47770b 38ca506f 4e74d253 e5d5293b 2574a32f 862ef73f aaafdb17 53bab3f0 0783ad2f 2258753f 13f8a753 8f47d155 b55d51ac 6cf43d02 fed348d6 64d5544b a6a5f41a 96bfe14d 2f533737 934e3529 afe44c09 2de56ff3 9bc3ec83 0b1a1561 89c5e2a5 9ae5f528 ac53ab4a 9d3c3e2a 3c4b8ec3 e7198e2b 11896a93 c4e2e587 c1633970 74a8a8d1 c1d6854a 89b499fe 88f0766f 86cbf3ca 59a64f97 548f0fe3 b22ad996 06a63b92 19b4330c ab27c465 787c1cf0 51bfd568 7f6a66f5 234b1339 b957af81 8d0a5cd2 a72e6f37 fd937c23 f0efe22d 87c65d23 c4b75168 1e039ec2 e7c3d06a 96365045 0f876e60 bdd47c51 a06b2b05 aa5b2c96 fa3c5a85 9dfdee4b 0bab482f 22694db3 4a89fba6 779b6272 7c665b5a 8278aabf db12ab28 c9dd62e9 60f0f472 c54a5272 972fd66a e065672b ca339f3c 399c647f 34636ad7 75f298d1 a6e8e26b 61238fab 08c9a937 9b63734c f2d52ef9 6abfabe3 b094e2d3 52e58c14 b92f797c 451c962f ab5edae9 d0dcebd7 9a4eab7d 6bff0009 29f2b4cb 4b9b5b0b 8315adcd a47ae791 af476375 6ab1dcd8 c4fa5473 08642a63 562db7fa eb843325 9964d4eb e6147115 31d464aa d4ab5ea5 2855a4e5 69470dee f373bc3d 39d3a52a 51a6a37e 7719b8c9 ccd64ebd 58ba945d 2a17a938 d58dfdb3 934ece7e f4afcad5 df36a9e8 d5aed1b5 e20926f1 94b3f87d c4627d27 c27a9f88 2389510a cf756575 63e4b904 bec98dba ca88172d 199a4656 ced2bb67 d89c4d6a 1f5ec350 855ab97d 18e2a9d0 972c6156 9e1eac25 894d27ca eb4b0ee5 08b8ca4a 3ef41b6b 53c2c4c2 33af8bc1 6225184a a508c938 eaa32bb7 192f764e 379a8ee9 38df4b68 78ff00c3 e8743b0d 06c60d6f 40d235cd 2352bfbe d675af0e eb16d0ea 3a7ea09a 8dcfda64 b7bc867c 8f3562d8 ab2c4639 6d268d24 b692368e 371f8c71 870e63f1 6f078bc2 e2711976 6694ebd3 c665d5a5 87c4e095 5b7b28d3 94146d0a 70942352 128d484e f28d58ca 123d9e17 c5e03058 6faa63f0 786c760e bce53c56 13174d57 a551d493 949d48c9 36a77b38 4e0e3383 b3a528b8 e9f28fc4 b93e195c fc44f885 a97c26f0 99f0c782 2d64b6d2 74fd19f5 3bdd5ec2 e2ecd9da c5ac400e a335c5c3 e992eb2b 3cd690b5 c4af0402 3d938d91 b47db97c 33fc3e5b 9360788f 35598e6b 2a95b135 7170a34b 0f5e9d2a 75aa7d5a ac674214 e0b11f56 4a3526a1 18d4949a 7069c94b e47358e4 15b38cf7 11c3b96c b0994d38 d2c251c3 4ab54c45 1ab5e74e 9ac441aa f29cdd07 8af7a9a7 294a0a31 94671714 e3f6cead 79e09f0b 68ff00b3 a5d47fb4 32789bc7 ba7f8d3c 6f2f8ff5 65f12c9e 25d3348f 0fe9d777 76e3fb33 4ad65678 b4a9b5ab ad3b40b9 b49750b8 79b56687 4bd5f468 a35d163b a5f83af9 366b8e7c 554e7c35 5e9602b6 1b0dfd91 42951961 abc31f19 e1dd0c43 ad85e4ab 51d2a1f5 973961ed 18d39cf0 f8a5255e a5297d0e 2733c0e4 f1e1cab9 6f15e171 18ec52c5 617348d1 c7471184 a981e7aa a54aae16 a732a107 29c54296 257b59ce 51c4e16c e0aa2fd0 4fd82be3 67ecede1 8f85bf1b 97e2878f fe11783e f6efc5da a5958e97 e29d774e d3fc4d75 e1abef05 da452ea1 e1bb6d2e f6f62f10 797a85c5 f59da69f 6f61756b 72a459db 944824b7 9ff22e38 e0cf103f b5b24c7e 5395e739 bc69e554 e58ac3c6 a63e1859 62de3f15 cf24ea2c 352c162b d97b2a95 6be2274a bc67375a 6e4e4b9f d3cb737c 8e585ab4 6ae2f2fc 3538e267 0a75aa3a 52c5d0c3 c3094654 214a6d56 ad5f0d4e 31953a74 29c2a507 8782a74a ce9f2af1 1b6f01f8 57e2546d e229fc3b 75a268da 879b7de1 687ed0d0 6b1a6e90 641f624b db949e4b 83a8adba a5c5cc6b 32c68ed2 c4aae88a c7fb1bc3 0e14cdf3 fc928667 9d56ad42 34e9ca8e 1335cb2b d2a6b133 c2559d35 8ac445c6 4aa53f69 17197346 2aaaa6e5 28de777c 98ec4e1b 0f1a50a6 e53a95a9 d2af49d5 5c8fd954 8297b36a 097b3ab1 5fbc514a f14f97a3 473da47c 246f0578 caebc472 f88af7c4 3697ba5d ce8b1c17 46d50d8d adc3090a ff00a3c0 a2f0ccc9 123c9295 78d10288 d99a491b ecb33c9b 37cbb135 2398548e 2e854c3d 7a11ad84 8ba734a7 4a519caa d24e749b 938c74a1 ece306a4 e54db937 1f2f0d4e 962275f1 0a756588 94553946 bb8ca315 0939da9c a114e577 64f9eef9 5fbaf577 fcdbf883 f124783f 4dd4fc3d 632edd79 2e751d36 cadd0832 58409712 c02f6e58 676ec840 36d1b1f3 2698abed 11ab3579 14a585c5 e5581ad5 39258854 29463183 52e470b7 3d4a8f96 ca52e549 53926d36 a4bdd48f 90ccb33a 980a95b0 b49bf6b7 945292d6 0e5a735d f68ed649 376d2c8f 98742d62 3b088c57 125fdb64 c8cb7b6b b6758e49 090d33c2 5a32cc41 61b8bb1c 9c804e00 f1731c0c b133f690 8e1aabf7 53a159ba 4e718aba 846a5a49 2d13b596 d67e7e46 5d8d861a 2e156789 a2db6d56 a56a9184 a565cd2a 6dc64db5 757e6959 bba8dd24 bfffd9>;
|
23
|
+
"last name" = Schaffer;
|
24
|
+
"phone numbers" = (
|
25
|
+
"com.apple.syncservices:64ED42EB-109B-43A9-BEFC-3463D944251A",
|
26
|
+
"com.apple.syncservices:FB7585EB-A3DE-46D5-920C-DF8028689BC5",
|
27
|
+
"com.apple.syncservices:020036FD-22B3-41C9-BC3D-CDA6083582C6",
|
28
|
+
"com.apple.syncservices:C6661518-90CA-45C7-A988-02F73B958951"
|
29
|
+
);
|
30
|
+
"primary URL" = (
|
31
|
+
"com.apple.syncservices:5BA97109-F8E3-46A9-AF0B-5F8C093F49EA"
|
32
|
+
);
|
33
|
+
"primary email address" = (
|
34
|
+
"com.apple.syncservices:B97DCC9C-5B00-4D38-AB06-4B7A5D6BC369"
|
35
|
+
);
|
36
|
+
"primary phone number" = (
|
37
|
+
"com.apple.syncservices:64ED42EB-109B-43A9-BEFC-3463D944251A"
|
38
|
+
);
|
39
|
+
"primary related name" = (
|
40
|
+
"com.apple.syncservices:CD0B7021-0228-4770-8FB0-3739479E9788"
|
41
|
+
);
|
42
|
+
"primary street address" = (
|
43
|
+
"com.apple.syncservices:377B9105-9D15-4F69-BCD6-B01E587F7760"
|
44
|
+
);
|
45
|
+
"related names" = (
|
46
|
+
"com.apple.syncservices:CD0B7021-0228-4770-8FB0-3739479E9788"
|
47
|
+
);
|
48
|
+
"street addresses" = (
|
49
|
+
"com.apple.syncservices:377B9105-9D15-4F69-BCD6-B01E587F7760"
|
50
|
+
);
|
51
|
+
}
|
@@ -0,0 +1,1696 @@
|
|
1
|
+
{
|
2
|
+
comment = "\n\tTODO: unresolved issues\n\n\ttext:\n\t\"p << end\n\tprint me!\n\tend\"\n\tsymptoms:\n\tnot recognized as a heredoc\n\tsolution:\n\tthere is no way to distinguish perfectly between the << operator and the start\n\tof a heredoc. Currently, we require assignment to recognize a heredoc. More\n\trefinement is possible.\n\t\U2022 Heredocs with indented terminators (<<-) are always distinguishable, however.\n\t\U2022 Nested heredocs are not really supportable at present\n\n\ttext:\n\tprint <<-'THERE' \n\tThis is single quoted. \n\tThe above used #{Time.now} \n\tTHERE \n\tsymtoms:\n\tFrom Programming Ruby p306; should be a non-interpolated heredoc.\n\t\n\ttext:\n\t\"a\\332a\"\n\tsymptoms:\n\t'\\332' is not recognized as slash3.. which should be octal 332.\n\tsolution:\n\tplain regexp.. should be easy.\n\n text:\n val?(a):p(b)\n val?'a':'b'\n symptoms:\n ':p' is recognized as a symbol.. its 2 things ':' and 'p'.\n :'b' has same problem.\n solution:\n ternary operator rule, precedence stuff, symbol rule.\n but also consider 'a.b?(:c)' ??\n";
|
3
|
+
fileTypes = (
|
4
|
+
rb,
|
5
|
+
rbx,
|
6
|
+
rjs,
|
7
|
+
Rakefile,
|
8
|
+
rake,
|
9
|
+
cgi,
|
10
|
+
fcgi,
|
11
|
+
gemspec,
|
12
|
+
irbrc,
|
13
|
+
capfile
|
14
|
+
);
|
15
|
+
firstLineMatch = "^#!/.*\\bruby\\b";
|
16
|
+
foldingStartMarker = "(?x)^\n\t (\\s*+\n\t (module|class|def(?!.*\\bend\\s*$)\n\t |unless|if\n\t |case\n\t |begin\n\t |for|while|until\n\t |^=begin\n\t |( \"(\\\\.|[^\"])*+\" # eat a double quoted string\n\t | '(\\\\.|[^'])*+' # eat a single quoted string\n\t | [^#\"'] # eat all but comments and strings\n\t )*\n\t ( \\s (do|begin|case)\n\t | (?<!\\$)[-+=&|*/~%^<>~] \\s*+ (if|unless)\n\t )\n\t )\\b\n\t (?! [^;]*+ ; .*? \\bend\\b )\n\t |( \"(\\\\.|[^\"])*+\" # eat a double quoted string\n\t | '(\\\\.|[^'])*+' # eat a single quoted string\n\t | [^#\"'] # eat all but comments and strings\n\t )*\n\t ( \\{ (?! [^}]*+ \\} )\n\t | \\[ (?! [^\\]]*+ \\] )\n\t )\n\t ).*$\n\t| [#] .*? \\(fold\\) \\s*+ $ # Sune\U2019s special marker\n\t";
|
17
|
+
foldingStopMarker = "(?x)\n\t\t( (^|;) \\s*+ end \\s*+ ([#].*)? $\n\t\t| (^|;) \\s*+ end \\. .* $\n\t\t| ^ \\s*+ [}\\]] ,? \\s*+ ([#].*)? $\n\t\t| [#] .*? \\(end\\) \\s*+ $ # Sune\U2019s special marker\n\t\t| ^=end\n\t\t)";
|
18
|
+
keyEquivalent = "^~R";
|
19
|
+
name = Ruby;
|
20
|
+
patterns = (
|
21
|
+
{
|
22
|
+
captures = {
|
23
|
+
1 = {
|
24
|
+
name = "keyword.control.class.ruby";
|
25
|
+
};
|
26
|
+
2 = {
|
27
|
+
name = "entity.name.type.class.ruby";
|
28
|
+
};
|
29
|
+
4 = {
|
30
|
+
name = "entity.other.inherited-class.ruby";
|
31
|
+
};
|
32
|
+
5 = {
|
33
|
+
name = "punctuation.separator.inheritance.ruby";
|
34
|
+
};
|
35
|
+
6 = {
|
36
|
+
name = "variable.other.object.ruby";
|
37
|
+
};
|
38
|
+
7 = {
|
39
|
+
name = "punctuation.definition.variable.ruby";
|
40
|
+
};
|
41
|
+
};
|
42
|
+
match = "^\\s*(class)\\s+(([.a-zA-Z0-9_:]+(\\s*(<)\\s*[.a-zA-Z0-9_:]+)?)|((<<)\\s*[.a-zA-Z0-9_:]+))";
|
43
|
+
name = "meta.class.ruby";
|
44
|
+
},
|
45
|
+
{
|
46
|
+
captures = {
|
47
|
+
1 = {
|
48
|
+
name = "keyword.control.module.ruby";
|
49
|
+
};
|
50
|
+
2 = {
|
51
|
+
name = "entity.name.type.module.ruby";
|
52
|
+
};
|
53
|
+
3 = {
|
54
|
+
name = "entity.other.inherited-class.module.first.ruby";
|
55
|
+
};
|
56
|
+
4 = {
|
57
|
+
name = "punctuation.separator.inheritance.ruby";
|
58
|
+
};
|
59
|
+
5 = {
|
60
|
+
name = "entity.other.inherited-class.module.second.ruby";
|
61
|
+
};
|
62
|
+
6 = {
|
63
|
+
name = "punctuation.separator.inheritance.ruby";
|
64
|
+
};
|
65
|
+
7 = {
|
66
|
+
name = "entity.other.inherited-class.module.third.ruby";
|
67
|
+
};
|
68
|
+
8 = {
|
69
|
+
name = "punctuation.separator.inheritance.ruby";
|
70
|
+
};
|
71
|
+
};
|
72
|
+
match = "^\\s*(module)\\s+(([A-Z]\\w*(::))?([A-Z]\\w*(::))?([A-Z]\\w*(::))*[A-Z]\\w*)";
|
73
|
+
name = "meta.module.ruby";
|
74
|
+
},
|
75
|
+
{
|
76
|
+
comment = "else if is a common mistake carried over from other languages. it works if you put in a second end, but it\U2019s never what you want.";
|
77
|
+
match = "(?<!\\.)\\belse(\\s)+if\\b";
|
78
|
+
name = "invalid.deprecated.ruby";
|
79
|
+
},
|
80
|
+
{
|
81
|
+
comment = "everything being a reserved word, not a value and needing a 'end' is a..";
|
82
|
+
match = "(?<!\\.)\\b(BEGIN|begin|case|class|else|elsif|END|end|ensure|for|if|in|module|rescue|then|unless|until|when|while)\\b(?![?!])";
|
83
|
+
name = "keyword.control.ruby";
|
84
|
+
},
|
85
|
+
{
|
86
|
+
comment = "contextual smart pair support for block parameters";
|
87
|
+
match = "(?<!\\.)\\bdo\\b\\s*";
|
88
|
+
name = "keyword.control.start-block.ruby";
|
89
|
+
},
|
90
|
+
{
|
91
|
+
comment = "contextual smart pair support";
|
92
|
+
match = "(?<=\\{)(\\s+)";
|
93
|
+
name = "meta.syntax.ruby.start-block";
|
94
|
+
},
|
95
|
+
{
|
96
|
+
comment = " as above, just doesn't need a 'end' and does a logic operation";
|
97
|
+
match = "(?<!\\.)\\b(and|not|or)\\b";
|
98
|
+
name = "keyword.operator.logical.ruby";
|
99
|
+
},
|
100
|
+
{
|
101
|
+
comment = " just as above but being not a logical operation";
|
102
|
+
match = "(?<!\\.)\\b(alias|alias_method|break|next|redo|retry|return|super|undef|yield)\\b(?![?!])|\\bdefined\\?|\\bblock_given\\?";
|
103
|
+
name = "keyword.control.pseudo-method.ruby";
|
104
|
+
},
|
105
|
+
{
|
106
|
+
match = "\\b(nil|true|false)\\b(?![?!])";
|
107
|
+
name = "constant.language.ruby";
|
108
|
+
},
|
109
|
+
{
|
110
|
+
match = "\\b(__(FILE|LINE)__|self)\\b(?![?!])";
|
111
|
+
name = "variable.language.ruby";
|
112
|
+
},
|
113
|
+
{
|
114
|
+
comment = " everything being a method but having a special function is a..";
|
115
|
+
match = "\\b(initialize|new|loop|include|extend|raise|attr_reader|attr_writer|attr_accessor|attr|catch|throw|private|module_function|public|protected)\\b(?![?!])";
|
116
|
+
name = "keyword.other.special-method.ruby";
|
117
|
+
},
|
118
|
+
{
|
119
|
+
begin = "\\b(require|gem)\\b";
|
120
|
+
captures = {
|
121
|
+
1 = {
|
122
|
+
name = "keyword.other.special-method.ruby";
|
123
|
+
};
|
124
|
+
};
|
125
|
+
end = "$|(?=#)";
|
126
|
+
name = "meta.require.ruby";
|
127
|
+
patterns = (
|
128
|
+
{
|
129
|
+
include = "$self";
|
130
|
+
}
|
131
|
+
);
|
132
|
+
},
|
133
|
+
{
|
134
|
+
captures = {
|
135
|
+
1 = {
|
136
|
+
name = "punctuation.definition.variable.ruby";
|
137
|
+
};
|
138
|
+
};
|
139
|
+
match = "(@)[a-zA-Z_]\\w*";
|
140
|
+
name = "variable.other.readwrite.instance.ruby";
|
141
|
+
},
|
142
|
+
{
|
143
|
+
captures = {
|
144
|
+
1 = {
|
145
|
+
name = "punctuation.definition.variable.ruby";
|
146
|
+
};
|
147
|
+
};
|
148
|
+
match = "(@@)[a-zA-Z_]\\w*";
|
149
|
+
name = "variable.other.readwrite.class.ruby";
|
150
|
+
},
|
151
|
+
{
|
152
|
+
captures = {
|
153
|
+
1 = {
|
154
|
+
name = "punctuation.definition.variable.ruby";
|
155
|
+
};
|
156
|
+
};
|
157
|
+
match = "(\\$)[a-zA-Z_]\\w*";
|
158
|
+
name = "variable.other.readwrite.global.ruby";
|
159
|
+
},
|
160
|
+
{
|
161
|
+
captures = {
|
162
|
+
1 = {
|
163
|
+
name = "punctuation.definition.variable.ruby";
|
164
|
+
};
|
165
|
+
};
|
166
|
+
match = "(\\$)(!|@|&|`|'|\\+|\\d+|~|=|/|\\\\|,|;|\\.|<|>|_|\\*|\\$|\\?|:|\"|-[0adFiIlpv])";
|
167
|
+
name = "variable.other.readwrite.global.pre-defined.ruby";
|
168
|
+
},
|
169
|
+
{
|
170
|
+
begin = "\\b(ENV)\\[";
|
171
|
+
beginCaptures = {
|
172
|
+
1 = {
|
173
|
+
name = "variable.other.constant.ruby";
|
174
|
+
};
|
175
|
+
};
|
176
|
+
end = "\\]";
|
177
|
+
name = "meta.environment-variable.ruby";
|
178
|
+
patterns = (
|
179
|
+
{
|
180
|
+
include = "$self";
|
181
|
+
}
|
182
|
+
);
|
183
|
+
},
|
184
|
+
{
|
185
|
+
match = "\\b[A-Z]\\w*(?=((\\.|::)[A-Za-z]|\\[))";
|
186
|
+
name = "support.class.ruby";
|
187
|
+
},
|
188
|
+
{
|
189
|
+
match = "\\b[A-Z]\\w*\\b";
|
190
|
+
name = "variable.other.constant.ruby";
|
191
|
+
},
|
192
|
+
{
|
193
|
+
begin = "(?x)\n\t\t\t (?=def\\b) # an optimization to help Oniguruma fail fast\n\t\t\t (?<=^|\\s)(def)\\s+ # the def keyword\n\t\t\t ( (?>[a-zA-Z_]\\w*(?>\\.|::))? # a method name prefix\n\t\t\t (?>[a-zA-Z_]\\w*(?>[?!]|=(?!>))? # the method name\n\t\t\t |===?|>[>=]?|<=>|<[<=]?|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[\\]=?) ) # \U2026or an operator method\n\t\t\t \\s*(\\() # the openning parenthesis for arguments\n\t\t\t ";
|
194
|
+
beginCaptures = {
|
195
|
+
1 = {
|
196
|
+
name = "keyword.control.def.ruby";
|
197
|
+
};
|
198
|
+
2 = {
|
199
|
+
name = "entity.name.function.ruby";
|
200
|
+
};
|
201
|
+
3 = {
|
202
|
+
name = "punctuation.definition.parameters.ruby";
|
203
|
+
};
|
204
|
+
};
|
205
|
+
comment = "the method pattern comes from the symbol pattern, see there for a explaination";
|
206
|
+
contentName = "variable.parameter.function.ruby";
|
207
|
+
end = "\\)";
|
208
|
+
endCaptures = {
|
209
|
+
0 = {
|
210
|
+
name = "punctuation.definition.parameters.ruby";
|
211
|
+
};
|
212
|
+
};
|
213
|
+
name = "meta.function.method.with-arguments.ruby";
|
214
|
+
patterns = (
|
215
|
+
{
|
216
|
+
include = "$self";
|
217
|
+
}
|
218
|
+
);
|
219
|
+
},
|
220
|
+
{
|
221
|
+
begin = "(?x)\n\t\t\t (?=def\\b) # an optimization to help Oniguruma fail fast\n\t\t\t (?<=^|\\s)(def)\\s+ # the def keyword\n\t\t\t ( (?>[a-zA-Z_]\\w*(?>\\.|::))? # a method name prefix\n\t\t\t (?>[a-zA-Z_]\\w*(?>[?!]|=(?!>))? # the method name\n\t\t\t |===?|>[>=]?|<=>|<[<=]?|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[\\]=?) ) # \U2026or an operator method\n\t\t\t [ \\t] # the space separating the arguments\n\t\t\t (?=[ \\t]*[^\\s#]) # make sure arguments and not a comment follow\n\t\t\t ";
|
222
|
+
beginCaptures = {
|
223
|
+
1 = {
|
224
|
+
name = "keyword.control.def.ruby";
|
225
|
+
};
|
226
|
+
2 = {
|
227
|
+
name = "entity.name.function.ruby";
|
228
|
+
};
|
229
|
+
};
|
230
|
+
comment = "same as the previous rule, but without parentheses around the arguments";
|
231
|
+
contentName = "variable.parameter.function.ruby";
|
232
|
+
end = "$";
|
233
|
+
name = "meta.function.method.with-arguments.ruby";
|
234
|
+
patterns = (
|
235
|
+
{
|
236
|
+
include = "$self";
|
237
|
+
}
|
238
|
+
);
|
239
|
+
},
|
240
|
+
{
|
241
|
+
captures = {
|
242
|
+
1 = {
|
243
|
+
name = "keyword.control.def.ruby";
|
244
|
+
};
|
245
|
+
3 = {
|
246
|
+
name = "entity.name.function.ruby";
|
247
|
+
};
|
248
|
+
};
|
249
|
+
comment = " the optional name is just to catch the def also without a method-name";
|
250
|
+
match = "(?x)\n\t\t\t (?=def\\b) # an optimization to help Oniguruma fail fast\n\t\t\t (?<=^|\\s)(def)\\b # the def keyword\n\t\t\t ( \\s+ # an optional group of whitespace followed by\U2026\n\t\t\t ( (?>[a-zA-Z_]\\w*(?>\\.|::))? # a method name prefix\n\t\t\t (?>[a-zA-Z_]\\w*(?>[?!]|=(?!>))? # the method name\n\t\t\t |===?|>[>=]?|<=>|<[<=]?|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[\\]=?) ) )? # \U2026or an operator method\n\t\t\t ";
|
251
|
+
name = "meta.function.method.without-arguments.ruby";
|
252
|
+
},
|
253
|
+
{
|
254
|
+
match = "\\b(0[xX]\\h(?>_?\\h)*|\\d(?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?|0[bB][01]+)\\b";
|
255
|
+
name = "constant.numeric.ruby";
|
256
|
+
},
|
257
|
+
{
|
258
|
+
begin = ":'";
|
259
|
+
captures = {
|
260
|
+
0 = {
|
261
|
+
name = "punctuation.definition.constant.ruby";
|
262
|
+
};
|
263
|
+
};
|
264
|
+
end = "'";
|
265
|
+
name = "constant.other.symbol.single-quoted.ruby";
|
266
|
+
patterns = (
|
267
|
+
{
|
268
|
+
match = "\\\\['\\\\]";
|
269
|
+
name = "constant.character.escape.ruby";
|
270
|
+
}
|
271
|
+
);
|
272
|
+
},
|
273
|
+
{
|
274
|
+
begin = ":\"";
|
275
|
+
captures = {
|
276
|
+
0 = {
|
277
|
+
name = "punctuation.definition.constant.ruby";
|
278
|
+
};
|
279
|
+
};
|
280
|
+
end = "\"";
|
281
|
+
name = "constant.other.symbol.double-quoted.ruby";
|
282
|
+
patterns = (
|
283
|
+
{
|
284
|
+
include = "#interpolated_ruby";
|
285
|
+
},
|
286
|
+
{
|
287
|
+
include = "#escaped_char";
|
288
|
+
}
|
289
|
+
);
|
290
|
+
},
|
291
|
+
{
|
292
|
+
begin = "'";
|
293
|
+
beginCaptures = {
|
294
|
+
0 = {
|
295
|
+
name = "punctuation.definition.string.begin.ruby";
|
296
|
+
};
|
297
|
+
};
|
298
|
+
comment = "single quoted string (does not allow interpolation)";
|
299
|
+
end = "'";
|
300
|
+
endCaptures = {
|
301
|
+
0 = {
|
302
|
+
name = "punctuation.definition.string.end.ruby";
|
303
|
+
};
|
304
|
+
};
|
305
|
+
name = "string.quoted.single.ruby";
|
306
|
+
patterns = (
|
307
|
+
{
|
308
|
+
match = "\\\\'|\\\\\\\\";
|
309
|
+
name = "constant.character.escape.ruby";
|
310
|
+
}
|
311
|
+
);
|
312
|
+
},
|
313
|
+
{
|
314
|
+
begin = "\"";
|
315
|
+
beginCaptures = {
|
316
|
+
0 = {
|
317
|
+
name = "punctuation.definition.string.begin.ruby";
|
318
|
+
};
|
319
|
+
};
|
320
|
+
comment = "double quoted string (allows for interpolation)";
|
321
|
+
end = "\"";
|
322
|
+
endCaptures = {
|
323
|
+
0 = {
|
324
|
+
name = "punctuation.definition.string.end.ruby";
|
325
|
+
};
|
326
|
+
};
|
327
|
+
name = "string.quoted.double.ruby";
|
328
|
+
patterns = (
|
329
|
+
{
|
330
|
+
include = "#interpolated_ruby";
|
331
|
+
},
|
332
|
+
{
|
333
|
+
include = "#escaped_char";
|
334
|
+
}
|
335
|
+
);
|
336
|
+
},
|
337
|
+
{
|
338
|
+
begin = "`";
|
339
|
+
beginCaptures = {
|
340
|
+
0 = {
|
341
|
+
name = "punctuation.definition.string.begin.ruby";
|
342
|
+
};
|
343
|
+
};
|
344
|
+
comment = "execute string (allows for interpolation)";
|
345
|
+
end = "`";
|
346
|
+
endCaptures = {
|
347
|
+
0 = {
|
348
|
+
name = "punctuation.definition.string.end.ruby";
|
349
|
+
};
|
350
|
+
};
|
351
|
+
name = "string.interpolated.ruby";
|
352
|
+
patterns = (
|
353
|
+
{
|
354
|
+
include = "#interpolated_ruby";
|
355
|
+
},
|
356
|
+
{
|
357
|
+
include = "#escaped_char";
|
358
|
+
}
|
359
|
+
);
|
360
|
+
},
|
361
|
+
{
|
362
|
+
begin = "%x\\{";
|
363
|
+
beginCaptures = {
|
364
|
+
0 = {
|
365
|
+
name = "punctuation.definition.string.begin.ruby";
|
366
|
+
};
|
367
|
+
};
|
368
|
+
comment = "execute string (allow for interpolation)";
|
369
|
+
end = "\\}";
|
370
|
+
endCaptures = {
|
371
|
+
0 = {
|
372
|
+
name = "punctuation.definition.string.end.ruby";
|
373
|
+
};
|
374
|
+
};
|
375
|
+
name = "string.interpolated.ruby";
|
376
|
+
patterns = (
|
377
|
+
{
|
378
|
+
include = "#interpolated_ruby";
|
379
|
+
},
|
380
|
+
{
|
381
|
+
include = "#escaped_char";
|
382
|
+
},
|
383
|
+
{
|
384
|
+
include = "#nest_curly_i";
|
385
|
+
}
|
386
|
+
);
|
387
|
+
},
|
388
|
+
{
|
389
|
+
begin = "%x\\[";
|
390
|
+
beginCaptures = {
|
391
|
+
0 = {
|
392
|
+
name = "punctuation.definition.string.begin.ruby";
|
393
|
+
};
|
394
|
+
};
|
395
|
+
comment = "execute string (allow for interpolation)";
|
396
|
+
end = "\\]";
|
397
|
+
endCaptures = {
|
398
|
+
0 = {
|
399
|
+
name = "punctuation.definition.string.end.ruby";
|
400
|
+
};
|
401
|
+
};
|
402
|
+
name = "string.interpolated.ruby";
|
403
|
+
patterns = (
|
404
|
+
{
|
405
|
+
include = "#interpolated_ruby";
|
406
|
+
},
|
407
|
+
{
|
408
|
+
include = "#escaped_char";
|
409
|
+
},
|
410
|
+
{
|
411
|
+
include = "#nest_brackets_i";
|
412
|
+
}
|
413
|
+
);
|
414
|
+
},
|
415
|
+
{
|
416
|
+
begin = "%x\\<";
|
417
|
+
beginCaptures = {
|
418
|
+
0 = {
|
419
|
+
name = "punctuation.definition.string.begin.ruby";
|
420
|
+
};
|
421
|
+
};
|
422
|
+
comment = "execute string (allow for interpolation)";
|
423
|
+
end = "\\>";
|
424
|
+
endCaptures = {
|
425
|
+
0 = {
|
426
|
+
name = "punctuation.definition.string.end.ruby";
|
427
|
+
};
|
428
|
+
};
|
429
|
+
name = "string.interpolated.ruby";
|
430
|
+
patterns = (
|
431
|
+
{
|
432
|
+
include = "#interpolated_ruby";
|
433
|
+
},
|
434
|
+
{
|
435
|
+
include = "#escaped_char";
|
436
|
+
},
|
437
|
+
{
|
438
|
+
include = "#nest_ltgt_i";
|
439
|
+
}
|
440
|
+
);
|
441
|
+
},
|
442
|
+
{
|
443
|
+
begin = "%x\\(";
|
444
|
+
beginCaptures = {
|
445
|
+
0 = {
|
446
|
+
name = "punctuation.definition.string.begin.ruby";
|
447
|
+
};
|
448
|
+
};
|
449
|
+
comment = "execute string (allow for interpolation)";
|
450
|
+
end = "\\)";
|
451
|
+
endCaptures = {
|
452
|
+
0 = {
|
453
|
+
name = "punctuation.definition.string.end.ruby";
|
454
|
+
};
|
455
|
+
};
|
456
|
+
name = "string.interpolated.ruby";
|
457
|
+
patterns = (
|
458
|
+
{
|
459
|
+
include = "#interpolated_ruby";
|
460
|
+
},
|
461
|
+
{
|
462
|
+
include = "#escaped_char";
|
463
|
+
},
|
464
|
+
{
|
465
|
+
include = "#nest_parens_i";
|
466
|
+
}
|
467
|
+
);
|
468
|
+
},
|
469
|
+
{
|
470
|
+
begin = "%x([^\\w])";
|
471
|
+
beginCaptures = {
|
472
|
+
0 = {
|
473
|
+
name = "punctuation.definition.string.begin.ruby";
|
474
|
+
};
|
475
|
+
};
|
476
|
+
comment = "execute string (allow for interpolation)";
|
477
|
+
end = "\\1";
|
478
|
+
endCaptures = {
|
479
|
+
0 = {
|
480
|
+
name = "punctuation.definition.string.end.ruby";
|
481
|
+
};
|
482
|
+
};
|
483
|
+
name = "string.interpolated.ruby";
|
484
|
+
patterns = (
|
485
|
+
{
|
486
|
+
include = "#interpolated_ruby";
|
487
|
+
},
|
488
|
+
{
|
489
|
+
include = "#escaped_char";
|
490
|
+
}
|
491
|
+
);
|
492
|
+
},
|
493
|
+
{
|
494
|
+
begin = "(?x)\n\t\t\t (?:\n\t\t\t ^ # beginning of line\n\t\t\t | (?<= # or look-behind on:\n\t\t\t [=>~(?:\\[,|&;]\n\t\t\t | [\\s;]if\\s\t\t\t# keywords\n\t\t\t | [\\s;]elsif\\s\n\t\t\t | [\\s;]while\\s\n\t\t\t | [\\s;]unless\\s\n\t\t\t | [\\s;]when\\s\n\t\t\t | [\\s;]assert_match\\s\n\t\t\t | [\\s;]or\\s\t\t\t# boolean opperators\n\t\t\t | [\\s;]and\\s\n\t\t\t | [\\s;]not\\s\n\t\t\t | [\\s.]index\\s\t\t\t# methods\n\t\t\t | [\\s.]scan\\s\n\t\t\t | [\\s.]sub\\s\n\t\t\t | [\\s.]sub!\\s\n\t\t\t | [\\s.]gsub\\s\n\t\t\t | [\\s.]gsub!\\s\n\t\t\t | [\\s.]match\\s\n\t\t\t )\n\t\t\t | (?<= # or a look-behind with line anchor:\n\t\t\t ^when\\s # duplication necessary due to limits of regex\n\t\t\t | ^if\\s\n\t\t\t | ^elsif\\s\n\t\t\t | ^while\\s\n\t\t\t | ^unless\\s\n\t\t\t )\n\t\t\t )\n\t\t\t \\s*((/))(?![*+{}?])\n\t\t\t";
|
495
|
+
captures = {
|
496
|
+
1 = {
|
497
|
+
name = "string.regexp.classic.ruby";
|
498
|
+
};
|
499
|
+
2 = {
|
500
|
+
name = "punctuation.definition.string.ruby";
|
501
|
+
};
|
502
|
+
};
|
503
|
+
comment = "regular expressions (normal)\n\t\t\twe only start a regexp if the character before it (excluding whitespace)\n\t\t\tis what we think is before a regexp\n\t\t\t";
|
504
|
+
contentName = "string.regexp.classic.ruby";
|
505
|
+
end = "((/[eimnosux]*))";
|
506
|
+
patterns = (
|
507
|
+
{
|
508
|
+
include = "#regex_sub";
|
509
|
+
}
|
510
|
+
);
|
511
|
+
},
|
512
|
+
{
|
513
|
+
begin = "%r\\{";
|
514
|
+
beginCaptures = {
|
515
|
+
0 = {
|
516
|
+
name = "punctuation.definition.string.begin.ruby";
|
517
|
+
};
|
518
|
+
};
|
519
|
+
comment = "regular expressions (literal)";
|
520
|
+
end = "\\}[eimnosux]*";
|
521
|
+
endCaptures = {
|
522
|
+
0 = {
|
523
|
+
name = "punctuation.definition.string.end.ruby";
|
524
|
+
};
|
525
|
+
};
|
526
|
+
name = "string.regexp.mod-r.ruby";
|
527
|
+
patterns = (
|
528
|
+
{
|
529
|
+
include = "#regex_sub";
|
530
|
+
},
|
531
|
+
{
|
532
|
+
include = "#nest_curly_r";
|
533
|
+
}
|
534
|
+
);
|
535
|
+
},
|
536
|
+
{
|
537
|
+
begin = "%r\\[";
|
538
|
+
beginCaptures = {
|
539
|
+
0 = {
|
540
|
+
name = "punctuation.definition.string.begin.ruby";
|
541
|
+
};
|
542
|
+
};
|
543
|
+
comment = "regular expressions (literal)";
|
544
|
+
end = "\\][eimnosux]*";
|
545
|
+
endCaptures = {
|
546
|
+
0 = {
|
547
|
+
name = "punctuation.definition.string.end.ruby";
|
548
|
+
};
|
549
|
+
};
|
550
|
+
name = "string.regexp.mod-r.ruby";
|
551
|
+
patterns = (
|
552
|
+
{
|
553
|
+
include = "#regex_sub";
|
554
|
+
},
|
555
|
+
{
|
556
|
+
include = "#nest_brackets_r";
|
557
|
+
}
|
558
|
+
);
|
559
|
+
},
|
560
|
+
{
|
561
|
+
begin = "%r\\(";
|
562
|
+
beginCaptures = {
|
563
|
+
0 = {
|
564
|
+
name = "punctuation.definition.string.begin.ruby";
|
565
|
+
};
|
566
|
+
};
|
567
|
+
comment = "regular expressions (literal)";
|
568
|
+
end = "\\)[eimnosux]*";
|
569
|
+
endCaptures = {
|
570
|
+
0 = {
|
571
|
+
name = "punctuation.definition.string.end.ruby";
|
572
|
+
};
|
573
|
+
};
|
574
|
+
name = "string.regexp.mod-r.ruby";
|
575
|
+
patterns = (
|
576
|
+
{
|
577
|
+
include = "#regex_sub";
|
578
|
+
},
|
579
|
+
{
|
580
|
+
include = "#nest_parens_r";
|
581
|
+
}
|
582
|
+
);
|
583
|
+
},
|
584
|
+
{
|
585
|
+
begin = "%r\\<";
|
586
|
+
beginCaptures = {
|
587
|
+
0 = {
|
588
|
+
name = "punctuation.definition.string.begin.ruby";
|
589
|
+
};
|
590
|
+
};
|
591
|
+
comment = "regular expressions (literal)";
|
592
|
+
end = "\\>[eimnosux]*";
|
593
|
+
endCaptures = {
|
594
|
+
0 = {
|
595
|
+
name = "punctuation.definition.string.end.ruby";
|
596
|
+
};
|
597
|
+
};
|
598
|
+
name = "string.regexp.mod-r.ruby";
|
599
|
+
patterns = (
|
600
|
+
{
|
601
|
+
include = "#regex_sub";
|
602
|
+
},
|
603
|
+
{
|
604
|
+
include = "#nest_ltgt_r";
|
605
|
+
}
|
606
|
+
);
|
607
|
+
},
|
608
|
+
{
|
609
|
+
begin = "%r([^\\w])";
|
610
|
+
beginCaptures = {
|
611
|
+
0 = {
|
612
|
+
name = "punctuation.definition.string.begin.ruby";
|
613
|
+
};
|
614
|
+
};
|
615
|
+
comment = "regular expressions (literal)";
|
616
|
+
end = "\\1[eimnosux]*";
|
617
|
+
endCaptures = {
|
618
|
+
0 = {
|
619
|
+
name = "punctuation.definition.string.end.ruby";
|
620
|
+
};
|
621
|
+
};
|
622
|
+
name = "string.regexp.mod-r.ruby";
|
623
|
+
patterns = (
|
624
|
+
{
|
625
|
+
include = "#regex_sub";
|
626
|
+
}
|
627
|
+
);
|
628
|
+
},
|
629
|
+
{
|
630
|
+
begin = "%[QWSR]?\\(";
|
631
|
+
beginCaptures = {
|
632
|
+
0 = {
|
633
|
+
name = "punctuation.definition.string.begin.ruby";
|
634
|
+
};
|
635
|
+
};
|
636
|
+
comment = "literal capable of interpolation ()";
|
637
|
+
end = "\\)";
|
638
|
+
endCaptures = {
|
639
|
+
0 = {
|
640
|
+
name = "punctuation.definition.string.end.ruby";
|
641
|
+
};
|
642
|
+
};
|
643
|
+
name = "string.quoted.other.literal.upper.ruby";
|
644
|
+
patterns = (
|
645
|
+
{
|
646
|
+
include = "#interpolated_ruby";
|
647
|
+
},
|
648
|
+
{
|
649
|
+
include = "#escaped_char";
|
650
|
+
},
|
651
|
+
{
|
652
|
+
include = "#nest_parens_i";
|
653
|
+
}
|
654
|
+
);
|
655
|
+
},
|
656
|
+
{
|
657
|
+
begin = "%[QWSR]?\\[";
|
658
|
+
beginCaptures = {
|
659
|
+
0 = {
|
660
|
+
name = "punctuation.definition.string.begin.ruby";
|
661
|
+
};
|
662
|
+
};
|
663
|
+
comment = "literal capable of interpolation []";
|
664
|
+
end = "\\]";
|
665
|
+
endCaptures = {
|
666
|
+
0 = {
|
667
|
+
name = "punctuation.definition.string.end.ruby";
|
668
|
+
};
|
669
|
+
};
|
670
|
+
name = "string.quoted.other.literal.upper.ruby";
|
671
|
+
patterns = (
|
672
|
+
{
|
673
|
+
include = "#interpolated_ruby";
|
674
|
+
},
|
675
|
+
{
|
676
|
+
include = "#escaped_char";
|
677
|
+
},
|
678
|
+
{
|
679
|
+
include = "#nest_brackets_i";
|
680
|
+
}
|
681
|
+
);
|
682
|
+
},
|
683
|
+
{
|
684
|
+
begin = "%[QWSR]?\\<";
|
685
|
+
beginCaptures = {
|
686
|
+
0 = {
|
687
|
+
name = "punctuation.definition.string.begin.ruby";
|
688
|
+
};
|
689
|
+
};
|
690
|
+
comment = "literal capable of interpolation <>";
|
691
|
+
end = "\\>";
|
692
|
+
endCaptures = {
|
693
|
+
0 = {
|
694
|
+
name = "punctuation.definition.string.end.ruby";
|
695
|
+
};
|
696
|
+
};
|
697
|
+
name = "string.quoted.other.literal.upper.ruby";
|
698
|
+
patterns = (
|
699
|
+
{
|
700
|
+
include = "#interpolated_ruby";
|
701
|
+
},
|
702
|
+
{
|
703
|
+
include = "#escaped_char";
|
704
|
+
},
|
705
|
+
{
|
706
|
+
include = "#nest_ltgt_i";
|
707
|
+
}
|
708
|
+
);
|
709
|
+
},
|
710
|
+
{
|
711
|
+
begin = "%[QWSR]?\\{";
|
712
|
+
beginCaptures = {
|
713
|
+
0 = {
|
714
|
+
name = "punctuation.definition.string.begin.ruby";
|
715
|
+
};
|
716
|
+
};
|
717
|
+
comment = "literal capable of interpolation -- {}";
|
718
|
+
end = "\\}";
|
719
|
+
endCaptures = {
|
720
|
+
0 = {
|
721
|
+
name = "punctuation.definition.string.end.ruby";
|
722
|
+
};
|
723
|
+
};
|
724
|
+
name = "string.quoted.double.ruby.mod";
|
725
|
+
patterns = (
|
726
|
+
{
|
727
|
+
include = "#interpolated_ruby";
|
728
|
+
},
|
729
|
+
{
|
730
|
+
include = "#escaped_char";
|
731
|
+
},
|
732
|
+
{
|
733
|
+
include = "#nest_curly_i";
|
734
|
+
}
|
735
|
+
);
|
736
|
+
},
|
737
|
+
{
|
738
|
+
begin = "%[QWSR]([^\\w])";
|
739
|
+
beginCaptures = {
|
740
|
+
0 = {
|
741
|
+
name = "punctuation.definition.string.begin.ruby";
|
742
|
+
};
|
743
|
+
};
|
744
|
+
comment = "literal capable of interpolation -- wildcard";
|
745
|
+
end = "\\1";
|
746
|
+
endCaptures = {
|
747
|
+
0 = {
|
748
|
+
name = "punctuation.definition.string.end.ruby";
|
749
|
+
};
|
750
|
+
};
|
751
|
+
name = "string.quoted.other.literal.upper.ruby";
|
752
|
+
patterns = (
|
753
|
+
{
|
754
|
+
include = "#interpolated_ruby";
|
755
|
+
},
|
756
|
+
{
|
757
|
+
include = "#escaped_char";
|
758
|
+
}
|
759
|
+
);
|
760
|
+
},
|
761
|
+
{
|
762
|
+
begin = "%([^\\w\\s=])";
|
763
|
+
beginCaptures = {
|
764
|
+
0 = {
|
765
|
+
name = "punctuation.definition.string.begin.ruby";
|
766
|
+
};
|
767
|
+
};
|
768
|
+
comment = "literal capable of interpolation -- wildcard";
|
769
|
+
end = "\\1";
|
770
|
+
endCaptures = {
|
771
|
+
0 = {
|
772
|
+
name = "punctuation.definition.string.end.ruby";
|
773
|
+
};
|
774
|
+
};
|
775
|
+
name = "string.quoted.other.literal.other.ruby";
|
776
|
+
patterns = (
|
777
|
+
{
|
778
|
+
include = "#interpolated_ruby";
|
779
|
+
},
|
780
|
+
{
|
781
|
+
include = "#escaped_char";
|
782
|
+
}
|
783
|
+
);
|
784
|
+
},
|
785
|
+
{
|
786
|
+
begin = "%[qws]\\(";
|
787
|
+
beginCaptures = {
|
788
|
+
0 = {
|
789
|
+
name = "punctuation.definition.string.begin.ruby";
|
790
|
+
};
|
791
|
+
};
|
792
|
+
comment = "literal incapable of interpolation -- ()";
|
793
|
+
end = "\\)";
|
794
|
+
endCaptures = {
|
795
|
+
0 = {
|
796
|
+
name = "punctuation.definition.string.end.ruby";
|
797
|
+
};
|
798
|
+
};
|
799
|
+
name = "string.quoted.other.literal.lower.ruby";
|
800
|
+
patterns = (
|
801
|
+
{
|
802
|
+
match = "\\\\\\)|\\\\\\\\";
|
803
|
+
name = "constant.character.escape.ruby";
|
804
|
+
},
|
805
|
+
{
|
806
|
+
include = "#nest_parens";
|
807
|
+
}
|
808
|
+
);
|
809
|
+
},
|
810
|
+
{
|
811
|
+
begin = "%[qws]\\<";
|
812
|
+
beginCaptures = {
|
813
|
+
0 = {
|
814
|
+
name = "punctuation.definition.string.begin.ruby";
|
815
|
+
};
|
816
|
+
};
|
817
|
+
comment = "literal incapable of interpolation -- <>";
|
818
|
+
end = "\\>";
|
819
|
+
endCaptures = {
|
820
|
+
0 = {
|
821
|
+
name = "punctuation.definition.string.end.ruby";
|
822
|
+
};
|
823
|
+
};
|
824
|
+
name = "string.quoted.other.literal.lower.ruby";
|
825
|
+
patterns = (
|
826
|
+
{
|
827
|
+
match = "\\\\\\>|\\\\\\\\";
|
828
|
+
name = "constant.character.escape.ruby";
|
829
|
+
},
|
830
|
+
{
|
831
|
+
include = "#nest_ltgt";
|
832
|
+
}
|
833
|
+
);
|
834
|
+
},
|
835
|
+
{
|
836
|
+
begin = "%[qws]\\[";
|
837
|
+
beginCaptures = {
|
838
|
+
0 = {
|
839
|
+
name = "punctuation.definition.string.begin.ruby";
|
840
|
+
};
|
841
|
+
};
|
842
|
+
comment = "literal incapable of interpolation -- []";
|
843
|
+
end = "\\]";
|
844
|
+
endCaptures = {
|
845
|
+
0 = {
|
846
|
+
name = "punctuation.definition.string.end.ruby";
|
847
|
+
};
|
848
|
+
};
|
849
|
+
name = "string.quoted.other.literal.lower.ruby";
|
850
|
+
patterns = (
|
851
|
+
{
|
852
|
+
match = "\\\\\\]|\\\\\\\\";
|
853
|
+
name = "constant.character.escape.ruby";
|
854
|
+
},
|
855
|
+
{
|
856
|
+
include = "#nest_brackets";
|
857
|
+
}
|
858
|
+
);
|
859
|
+
},
|
860
|
+
{
|
861
|
+
begin = "%[qws]\\{";
|
862
|
+
beginCaptures = {
|
863
|
+
0 = {
|
864
|
+
name = "punctuation.definition.string.begin.ruby";
|
865
|
+
};
|
866
|
+
};
|
867
|
+
comment = "literal incapable of interpolation -- {}";
|
868
|
+
end = "\\}";
|
869
|
+
endCaptures = {
|
870
|
+
0 = {
|
871
|
+
name = "punctuation.definition.string.end.ruby";
|
872
|
+
};
|
873
|
+
};
|
874
|
+
name = "string.quoted.other.literal.lower.ruby";
|
875
|
+
patterns = (
|
876
|
+
{
|
877
|
+
match = "\\\\\\}|\\\\\\\\";
|
878
|
+
name = "constant.character.escape.ruby";
|
879
|
+
},
|
880
|
+
{
|
881
|
+
include = "#nest_curly";
|
882
|
+
}
|
883
|
+
);
|
884
|
+
},
|
885
|
+
{
|
886
|
+
begin = "%[qws]([^\\w])";
|
887
|
+
beginCaptures = {
|
888
|
+
0 = {
|
889
|
+
name = "punctuation.definition.string.begin.ruby";
|
890
|
+
};
|
891
|
+
};
|
892
|
+
comment = "literal incapable of interpolation -- wildcard";
|
893
|
+
end = "\\1";
|
894
|
+
endCaptures = {
|
895
|
+
0 = {
|
896
|
+
name = "punctuation.definition.string.end.ruby";
|
897
|
+
};
|
898
|
+
};
|
899
|
+
name = "string.quoted.other.literal.lower.ruby";
|
900
|
+
patterns = (
|
901
|
+
{
|
902
|
+
comment = "Cant be named because its not neccesarily an escape.";
|
903
|
+
match = "\\\\.";
|
904
|
+
}
|
905
|
+
);
|
906
|
+
},
|
907
|
+
{
|
908
|
+
captures = {
|
909
|
+
1 = {
|
910
|
+
name = "punctuation.definition.constant.ruby";
|
911
|
+
};
|
912
|
+
};
|
913
|
+
comment = symbols;
|
914
|
+
match = "(?<!:)(:)(?>[a-zA-Z_]\\w*(?>[?!]|=(?![>=]))?|===?|>[>=]?|<[<=]?|<=>|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[\\]=?|@@?[a-zA-Z_]\\w*)";
|
915
|
+
name = "constant.other.symbol.ruby";
|
916
|
+
},
|
917
|
+
{
|
918
|
+
begin = "^=begin";
|
919
|
+
captures = {
|
920
|
+
0 = {
|
921
|
+
name = "punctuation.definition.comment.ruby";
|
922
|
+
};
|
923
|
+
};
|
924
|
+
comment = "multiline comments";
|
925
|
+
end = "^=end";
|
926
|
+
name = "comment.block.documentation.ruby";
|
927
|
+
},
|
928
|
+
{
|
929
|
+
captures = {
|
930
|
+
1 = {
|
931
|
+
name = "punctuation.definition.comment.ruby";
|
932
|
+
};
|
933
|
+
};
|
934
|
+
match = "(?:^[ \\t]+)?(#).*$\\n?";
|
935
|
+
name = "comment.line.number-sign.ruby";
|
936
|
+
},
|
937
|
+
{
|
938
|
+
comment = "\n\t\t\tmatches questionmark-letters.\n\n\t\t\texamples (1st alternation = hex):\n\t\t\t?\\x1 ?\\x61\n\n\t\t\texamples (2nd alternation = octal):\n\t\t\t?\\0 ?\\07 ?\\017\n\n\t\t\texamples (3rd alternation = escaped):\n\t\t\t?\\n ?\\b\n\n\t\t\texamples (4th alternation = meta-ctrl):\n\t\t\t?\\C-a ?\\M-a ?\\C-\\M-\\C-\\M-a\n\n\t\t\texamples (4th alternation = normal):\n\t\t\t?a ?A ?0 \n\t\t\t?* ?\" ?( \n\t\t\t?. ?#\n\t\t\t\n\t\t\t\n\t\t\tthe negative lookbehind prevents against matching\n\t\t\tp(42.tainted?)\n\t\t\t";
|
939
|
+
match = "(?<!\\w)\\?(\\\\(x\\h{1,2}(?!\\h)\\b|0[0-7]{0,2}(?![0-7])\\b|[^x0MC])|(\\\\[MC]-)+\\w|[^\\s\\\\])";
|
940
|
+
name = "constant.numeric.ruby";
|
941
|
+
},
|
942
|
+
{
|
943
|
+
begin = "^__END__\\n";
|
944
|
+
captures = {
|
945
|
+
0 = {
|
946
|
+
name = "string.unquoted.program-block.ruby";
|
947
|
+
};
|
948
|
+
};
|
949
|
+
comment = "__END__ marker";
|
950
|
+
contentName = "text.plain";
|
951
|
+
end = "(?=not)impossible";
|
952
|
+
patterns = (
|
953
|
+
{
|
954
|
+
begin = "(?=<?xml|<(?i:html\\b)|!DOCTYPE (?i:html\\b))";
|
955
|
+
end = "(?=not)impossible";
|
956
|
+
name = "text.html.embedded.ruby";
|
957
|
+
patterns = (
|
958
|
+
{
|
959
|
+
include = "text.html.basic";
|
960
|
+
}
|
961
|
+
);
|
962
|
+
}
|
963
|
+
);
|
964
|
+
},
|
965
|
+
{
|
966
|
+
begin = "(?>\\=\\s*<<(\\w+))(?!\\s+#\\s*([Cc]|sh|[Jj]ava))";
|
967
|
+
beginCaptures = {
|
968
|
+
0 = {
|
969
|
+
name = "punctuation.definition.string.begin.ruby";
|
970
|
+
};
|
971
|
+
};
|
972
|
+
end = "^\\1$";
|
973
|
+
endCaptures = {
|
974
|
+
0 = {
|
975
|
+
name = "punctuation.definition.string.end.ruby";
|
976
|
+
};
|
977
|
+
};
|
978
|
+
name = "string.unquoted.heredoc.ruby";
|
979
|
+
patterns = (
|
980
|
+
{
|
981
|
+
include = "#heredoc";
|
982
|
+
},
|
983
|
+
{
|
984
|
+
include = "#interpolated_ruby";
|
985
|
+
},
|
986
|
+
{
|
987
|
+
include = "#escaped_char";
|
988
|
+
}
|
989
|
+
);
|
990
|
+
},
|
991
|
+
{
|
992
|
+
begin = "(?><<-HTML\\b)";
|
993
|
+
beginCaptures = {
|
994
|
+
0 = {
|
995
|
+
name = "punctuation.definition.string.begin.ruby";
|
996
|
+
};
|
997
|
+
};
|
998
|
+
comment = "heredoc with embedded HTML and indented terminator";
|
999
|
+
contentName = "text.html.embedded.ruby";
|
1000
|
+
end = "\\s*HTML$";
|
1001
|
+
endCaptures = {
|
1002
|
+
0 = {
|
1003
|
+
name = "punctuation.definition.string.end.ruby";
|
1004
|
+
};
|
1005
|
+
};
|
1006
|
+
name = "string.unquoted.embedded.html.ruby";
|
1007
|
+
patterns = (
|
1008
|
+
{
|
1009
|
+
include = "#heredoc";
|
1010
|
+
},
|
1011
|
+
{
|
1012
|
+
include = "text.html.basic";
|
1013
|
+
},
|
1014
|
+
{
|
1015
|
+
include = "#interpolated_ruby";
|
1016
|
+
},
|
1017
|
+
{
|
1018
|
+
include = "#escaped_char";
|
1019
|
+
}
|
1020
|
+
);
|
1021
|
+
},
|
1022
|
+
{
|
1023
|
+
begin = "(?><<-SQL\\b)";
|
1024
|
+
beginCaptures = {
|
1025
|
+
0 = {
|
1026
|
+
name = "punctuation.definition.string.begin.ruby";
|
1027
|
+
};
|
1028
|
+
};
|
1029
|
+
comment = "heredoc with embedded SQL and indented terminator";
|
1030
|
+
contentName = "text.sql.embedded.ruby";
|
1031
|
+
end = "\\s*SQL$";
|
1032
|
+
endCaptures = {
|
1033
|
+
0 = {
|
1034
|
+
name = "punctuation.definition.string.end.ruby";
|
1035
|
+
};
|
1036
|
+
};
|
1037
|
+
name = "string.unquoted.embedded.sql.ruby";
|
1038
|
+
patterns = (
|
1039
|
+
{
|
1040
|
+
include = "#heredoc";
|
1041
|
+
},
|
1042
|
+
{
|
1043
|
+
include = "source.sql";
|
1044
|
+
},
|
1045
|
+
{
|
1046
|
+
include = "#interpolated_ruby";
|
1047
|
+
},
|
1048
|
+
{
|
1049
|
+
include = "#escaped_char";
|
1050
|
+
}
|
1051
|
+
);
|
1052
|
+
},
|
1053
|
+
{
|
1054
|
+
begin = "(?><<-([\"\\\\']?)(\\w+_(?i:eval))\\1)";
|
1055
|
+
beginCaptures = {
|
1056
|
+
0 = {
|
1057
|
+
name = "punctuation.definition.string.begin.ruby";
|
1058
|
+
};
|
1059
|
+
};
|
1060
|
+
comment = "ruby code in heredoc, interpolated";
|
1061
|
+
end = "\\s*\\2$";
|
1062
|
+
endCaptures = {
|
1063
|
+
0 = {
|
1064
|
+
name = "punctuation.definition.string.end.ruby";
|
1065
|
+
};
|
1066
|
+
};
|
1067
|
+
name = "string.unquoted.embedded.ruby.ruby";
|
1068
|
+
patterns = (
|
1069
|
+
{
|
1070
|
+
include = "#heredoc";
|
1071
|
+
},
|
1072
|
+
{
|
1073
|
+
include = "#interpolated_ruby";
|
1074
|
+
},
|
1075
|
+
{
|
1076
|
+
include = "source.ruby";
|
1077
|
+
},
|
1078
|
+
{
|
1079
|
+
include = "#escaped_char";
|
1080
|
+
}
|
1081
|
+
);
|
1082
|
+
},
|
1083
|
+
{
|
1084
|
+
begin = "(?><<-(\\w+))";
|
1085
|
+
beginCaptures = {
|
1086
|
+
0 = {
|
1087
|
+
name = "punctuation.definition.string.begin.ruby";
|
1088
|
+
};
|
1089
|
+
};
|
1090
|
+
comment = "heredoc with indented terminator";
|
1091
|
+
end = "\\s*\\1$";
|
1092
|
+
endCaptures = {
|
1093
|
+
0 = {
|
1094
|
+
name = "punctuation.definition.string.end.ruby";
|
1095
|
+
};
|
1096
|
+
};
|
1097
|
+
name = "string.unquoted.heredoc.ruby";
|
1098
|
+
patterns = (
|
1099
|
+
{
|
1100
|
+
include = "#heredoc";
|
1101
|
+
},
|
1102
|
+
{
|
1103
|
+
include = "#interpolated_ruby";
|
1104
|
+
},
|
1105
|
+
{
|
1106
|
+
include = "#escaped_char";
|
1107
|
+
}
|
1108
|
+
);
|
1109
|
+
},
|
1110
|
+
{
|
1111
|
+
begin = "(?>\\=\\s*<<(\\w+))(?=\\s+#\\s*[Cc](?!(\\+\\+|[Ss][Ss])))";
|
1112
|
+
beginCaptures = {
|
1113
|
+
0 = {
|
1114
|
+
name = "punctuation.definition.string.begin.ruby";
|
1115
|
+
};
|
1116
|
+
};
|
1117
|
+
end = "^\\1$";
|
1118
|
+
endCaptures = {
|
1119
|
+
0 = {
|
1120
|
+
name = "punctuation.definition.string.end.ruby";
|
1121
|
+
};
|
1122
|
+
};
|
1123
|
+
name = "string.unquoted.embedded.c.ruby";
|
1124
|
+
patterns = (
|
1125
|
+
{
|
1126
|
+
include = "#heredoc";
|
1127
|
+
},
|
1128
|
+
{
|
1129
|
+
include = "source.c";
|
1130
|
+
},
|
1131
|
+
{
|
1132
|
+
include = "#interpolated_ruby";
|
1133
|
+
},
|
1134
|
+
{
|
1135
|
+
include = "#escaped_char";
|
1136
|
+
}
|
1137
|
+
);
|
1138
|
+
},
|
1139
|
+
{
|
1140
|
+
begin = "(?>\\=\\s*<<(\\w+))(?=\\s+#\\s*[Cc]\\+\\+)";
|
1141
|
+
beginCaptures = {
|
1142
|
+
0 = {
|
1143
|
+
name = "punctuation.definition.string.begin.ruby";
|
1144
|
+
};
|
1145
|
+
};
|
1146
|
+
end = "^\\1$";
|
1147
|
+
endCaptures = {
|
1148
|
+
0 = {
|
1149
|
+
name = "punctuation.definition.string.end.ruby";
|
1150
|
+
};
|
1151
|
+
};
|
1152
|
+
name = "string.unquoted.embedded.cplusplus.ruby";
|
1153
|
+
patterns = (
|
1154
|
+
{
|
1155
|
+
include = "#heredoc";
|
1156
|
+
},
|
1157
|
+
{
|
1158
|
+
include = "source.c++";
|
1159
|
+
},
|
1160
|
+
{
|
1161
|
+
include = "#interpolated_ruby";
|
1162
|
+
},
|
1163
|
+
{
|
1164
|
+
include = "#escaped_char";
|
1165
|
+
}
|
1166
|
+
);
|
1167
|
+
},
|
1168
|
+
{
|
1169
|
+
begin = "(?>\\=\\s*<<(\\w+))(?=\\s+#\\s*[Cc][Ss][Ss])";
|
1170
|
+
beginCaptures = {
|
1171
|
+
0 = {
|
1172
|
+
name = "punctuation.definition.string.begin.ruby";
|
1173
|
+
};
|
1174
|
+
};
|
1175
|
+
end = "^\\1$";
|
1176
|
+
endCaptures = {
|
1177
|
+
0 = {
|
1178
|
+
name = "punctuation.definition.string.end.ruby";
|
1179
|
+
};
|
1180
|
+
};
|
1181
|
+
name = "string.unquoted.embedded.css.ruby";
|
1182
|
+
patterns = (
|
1183
|
+
{
|
1184
|
+
include = "#heredoc";
|
1185
|
+
},
|
1186
|
+
{
|
1187
|
+
include = "source.css";
|
1188
|
+
},
|
1189
|
+
{
|
1190
|
+
include = "#interpolated_ruby";
|
1191
|
+
},
|
1192
|
+
{
|
1193
|
+
include = "#escaped_char";
|
1194
|
+
}
|
1195
|
+
);
|
1196
|
+
},
|
1197
|
+
{
|
1198
|
+
begin = "(?>\\=\\s*<<(\\w+))(?=\\s+#\\s*[Jj]ava[Ss]cript)";
|
1199
|
+
beginCaptures = {
|
1200
|
+
0 = {
|
1201
|
+
name = "punctuation.definition.string.begin.ruby";
|
1202
|
+
};
|
1203
|
+
};
|
1204
|
+
end = "^\\1$";
|
1205
|
+
endCaptures = {
|
1206
|
+
0 = {
|
1207
|
+
name = "punctuation.definition.string.end.ruby";
|
1208
|
+
};
|
1209
|
+
};
|
1210
|
+
name = "string.unquoted.embedded.js.ruby";
|
1211
|
+
patterns = (
|
1212
|
+
{
|
1213
|
+
include = "#heredoc";
|
1214
|
+
},
|
1215
|
+
{
|
1216
|
+
include = "source.js";
|
1217
|
+
},
|
1218
|
+
{
|
1219
|
+
include = "#interpolated_ruby";
|
1220
|
+
},
|
1221
|
+
{
|
1222
|
+
include = "#escaped_char";
|
1223
|
+
}
|
1224
|
+
);
|
1225
|
+
},
|
1226
|
+
{
|
1227
|
+
begin = "(?>\\=\\s*<<(\\w+))(?=\\s+#\\s*sh)";
|
1228
|
+
beginCaptures = {
|
1229
|
+
0 = {
|
1230
|
+
name = "punctuation.definition.string.begin.ruby";
|
1231
|
+
};
|
1232
|
+
};
|
1233
|
+
end = "^\\1$";
|
1234
|
+
endCaptures = {
|
1235
|
+
0 = {
|
1236
|
+
name = "punctuation.definition.string.end.ruby";
|
1237
|
+
};
|
1238
|
+
};
|
1239
|
+
name = "string.unquoted.embedded.shell.ruby";
|
1240
|
+
patterns = (
|
1241
|
+
{
|
1242
|
+
include = "#heredoc";
|
1243
|
+
},
|
1244
|
+
{
|
1245
|
+
include = "source.shell";
|
1246
|
+
},
|
1247
|
+
{
|
1248
|
+
include = "#interpolated_ruby";
|
1249
|
+
},
|
1250
|
+
{
|
1251
|
+
include = "#escaped_char";
|
1252
|
+
}
|
1253
|
+
);
|
1254
|
+
},
|
1255
|
+
{
|
1256
|
+
begin = "(?<=\\{|do|\\{\\s|do\\s)(\\|)";
|
1257
|
+
captures = {
|
1258
|
+
1 = {
|
1259
|
+
name = "punctuation.separator.variable.ruby";
|
1260
|
+
};
|
1261
|
+
};
|
1262
|
+
end = "(\\|)";
|
1263
|
+
patterns = (
|
1264
|
+
{
|
1265
|
+
match = "[_a-zA-Z][_a-zA-Z0-9]*";
|
1266
|
+
name = "variable.other.block.ruby";
|
1267
|
+
},
|
1268
|
+
{
|
1269
|
+
match = ",";
|
1270
|
+
name = "punctuation.separator.variable.ruby";
|
1271
|
+
}
|
1272
|
+
);
|
1273
|
+
},
|
1274
|
+
{
|
1275
|
+
match = "=>";
|
1276
|
+
name = "punctuation.separator.key-value";
|
1277
|
+
},
|
1278
|
+
{
|
1279
|
+
match = "<<=|%=|&=|\\*=|\\*\\*=|\\+=|\\-=|\\^=|\\|{1,2}=|/=|<<";
|
1280
|
+
name = "keyword.operator.assignment.augmented.ruby";
|
1281
|
+
},
|
1282
|
+
{
|
1283
|
+
match = "<=>|<(?!<|=)|>(?!<|=|>)|<=|>=|===|==|=~|!=|!~|(?<=[ \\t])\\?";
|
1284
|
+
name = "keyword.operator.comparison.ruby";
|
1285
|
+
},
|
1286
|
+
{
|
1287
|
+
match = "(?<=[ \\t])!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\^";
|
1288
|
+
name = "keyword.operator.logical.ruby";
|
1289
|
+
},
|
1290
|
+
{
|
1291
|
+
match = "(%|&|\\*\\*|\\*|\\+|\\-|/)";
|
1292
|
+
name = "keyword.operator.arithmetic.ruby";
|
1293
|
+
},
|
1294
|
+
{
|
1295
|
+
match = "=";
|
1296
|
+
name = "keyword.operator.assignment.ruby";
|
1297
|
+
},
|
1298
|
+
{
|
1299
|
+
match = "\\||~|>>";
|
1300
|
+
name = "keyword.operator.other.ruby";
|
1301
|
+
},
|
1302
|
+
{
|
1303
|
+
match = ":";
|
1304
|
+
name = "punctuation.separator.other.ruby";
|
1305
|
+
},
|
1306
|
+
{
|
1307
|
+
match = "\\;";
|
1308
|
+
name = "punctuation.separator.statement.ruby";
|
1309
|
+
},
|
1310
|
+
{
|
1311
|
+
match = ",";
|
1312
|
+
name = "punctuation.separator.object.ruby";
|
1313
|
+
},
|
1314
|
+
{
|
1315
|
+
match = "\\.|::";
|
1316
|
+
name = "punctuation.separator.method.ruby";
|
1317
|
+
},
|
1318
|
+
{
|
1319
|
+
match = "\\{|\\}";
|
1320
|
+
name = "punctuation.section.scope.ruby";
|
1321
|
+
},
|
1322
|
+
{
|
1323
|
+
match = "\\[|\\]";
|
1324
|
+
name = "punctuation.section.array.ruby";
|
1325
|
+
},
|
1326
|
+
{
|
1327
|
+
match = "\\(|\\)";
|
1328
|
+
name = "punctuation.section.function.ruby";
|
1329
|
+
}
|
1330
|
+
);
|
1331
|
+
repository = {
|
1332
|
+
"escaped_char" = {
|
1333
|
+
match = "\\\\(?:[0-7]{1,3}|x[\\da-fA-F]{1,2}|.)";
|
1334
|
+
name = "constant.character.escape.ruby";
|
1335
|
+
};
|
1336
|
+
heredoc = {
|
1337
|
+
begin = "^<<-?\\w+";
|
1338
|
+
end = "$";
|
1339
|
+
patterns = (
|
1340
|
+
{
|
1341
|
+
include = "$self";
|
1342
|
+
}
|
1343
|
+
);
|
1344
|
+
};
|
1345
|
+
"interpolated_ruby" = {
|
1346
|
+
patterns = (
|
1347
|
+
{
|
1348
|
+
captures = {
|
1349
|
+
0 = {
|
1350
|
+
name = "punctuation.section.embedded.ruby";
|
1351
|
+
};
|
1352
|
+
1 = {
|
1353
|
+
name = "source.ruby.embedded.source.empty";
|
1354
|
+
};
|
1355
|
+
};
|
1356
|
+
match = "#\\{(\\})";
|
1357
|
+
name = "source.ruby.embedded.source";
|
1358
|
+
},
|
1359
|
+
{
|
1360
|
+
begin = "#\\{";
|
1361
|
+
captures = {
|
1362
|
+
0 = {
|
1363
|
+
name = "punctuation.section.embedded.ruby";
|
1364
|
+
};
|
1365
|
+
};
|
1366
|
+
end = "\\}";
|
1367
|
+
name = "source.ruby.embedded.source";
|
1368
|
+
patterns = (
|
1369
|
+
{
|
1370
|
+
include = "#nest_curly_and_self";
|
1371
|
+
},
|
1372
|
+
{
|
1373
|
+
include = "$self";
|
1374
|
+
}
|
1375
|
+
);
|
1376
|
+
},
|
1377
|
+
{
|
1378
|
+
captures = {
|
1379
|
+
1 = {
|
1380
|
+
name = "punctuation.definition.variable.ruby";
|
1381
|
+
};
|
1382
|
+
};
|
1383
|
+
match = "(#@)[a-zA-Z_]\\w*";
|
1384
|
+
name = "variable.other.readwrite.instance.ruby";
|
1385
|
+
},
|
1386
|
+
{
|
1387
|
+
captures = {
|
1388
|
+
1 = {
|
1389
|
+
name = "punctuation.definition.variable.ruby";
|
1390
|
+
};
|
1391
|
+
};
|
1392
|
+
match = "(#@@)[a-zA-Z_]\\w*";
|
1393
|
+
name = "variable.other.readwrite.class.ruby";
|
1394
|
+
},
|
1395
|
+
{
|
1396
|
+
captures = {
|
1397
|
+
1 = {
|
1398
|
+
name = "punctuation.definition.variable.ruby";
|
1399
|
+
};
|
1400
|
+
};
|
1401
|
+
match = "(#\\$)[a-zA-Z_]\\w*";
|
1402
|
+
name = "variable.other.readwrite.global.ruby";
|
1403
|
+
}
|
1404
|
+
);
|
1405
|
+
};
|
1406
|
+
"nest_brackets" = {
|
1407
|
+
begin = "\\[";
|
1408
|
+
captures = {
|
1409
|
+
0 = {
|
1410
|
+
name = "punctuation.section.scope.ruby";
|
1411
|
+
};
|
1412
|
+
};
|
1413
|
+
end = "\\]";
|
1414
|
+
patterns = (
|
1415
|
+
{
|
1416
|
+
include = "#nest_brackets";
|
1417
|
+
}
|
1418
|
+
);
|
1419
|
+
};
|
1420
|
+
"nest_brackets_i" = {
|
1421
|
+
begin = "\\[";
|
1422
|
+
captures = {
|
1423
|
+
0 = {
|
1424
|
+
name = "punctuation.section.scope.ruby";
|
1425
|
+
};
|
1426
|
+
};
|
1427
|
+
end = "\\]";
|
1428
|
+
patterns = (
|
1429
|
+
{
|
1430
|
+
include = "#interpolated_ruby";
|
1431
|
+
},
|
1432
|
+
{
|
1433
|
+
include = "#escaped_char";
|
1434
|
+
},
|
1435
|
+
{
|
1436
|
+
include = "#nest_brackets_i";
|
1437
|
+
}
|
1438
|
+
);
|
1439
|
+
};
|
1440
|
+
"nest_brackets_r" = {
|
1441
|
+
begin = "\\[";
|
1442
|
+
captures = {
|
1443
|
+
0 = {
|
1444
|
+
name = "punctuation.section.scope.ruby";
|
1445
|
+
};
|
1446
|
+
};
|
1447
|
+
end = "\\]";
|
1448
|
+
patterns = (
|
1449
|
+
{
|
1450
|
+
include = "#regex_sub";
|
1451
|
+
},
|
1452
|
+
{
|
1453
|
+
include = "#nest_brackets_r";
|
1454
|
+
}
|
1455
|
+
);
|
1456
|
+
};
|
1457
|
+
"nest_curly" = {
|
1458
|
+
begin = "\\{";
|
1459
|
+
captures = {
|
1460
|
+
0 = {
|
1461
|
+
name = "punctuation.section.scope.ruby";
|
1462
|
+
};
|
1463
|
+
};
|
1464
|
+
end = "\\}";
|
1465
|
+
patterns = (
|
1466
|
+
{
|
1467
|
+
include = "#nest_curly";
|
1468
|
+
}
|
1469
|
+
);
|
1470
|
+
};
|
1471
|
+
"nest_curly_and_self" = {
|
1472
|
+
patterns = (
|
1473
|
+
{
|
1474
|
+
begin = "\\{";
|
1475
|
+
captures = {
|
1476
|
+
0 = {
|
1477
|
+
name = "punctuation.section.scope.ruby";
|
1478
|
+
};
|
1479
|
+
};
|
1480
|
+
end = "\\}";
|
1481
|
+
patterns = (
|
1482
|
+
{
|
1483
|
+
include = "#nest_curly_and_self";
|
1484
|
+
}
|
1485
|
+
);
|
1486
|
+
},
|
1487
|
+
{
|
1488
|
+
include = "$self";
|
1489
|
+
}
|
1490
|
+
);
|
1491
|
+
};
|
1492
|
+
"nest_curly_i" = {
|
1493
|
+
begin = "\\{";
|
1494
|
+
captures = {
|
1495
|
+
0 = {
|
1496
|
+
name = "punctuation.section.scope.ruby";
|
1497
|
+
};
|
1498
|
+
};
|
1499
|
+
end = "\\}";
|
1500
|
+
patterns = (
|
1501
|
+
{
|
1502
|
+
include = "#interpolated_ruby";
|
1503
|
+
},
|
1504
|
+
{
|
1505
|
+
include = "#escaped_char";
|
1506
|
+
},
|
1507
|
+
{
|
1508
|
+
include = "#nest_curly_i";
|
1509
|
+
}
|
1510
|
+
);
|
1511
|
+
};
|
1512
|
+
"nest_curly_r" = {
|
1513
|
+
begin = "\\{";
|
1514
|
+
captures = {
|
1515
|
+
0 = {
|
1516
|
+
name = "punctuation.section.scope.ruby";
|
1517
|
+
};
|
1518
|
+
};
|
1519
|
+
end = "\\}";
|
1520
|
+
patterns = (
|
1521
|
+
{
|
1522
|
+
include = "#regex_sub";
|
1523
|
+
},
|
1524
|
+
{
|
1525
|
+
include = "#nest_curly_r";
|
1526
|
+
}
|
1527
|
+
);
|
1528
|
+
};
|
1529
|
+
"nest_ltgt" = {
|
1530
|
+
begin = "\\<";
|
1531
|
+
captures = {
|
1532
|
+
0 = {
|
1533
|
+
name = "punctuation.section.scope.ruby";
|
1534
|
+
};
|
1535
|
+
};
|
1536
|
+
end = "\\>";
|
1537
|
+
patterns = (
|
1538
|
+
{
|
1539
|
+
include = "#nest_ltgt";
|
1540
|
+
}
|
1541
|
+
);
|
1542
|
+
};
|
1543
|
+
"nest_ltgt_i" = {
|
1544
|
+
begin = "\\<";
|
1545
|
+
captures = {
|
1546
|
+
0 = {
|
1547
|
+
name = "punctuation.section.scope.ruby";
|
1548
|
+
};
|
1549
|
+
};
|
1550
|
+
end = "\\>";
|
1551
|
+
patterns = (
|
1552
|
+
{
|
1553
|
+
include = "#interpolated_ruby";
|
1554
|
+
},
|
1555
|
+
{
|
1556
|
+
include = "#escaped_char";
|
1557
|
+
},
|
1558
|
+
{
|
1559
|
+
include = "#nest_ltgt_i";
|
1560
|
+
}
|
1561
|
+
);
|
1562
|
+
};
|
1563
|
+
"nest_ltgt_r" = {
|
1564
|
+
begin = "\\<";
|
1565
|
+
captures = {
|
1566
|
+
0 = {
|
1567
|
+
name = "punctuation.section.scope.ruby";
|
1568
|
+
};
|
1569
|
+
};
|
1570
|
+
end = "\\>";
|
1571
|
+
patterns = (
|
1572
|
+
{
|
1573
|
+
include = "#regex_sub";
|
1574
|
+
},
|
1575
|
+
{
|
1576
|
+
include = "#nest_ltgt_r";
|
1577
|
+
}
|
1578
|
+
);
|
1579
|
+
};
|
1580
|
+
"nest_parens" = {
|
1581
|
+
begin = "\\(";
|
1582
|
+
captures = {
|
1583
|
+
0 = {
|
1584
|
+
name = "punctuation.section.scope.ruby";
|
1585
|
+
};
|
1586
|
+
};
|
1587
|
+
end = "\\)";
|
1588
|
+
patterns = (
|
1589
|
+
{
|
1590
|
+
include = "#nest_parens";
|
1591
|
+
}
|
1592
|
+
);
|
1593
|
+
};
|
1594
|
+
"nest_parens_i" = {
|
1595
|
+
begin = "\\(";
|
1596
|
+
captures = {
|
1597
|
+
0 = {
|
1598
|
+
name = "punctuation.section.scope.ruby";
|
1599
|
+
};
|
1600
|
+
};
|
1601
|
+
end = "\\)";
|
1602
|
+
patterns = (
|
1603
|
+
{
|
1604
|
+
include = "#interpolated_ruby";
|
1605
|
+
},
|
1606
|
+
{
|
1607
|
+
include = "#escaped_char";
|
1608
|
+
},
|
1609
|
+
{
|
1610
|
+
include = "#nest_parens_i";
|
1611
|
+
}
|
1612
|
+
);
|
1613
|
+
};
|
1614
|
+
"nest_parens_r" = {
|
1615
|
+
begin = "\\(";
|
1616
|
+
captures = {
|
1617
|
+
0 = {
|
1618
|
+
name = "punctuation.section.scope.ruby";
|
1619
|
+
};
|
1620
|
+
};
|
1621
|
+
end = "\\)";
|
1622
|
+
patterns = (
|
1623
|
+
{
|
1624
|
+
include = "#regex_sub";
|
1625
|
+
},
|
1626
|
+
{
|
1627
|
+
include = "#nest_parens_r";
|
1628
|
+
}
|
1629
|
+
);
|
1630
|
+
};
|
1631
|
+
"regex_sub" = {
|
1632
|
+
patterns = (
|
1633
|
+
{
|
1634
|
+
include = "#interpolated_ruby";
|
1635
|
+
},
|
1636
|
+
{
|
1637
|
+
include = "#escaped_char";
|
1638
|
+
},
|
1639
|
+
{
|
1640
|
+
captures = {
|
1641
|
+
1 = {
|
1642
|
+
name = "punctuation.definition.arbitrary-repitition.ruby";
|
1643
|
+
};
|
1644
|
+
3 = {
|
1645
|
+
name = "punctuation.definition.arbitrary-repitition.ruby";
|
1646
|
+
};
|
1647
|
+
};
|
1648
|
+
match = "(\\{)\\d+(,\\d+)?(\\})";
|
1649
|
+
name = "string.regexp.arbitrary-repitition.ruby";
|
1650
|
+
},
|
1651
|
+
{
|
1652
|
+
begin = "\\[(?:\\^?\\])?";
|
1653
|
+
captures = {
|
1654
|
+
0 = {
|
1655
|
+
name = "punctuation.definition.character-class.ruby";
|
1656
|
+
};
|
1657
|
+
};
|
1658
|
+
end = "\\]";
|
1659
|
+
name = "string.regexp.character-class.ruby";
|
1660
|
+
patterns = (
|
1661
|
+
{
|
1662
|
+
include = "#escaped_char";
|
1663
|
+
}
|
1664
|
+
);
|
1665
|
+
},
|
1666
|
+
{
|
1667
|
+
begin = "\\(";
|
1668
|
+
captures = {
|
1669
|
+
0 = {
|
1670
|
+
name = "punctuation.definition.group.ruby";
|
1671
|
+
};
|
1672
|
+
};
|
1673
|
+
end = "\\)";
|
1674
|
+
name = "string.regexp.group.ruby";
|
1675
|
+
patterns = (
|
1676
|
+
{
|
1677
|
+
include = "#regex_sub";
|
1678
|
+
}
|
1679
|
+
);
|
1680
|
+
},
|
1681
|
+
{
|
1682
|
+
captures = {
|
1683
|
+
1 = {
|
1684
|
+
name = "punctuation.definition.comment.ruby";
|
1685
|
+
};
|
1686
|
+
};
|
1687
|
+
comment = "We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.";
|
1688
|
+
match = "(?<=^|\\s)(#)\\s[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$";
|
1689
|
+
name = "comment.line.number-sign.ruby";
|
1690
|
+
}
|
1691
|
+
);
|
1692
|
+
};
|
1693
|
+
};
|
1694
|
+
scopeName = "source.ruby";
|
1695
|
+
uuid = "E00B62AC-6B1C-11D9-9B1F-000D93589AF6";
|
1696
|
+
}
|