1// Code generated by github.com/go-enry/go-enry/v2/internal/code-generator DO NOT EDIT. 2// Extracted from github/linguist commit: 95636e415749b0bf8fbf3f86922f788cf91c11a2 3 4package data 5 6import ( 7 "regexp" 8 9 "github.com/go-enry/go-enry/v2/data/rule" 10) 11 12var ContentHeuristics = map[string]*Heuristics{ 13 ".1": &Heuristics{ 14 rule.And( 15 rule.MatchingLanguages("Roff Manpage"), 16 rule.Or( 17 rule.MatchingLanguages(""), 18 regexp.MustCompile(`(?m)^[.'][ \t]*Dd +(?:[^"\s]+|"[^"]+")`), 19 ), 20 rule.Or( 21 rule.MatchingLanguages(""), 22 regexp.MustCompile(`(?m)^[.'][ \t]*Dt +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 23 ), 24 rule.Or( 25 rule.MatchingLanguages(""), 26 regexp.MustCompile(`(?m)^[.'][ \t]*Sh +(?:[^"\s]|"[^"]+")`), 27 ), 28 ), 29 rule.And( 30 rule.MatchingLanguages("Roff Manpage"), 31 rule.Or( 32 rule.MatchingLanguages(""), 33 regexp.MustCompile(`(?m)^[.'][ \t]*TH +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 34 ), 35 rule.Or( 36 rule.MatchingLanguages(""), 37 regexp.MustCompile(`(?m)^[.'][ \t]*SH +(?:[^"\s]+|"[^"\s]+)`), 38 ), 39 ), 40 rule.Or( 41 rule.MatchingLanguages("Roff"), 42 regexp.MustCompile(`(?m)^\.(?:[A-Za-z]{2}(?:\s|$)|\\")`), 43 ), 44 }, 45 ".1in": &Heuristics{ 46 rule.And( 47 rule.MatchingLanguages("Roff Manpage"), 48 rule.Or( 49 rule.MatchingLanguages(""), 50 regexp.MustCompile(`(?m)^[.'][ \t]*Dd +(?:[^"\s]+|"[^"]+")`), 51 ), 52 rule.Or( 53 rule.MatchingLanguages(""), 54 regexp.MustCompile(`(?m)^[.'][ \t]*Dt +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 55 ), 56 rule.Or( 57 rule.MatchingLanguages(""), 58 regexp.MustCompile(`(?m)^[.'][ \t]*Sh +(?:[^"\s]|"[^"]+")`), 59 ), 60 ), 61 rule.And( 62 rule.MatchingLanguages("Roff Manpage"), 63 rule.Or( 64 rule.MatchingLanguages(""), 65 regexp.MustCompile(`(?m)^[.'][ \t]*TH +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 66 ), 67 rule.Or( 68 rule.MatchingLanguages(""), 69 regexp.MustCompile(`(?m)^[.'][ \t]*SH +(?:[^"\s]+|"[^"\s]+)`), 70 ), 71 ), 72 rule.Always( 73 rule.MatchingLanguages("Roff"), 74 ), 75 }, 76 ".1m": &Heuristics{ 77 rule.And( 78 rule.MatchingLanguages("Roff Manpage"), 79 rule.Or( 80 rule.MatchingLanguages(""), 81 regexp.MustCompile(`(?m)^[.'][ \t]*Dd +(?:[^"\s]+|"[^"]+")`), 82 ), 83 rule.Or( 84 rule.MatchingLanguages(""), 85 regexp.MustCompile(`(?m)^[.'][ \t]*Dt +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 86 ), 87 rule.Or( 88 rule.MatchingLanguages(""), 89 regexp.MustCompile(`(?m)^[.'][ \t]*Sh +(?:[^"\s]|"[^"]+")`), 90 ), 91 ), 92 rule.And( 93 rule.MatchingLanguages("Roff Manpage"), 94 rule.Or( 95 rule.MatchingLanguages(""), 96 regexp.MustCompile(`(?m)^[.'][ \t]*TH +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 97 ), 98 rule.Or( 99 rule.MatchingLanguages(""), 100 regexp.MustCompile(`(?m)^[.'][ \t]*SH +(?:[^"\s]+|"[^"\s]+)`), 101 ), 102 ), 103 rule.Always( 104 rule.MatchingLanguages("Roff"), 105 ), 106 }, 107 ".1x": &Heuristics{ 108 rule.And( 109 rule.MatchingLanguages("Roff Manpage"), 110 rule.Or( 111 rule.MatchingLanguages(""), 112 regexp.MustCompile(`(?m)^[.'][ \t]*Dd +(?:[^"\s]+|"[^"]+")`), 113 ), 114 rule.Or( 115 rule.MatchingLanguages(""), 116 regexp.MustCompile(`(?m)^[.'][ \t]*Dt +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 117 ), 118 rule.Or( 119 rule.MatchingLanguages(""), 120 regexp.MustCompile(`(?m)^[.'][ \t]*Sh +(?:[^"\s]|"[^"]+")`), 121 ), 122 ), 123 rule.And( 124 rule.MatchingLanguages("Roff Manpage"), 125 rule.Or( 126 rule.MatchingLanguages(""), 127 regexp.MustCompile(`(?m)^[.'][ \t]*TH +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 128 ), 129 rule.Or( 130 rule.MatchingLanguages(""), 131 regexp.MustCompile(`(?m)^[.'][ \t]*SH +(?:[^"\s]+|"[^"\s]+)`), 132 ), 133 ), 134 rule.Always( 135 rule.MatchingLanguages("Roff"), 136 ), 137 }, 138 ".2": &Heuristics{ 139 rule.And( 140 rule.MatchingLanguages("Roff Manpage"), 141 rule.Or( 142 rule.MatchingLanguages(""), 143 regexp.MustCompile(`(?m)^[.'][ \t]*Dd +(?:[^"\s]+|"[^"]+")`), 144 ), 145 rule.Or( 146 rule.MatchingLanguages(""), 147 regexp.MustCompile(`(?m)^[.'][ \t]*Dt +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 148 ), 149 rule.Or( 150 rule.MatchingLanguages(""), 151 regexp.MustCompile(`(?m)^[.'][ \t]*Sh +(?:[^"\s]|"[^"]+")`), 152 ), 153 ), 154 rule.And( 155 rule.MatchingLanguages("Roff Manpage"), 156 rule.Or( 157 rule.MatchingLanguages(""), 158 regexp.MustCompile(`(?m)^[.'][ \t]*TH +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 159 ), 160 rule.Or( 161 rule.MatchingLanguages(""), 162 regexp.MustCompile(`(?m)^[.'][ \t]*SH +(?:[^"\s]+|"[^"\s]+)`), 163 ), 164 ), 165 rule.Or( 166 rule.MatchingLanguages("Roff"), 167 regexp.MustCompile(`(?m)^\.(?:[A-Za-z]{2}(?:\s|$)|\\")`), 168 ), 169 }, 170 ".3": &Heuristics{ 171 rule.And( 172 rule.MatchingLanguages("Roff Manpage"), 173 rule.Or( 174 rule.MatchingLanguages(""), 175 regexp.MustCompile(`(?m)^[.'][ \t]*Dd +(?:[^"\s]+|"[^"]+")`), 176 ), 177 rule.Or( 178 rule.MatchingLanguages(""), 179 regexp.MustCompile(`(?m)^[.'][ \t]*Dt +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 180 ), 181 rule.Or( 182 rule.MatchingLanguages(""), 183 regexp.MustCompile(`(?m)^[.'][ \t]*Sh +(?:[^"\s]|"[^"]+")`), 184 ), 185 ), 186 rule.And( 187 rule.MatchingLanguages("Roff Manpage"), 188 rule.Or( 189 rule.MatchingLanguages(""), 190 regexp.MustCompile(`(?m)^[.'][ \t]*TH +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 191 ), 192 rule.Or( 193 rule.MatchingLanguages(""), 194 regexp.MustCompile(`(?m)^[.'][ \t]*SH +(?:[^"\s]+|"[^"\s]+)`), 195 ), 196 ), 197 rule.Or( 198 rule.MatchingLanguages("Roff"), 199 regexp.MustCompile(`(?m)^\.(?:[A-Za-z]{2}(?:\s|$)|\\")`), 200 ), 201 }, 202 ".3in": &Heuristics{ 203 rule.And( 204 rule.MatchingLanguages("Roff Manpage"), 205 rule.Or( 206 rule.MatchingLanguages(""), 207 regexp.MustCompile(`(?m)^[.'][ \t]*Dd +(?:[^"\s]+|"[^"]+")`), 208 ), 209 rule.Or( 210 rule.MatchingLanguages(""), 211 regexp.MustCompile(`(?m)^[.'][ \t]*Dt +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 212 ), 213 rule.Or( 214 rule.MatchingLanguages(""), 215 regexp.MustCompile(`(?m)^[.'][ \t]*Sh +(?:[^"\s]|"[^"]+")`), 216 ), 217 ), 218 rule.And( 219 rule.MatchingLanguages("Roff Manpage"), 220 rule.Or( 221 rule.MatchingLanguages(""), 222 regexp.MustCompile(`(?m)^[.'][ \t]*TH +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 223 ), 224 rule.Or( 225 rule.MatchingLanguages(""), 226 regexp.MustCompile(`(?m)^[.'][ \t]*SH +(?:[^"\s]+|"[^"\s]+)`), 227 ), 228 ), 229 rule.Always( 230 rule.MatchingLanguages("Roff"), 231 ), 232 }, 233 ".3m": &Heuristics{ 234 rule.And( 235 rule.MatchingLanguages("Roff Manpage"), 236 rule.Or( 237 rule.MatchingLanguages(""), 238 regexp.MustCompile(`(?m)^[.'][ \t]*Dd +(?:[^"\s]+|"[^"]+")`), 239 ), 240 rule.Or( 241 rule.MatchingLanguages(""), 242 regexp.MustCompile(`(?m)^[.'][ \t]*Dt +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 243 ), 244 rule.Or( 245 rule.MatchingLanguages(""), 246 regexp.MustCompile(`(?m)^[.'][ \t]*Sh +(?:[^"\s]|"[^"]+")`), 247 ), 248 ), 249 rule.And( 250 rule.MatchingLanguages("Roff Manpage"), 251 rule.Or( 252 rule.MatchingLanguages(""), 253 regexp.MustCompile(`(?m)^[.'][ \t]*TH +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 254 ), 255 rule.Or( 256 rule.MatchingLanguages(""), 257 regexp.MustCompile(`(?m)^[.'][ \t]*SH +(?:[^"\s]+|"[^"\s]+)`), 258 ), 259 ), 260 rule.Always( 261 rule.MatchingLanguages("Roff"), 262 ), 263 }, 264 ".3p": &Heuristics{ 265 rule.And( 266 rule.MatchingLanguages("Roff Manpage"), 267 rule.Or( 268 rule.MatchingLanguages(""), 269 regexp.MustCompile(`(?m)^[.'][ \t]*Dd +(?:[^"\s]+|"[^"]+")`), 270 ), 271 rule.Or( 272 rule.MatchingLanguages(""), 273 regexp.MustCompile(`(?m)^[.'][ \t]*Dt +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 274 ), 275 rule.Or( 276 rule.MatchingLanguages(""), 277 regexp.MustCompile(`(?m)^[.'][ \t]*Sh +(?:[^"\s]|"[^"]+")`), 278 ), 279 ), 280 rule.And( 281 rule.MatchingLanguages("Roff Manpage"), 282 rule.Or( 283 rule.MatchingLanguages(""), 284 regexp.MustCompile(`(?m)^[.'][ \t]*TH +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 285 ), 286 rule.Or( 287 rule.MatchingLanguages(""), 288 regexp.MustCompile(`(?m)^[.'][ \t]*SH +(?:[^"\s]+|"[^"\s]+)`), 289 ), 290 ), 291 rule.Always( 292 rule.MatchingLanguages("Roff"), 293 ), 294 }, 295 ".3pm": &Heuristics{ 296 rule.And( 297 rule.MatchingLanguages("Roff Manpage"), 298 rule.Or( 299 rule.MatchingLanguages(""), 300 regexp.MustCompile(`(?m)^[.'][ \t]*Dd +(?:[^"\s]+|"[^"]+")`), 301 ), 302 rule.Or( 303 rule.MatchingLanguages(""), 304 regexp.MustCompile(`(?m)^[.'][ \t]*Dt +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 305 ), 306 rule.Or( 307 rule.MatchingLanguages(""), 308 regexp.MustCompile(`(?m)^[.'][ \t]*Sh +(?:[^"\s]|"[^"]+")`), 309 ), 310 ), 311 rule.And( 312 rule.MatchingLanguages("Roff Manpage"), 313 rule.Or( 314 rule.MatchingLanguages(""), 315 regexp.MustCompile(`(?m)^[.'][ \t]*TH +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 316 ), 317 rule.Or( 318 rule.MatchingLanguages(""), 319 regexp.MustCompile(`(?m)^[.'][ \t]*SH +(?:[^"\s]+|"[^"\s]+)`), 320 ), 321 ), 322 rule.Always( 323 rule.MatchingLanguages("Roff"), 324 ), 325 }, 326 ".3qt": &Heuristics{ 327 rule.And( 328 rule.MatchingLanguages("Roff Manpage"), 329 rule.Or( 330 rule.MatchingLanguages(""), 331 regexp.MustCompile(`(?m)^[.'][ \t]*Dd +(?:[^"\s]+|"[^"]+")`), 332 ), 333 rule.Or( 334 rule.MatchingLanguages(""), 335 regexp.MustCompile(`(?m)^[.'][ \t]*Dt +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 336 ), 337 rule.Or( 338 rule.MatchingLanguages(""), 339 regexp.MustCompile(`(?m)^[.'][ \t]*Sh +(?:[^"\s]|"[^"]+")`), 340 ), 341 ), 342 rule.And( 343 rule.MatchingLanguages("Roff Manpage"), 344 rule.Or( 345 rule.MatchingLanguages(""), 346 regexp.MustCompile(`(?m)^[.'][ \t]*TH +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 347 ), 348 rule.Or( 349 rule.MatchingLanguages(""), 350 regexp.MustCompile(`(?m)^[.'][ \t]*SH +(?:[^"\s]+|"[^"\s]+)`), 351 ), 352 ), 353 rule.Always( 354 rule.MatchingLanguages("Roff"), 355 ), 356 }, 357 ".3x": &Heuristics{ 358 rule.And( 359 rule.MatchingLanguages("Roff Manpage"), 360 rule.Or( 361 rule.MatchingLanguages(""), 362 regexp.MustCompile(`(?m)^[.'][ \t]*Dd +(?:[^"\s]+|"[^"]+")`), 363 ), 364 rule.Or( 365 rule.MatchingLanguages(""), 366 regexp.MustCompile(`(?m)^[.'][ \t]*Dt +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 367 ), 368 rule.Or( 369 rule.MatchingLanguages(""), 370 regexp.MustCompile(`(?m)^[.'][ \t]*Sh +(?:[^"\s]|"[^"]+")`), 371 ), 372 ), 373 rule.And( 374 rule.MatchingLanguages("Roff Manpage"), 375 rule.Or( 376 rule.MatchingLanguages(""), 377 regexp.MustCompile(`(?m)^[.'][ \t]*TH +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 378 ), 379 rule.Or( 380 rule.MatchingLanguages(""), 381 regexp.MustCompile(`(?m)^[.'][ \t]*SH +(?:[^"\s]+|"[^"\s]+)`), 382 ), 383 ), 384 rule.Always( 385 rule.MatchingLanguages("Roff"), 386 ), 387 }, 388 ".4": &Heuristics{ 389 rule.And( 390 rule.MatchingLanguages("Roff Manpage"), 391 rule.Or( 392 rule.MatchingLanguages(""), 393 regexp.MustCompile(`(?m)^[.'][ \t]*Dd +(?:[^"\s]+|"[^"]+")`), 394 ), 395 rule.Or( 396 rule.MatchingLanguages(""), 397 regexp.MustCompile(`(?m)^[.'][ \t]*Dt +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 398 ), 399 rule.Or( 400 rule.MatchingLanguages(""), 401 regexp.MustCompile(`(?m)^[.'][ \t]*Sh +(?:[^"\s]|"[^"]+")`), 402 ), 403 ), 404 rule.And( 405 rule.MatchingLanguages("Roff Manpage"), 406 rule.Or( 407 rule.MatchingLanguages(""), 408 regexp.MustCompile(`(?m)^[.'][ \t]*TH +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 409 ), 410 rule.Or( 411 rule.MatchingLanguages(""), 412 regexp.MustCompile(`(?m)^[.'][ \t]*SH +(?:[^"\s]+|"[^"\s]+)`), 413 ), 414 ), 415 rule.Or( 416 rule.MatchingLanguages("Roff"), 417 regexp.MustCompile(`(?m)^\.(?:[A-Za-z]{2}(?:\s|$)|\\")`), 418 ), 419 }, 420 ".5": &Heuristics{ 421 rule.And( 422 rule.MatchingLanguages("Roff Manpage"), 423 rule.Or( 424 rule.MatchingLanguages(""), 425 regexp.MustCompile(`(?m)^[.'][ \t]*Dd +(?:[^"\s]+|"[^"]+")`), 426 ), 427 rule.Or( 428 rule.MatchingLanguages(""), 429 regexp.MustCompile(`(?m)^[.'][ \t]*Dt +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 430 ), 431 rule.Or( 432 rule.MatchingLanguages(""), 433 regexp.MustCompile(`(?m)^[.'][ \t]*Sh +(?:[^"\s]|"[^"]+")`), 434 ), 435 ), 436 rule.And( 437 rule.MatchingLanguages("Roff Manpage"), 438 rule.Or( 439 rule.MatchingLanguages(""), 440 regexp.MustCompile(`(?m)^[.'][ \t]*TH +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 441 ), 442 rule.Or( 443 rule.MatchingLanguages(""), 444 regexp.MustCompile(`(?m)^[.'][ \t]*SH +(?:[^"\s]+|"[^"\s]+)`), 445 ), 446 ), 447 rule.Or( 448 rule.MatchingLanguages("Roff"), 449 regexp.MustCompile(`(?m)^\.(?:[A-Za-z]{2}(?:\s|$)|\\")`), 450 ), 451 }, 452 ".6": &Heuristics{ 453 rule.And( 454 rule.MatchingLanguages("Roff Manpage"), 455 rule.Or( 456 rule.MatchingLanguages(""), 457 regexp.MustCompile(`(?m)^[.'][ \t]*Dd +(?:[^"\s]+|"[^"]+")`), 458 ), 459 rule.Or( 460 rule.MatchingLanguages(""), 461 regexp.MustCompile(`(?m)^[.'][ \t]*Dt +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 462 ), 463 rule.Or( 464 rule.MatchingLanguages(""), 465 regexp.MustCompile(`(?m)^[.'][ \t]*Sh +(?:[^"\s]|"[^"]+")`), 466 ), 467 ), 468 rule.And( 469 rule.MatchingLanguages("Roff Manpage"), 470 rule.Or( 471 rule.MatchingLanguages(""), 472 regexp.MustCompile(`(?m)^[.'][ \t]*TH +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 473 ), 474 rule.Or( 475 rule.MatchingLanguages(""), 476 regexp.MustCompile(`(?m)^[.'][ \t]*SH +(?:[^"\s]+|"[^"\s]+)`), 477 ), 478 ), 479 rule.Or( 480 rule.MatchingLanguages("Roff"), 481 regexp.MustCompile(`(?m)^\.(?:[A-Za-z]{2}(?:\s|$)|\\")`), 482 ), 483 }, 484 ".7": &Heuristics{ 485 rule.And( 486 rule.MatchingLanguages("Roff Manpage"), 487 rule.Or( 488 rule.MatchingLanguages(""), 489 regexp.MustCompile(`(?m)^[.'][ \t]*Dd +(?:[^"\s]+|"[^"]+")`), 490 ), 491 rule.Or( 492 rule.MatchingLanguages(""), 493 regexp.MustCompile(`(?m)^[.'][ \t]*Dt +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 494 ), 495 rule.Or( 496 rule.MatchingLanguages(""), 497 regexp.MustCompile(`(?m)^[.'][ \t]*Sh +(?:[^"\s]|"[^"]+")`), 498 ), 499 ), 500 rule.And( 501 rule.MatchingLanguages("Roff Manpage"), 502 rule.Or( 503 rule.MatchingLanguages(""), 504 regexp.MustCompile(`(?m)^[.'][ \t]*TH +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 505 ), 506 rule.Or( 507 rule.MatchingLanguages(""), 508 regexp.MustCompile(`(?m)^[.'][ \t]*SH +(?:[^"\s]+|"[^"\s]+)`), 509 ), 510 ), 511 rule.Or( 512 rule.MatchingLanguages("Roff"), 513 regexp.MustCompile(`(?m)^\.(?:[A-Za-z]{2}(?:\s|$)|\\")`), 514 ), 515 }, 516 ".8": &Heuristics{ 517 rule.And( 518 rule.MatchingLanguages("Roff Manpage"), 519 rule.Or( 520 rule.MatchingLanguages(""), 521 regexp.MustCompile(`(?m)^[.'][ \t]*Dd +(?:[^"\s]+|"[^"]+")`), 522 ), 523 rule.Or( 524 rule.MatchingLanguages(""), 525 regexp.MustCompile(`(?m)^[.'][ \t]*Dt +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 526 ), 527 rule.Or( 528 rule.MatchingLanguages(""), 529 regexp.MustCompile(`(?m)^[.'][ \t]*Sh +(?:[^"\s]|"[^"]+")`), 530 ), 531 ), 532 rule.And( 533 rule.MatchingLanguages("Roff Manpage"), 534 rule.Or( 535 rule.MatchingLanguages(""), 536 regexp.MustCompile(`(?m)^[.'][ \t]*TH +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 537 ), 538 rule.Or( 539 rule.MatchingLanguages(""), 540 regexp.MustCompile(`(?m)^[.'][ \t]*SH +(?:[^"\s]+|"[^"\s]+)`), 541 ), 542 ), 543 rule.Or( 544 rule.MatchingLanguages("Roff"), 545 regexp.MustCompile(`(?m)^\.(?:[A-Za-z]{2}(?:\s|$)|\\")`), 546 ), 547 }, 548 ".9": &Heuristics{ 549 rule.And( 550 rule.MatchingLanguages("Roff Manpage"), 551 rule.Or( 552 rule.MatchingLanguages(""), 553 regexp.MustCompile(`(?m)^[.'][ \t]*Dd +(?:[^"\s]+|"[^"]+")`), 554 ), 555 rule.Or( 556 rule.MatchingLanguages(""), 557 regexp.MustCompile(`(?m)^[.'][ \t]*Dt +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 558 ), 559 rule.Or( 560 rule.MatchingLanguages(""), 561 regexp.MustCompile(`(?m)^[.'][ \t]*Sh +(?:[^"\s]|"[^"]+")`), 562 ), 563 ), 564 rule.And( 565 rule.MatchingLanguages("Roff Manpage"), 566 rule.Or( 567 rule.MatchingLanguages(""), 568 regexp.MustCompile(`(?m)^[.'][ \t]*TH +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 569 ), 570 rule.Or( 571 rule.MatchingLanguages(""), 572 regexp.MustCompile(`(?m)^[.'][ \t]*SH +(?:[^"\s]+|"[^"\s]+)`), 573 ), 574 ), 575 rule.Or( 576 rule.MatchingLanguages("Roff"), 577 regexp.MustCompile(`(?m)^\.(?:[A-Za-z]{2}(?:\s|$)|\\")`), 578 ), 579 }, 580 ".al": &Heuristics{ 581 rule.And( 582 rule.MatchingLanguages("AL"), 583 rule.Or( 584 rule.MatchingLanguages(""), 585 regexp.MustCompile(`(?m)\b(?i:(CODEUNIT|PAGE|PAGEEXTENSION|PAGECUSTOMIZATION|DOTNET|ENUM|ENUMEXTENSION|VALUE|QUERY|REPORT|TABLE|TABLEEXTENSION|XMLPORT|PROFILE|CONTROLADDIN))\b`), 586 ), 587 ), 588 rule.Always( 589 rule.MatchingLanguages("Perl"), 590 ), 591 }, 592 ".as": &Heuristics{}, 593 ".asc": &Heuristics{ 594 rule.Or( 595 rule.MatchingLanguages("Public Key"), 596 regexp.MustCompile(`(?m)^(----[- ]BEGIN|ssh-(rsa|dss)) `), 597 ), 598 rule.Or( 599 rule.MatchingLanguages("AsciiDoc"), 600 regexp.MustCompile(`(?m)^[=-]+(\s|\n)|{{[A-Za-z]`), 601 ), 602 rule.Or( 603 rule.MatchingLanguages("AGS Script"), 604 regexp.MustCompile(`(?m)^(\/\/.+|((import|export)\s+)?(function|int|float|char)\s+((room|repeatedly|on|game)_)?([A-Za-z]+[A-Za-z_0-9]+)\s*[;\(])`), 605 ), 606 }, 607 ".asm": &Heuristics{ 608 rule.Or( 609 rule.MatchingLanguages("Motorola 68K Assembly"), 610 regexp.MustCompile(`(?m)(?im)\bmoveq(?:\.l)?\s+#(?:\$-?[0-9a-f]{1,3}|%[0-1]{1,8}|-?[0-9]{1,3}),\s*d[0-7]\b|(?im)^\s*move(?:\.[bwl])?\s+(?:sr|usp),\s*[^\s]+|(?im)^\s*move\.[bwl]\s+.*\b[ad]\d|(?im)^\s*movem\.[bwl]\b|(?im)^\s*move[mp](?:\.[wl])?\b|(?im)^\s*btst\b|(?im)^\s*dbra\b`), 611 ), 612 }, 613 ".asy": &Heuristics{ 614 rule.Or( 615 rule.MatchingLanguages("LTspice Symbol"), 616 regexp.MustCompile(`(?m)^SymbolType[ \t]`), 617 ), 618 rule.Always( 619 rule.MatchingLanguages("Asymptote"), 620 ), 621 }, 622 ".bas": &Heuristics{ 623 rule.Or( 624 rule.MatchingLanguages("FreeBasic"), 625 regexp.MustCompile(`(?m)^[ \t]*#(?:define|endif|endmacro|ifn?def|if|include|lang|macro)\s`), 626 ), 627 rule.Or( 628 rule.MatchingLanguages("BASIC"), 629 regexp.MustCompile(`(?m)^\s*\d+`), 630 ), 631 }, 632 ".bb": &Heuristics{ 633 rule.Or( 634 rule.MatchingLanguages("BlitzBasic"), 635 regexp.MustCompile(`(?m)(<^\s*; |End Function)`), 636 ), 637 rule.Or( 638 rule.MatchingLanguages("BitBake"), 639 regexp.MustCompile(`(?m)^\s*(# |include|require)\b`), 640 ), 641 }, 642 ".bi": &Heuristics{ 643 rule.Or( 644 rule.MatchingLanguages("FreeBasic"), 645 regexp.MustCompile(`(?m)^[ \t]*#(?:define|endif|endmacro|ifn?def|if|include|lang|macro)\s`), 646 ), 647 }, 648 ".builds": &Heuristics{ 649 rule.Or( 650 rule.MatchingLanguages("XML"), 651 regexp.MustCompile(`(?m)^(\s*)(?i:<Project|<Import|<Property|<?xml|xmlns)`), 652 ), 653 }, 654 ".ch": &Heuristics{ 655 rule.Or( 656 rule.MatchingLanguages("xBase"), 657 regexp.MustCompile(`(?m)^\s*#\s*(?i:if|ifdef|ifndef|define|command|xcommand|translate|xtranslate|include|pragma|undef)\b`), 658 ), 659 }, 660 ".cl": &Heuristics{ 661 rule.Or( 662 rule.MatchingLanguages("Common Lisp"), 663 regexp.MustCompile(`(?m)^\s*\((?i:defun|in-package|defpackage) `), 664 ), 665 rule.Or( 666 rule.MatchingLanguages("Cool"), 667 regexp.MustCompile(`(?m)^class`), 668 ), 669 rule.Or( 670 rule.MatchingLanguages("OpenCL"), 671 regexp.MustCompile(`(?m)\/\* |\/\/ |^\}`), 672 ), 673 }, 674 ".cls": &Heuristics{ 675 rule.Or( 676 rule.MatchingLanguages("TeX"), 677 regexp.MustCompile(`(?m)^\s*\\(?:NeedsTeXFormat|ProvidesClass){`), 678 ), 679 rule.Or( 680 rule.MatchingLanguages("ObjectScript"), 681 regexp.MustCompile(`(?m)^Class\s`), 682 ), 683 }, 684 ".cmp": &Heuristics{ 685 rule.Or( 686 rule.MatchingLanguages("Gerber Image"), 687 regexp.MustCompile(`(?m)^[DGMT][0-9]{2}\*\r?\n`), 688 ), 689 }, 690 ".cs": &Heuristics{ 691 rule.Or( 692 rule.MatchingLanguages("Smalltalk"), 693 regexp.MustCompile(`(?m)![\w\s]+methodsFor: `), 694 ), 695 rule.Or( 696 rule.MatchingLanguages("C#"), 697 regexp.MustCompile(`(?m)^(\s*namespace\s*[\w\.]+\s*{|\s*\/\/)`), 698 ), 699 }, 700 ".csl": &Heuristics{ 701 rule.Or( 702 rule.MatchingLanguages("XML"), 703 regexp.MustCompile(`(?m)(?i:^\s*(\<\?xml|xmlns))`), 704 ), 705 rule.Or( 706 rule.MatchingLanguages("Kusto"), 707 regexp.MustCompile(`(?m)(^\|\s*(where|extend|project|limit|summarize))|(^\.\w+)`), 708 ), 709 }, 710 ".d": &Heuristics{ 711 rule.Or( 712 rule.MatchingLanguages("D"), 713 regexp.MustCompile(`(?m)^module\s+[\w.]*\s*;|import\s+[\w\s,.:]*;|\w+\s+\w+\s*\(.*\)(?:\(.*\))?\s*{[^}]*}|unittest\s*(?:\(.*\))?\s*{[^}]*}`), 714 ), 715 rule.Or( 716 rule.MatchingLanguages("DTrace"), 717 regexp.MustCompile(`(?m)^(\w+:\w*:\w*:\w*|BEGIN|END|provider\s+|(tick|profile)-\w+\s+{[^}]*}|#pragma\s+D\s+(option|attributes|depends_on)\s|#pragma\s+ident\s)`), 718 ), 719 rule.Or( 720 rule.MatchingLanguages("Makefile"), 721 regexp.MustCompile(`(?m)([\/\\].*:\s+.*\s\\$|: \\$|^[ %]:|^[\w\s\/\\.]+\w+\.\w+\s*:\s+[\w\s\/\\.]+\w+\.\w+)`), 722 ), 723 }, 724 ".dsp": &Heuristics{ 725 rule.Or( 726 rule.MatchingLanguages("Microsoft Developer Studio Project"), 727 regexp.MustCompile(`(?m)# Microsoft Developer Studio Generated Build File`), 728 ), 729 rule.Or( 730 rule.MatchingLanguages("Faust"), 731 regexp.MustCompile(`(?m)\bprocess\s*[(=]|\b(library|import)\s*\(\s*"|\bdeclare\s+(name|version|author|copyright|license)\s+"`), 732 ), 733 }, 734 ".ecl": &Heuristics{ 735 rule.Or( 736 rule.MatchingLanguages("ECLiPSe"), 737 regexp.MustCompile(`(?m)^[^#]+:-`), 738 ), 739 rule.Or( 740 rule.MatchingLanguages("ECL"), 741 regexp.MustCompile(`(?m):=`), 742 ), 743 }, 744 ".es": &Heuristics{ 745 rule.Or( 746 rule.MatchingLanguages("Erlang"), 747 regexp.MustCompile(`(?m)^\s*(?:%%|main\s*\(.*?\)\s*->)`), 748 ), 749 }, 750 ".f": &Heuristics{ 751 rule.Or( 752 rule.MatchingLanguages("Forth"), 753 regexp.MustCompile(`(?m)^: `), 754 ), 755 rule.Or( 756 rule.MatchingLanguages("Filebench WML"), 757 regexp.MustCompile(`(?m)flowop`), 758 ), 759 rule.Or( 760 rule.MatchingLanguages("Fortran"), 761 regexp.MustCompile(`(?m)^(?i:[c*][^abd-z]| (subroutine|program|end|data)\s|\s*!)`), 762 ), 763 }, 764 ".for": &Heuristics{ 765 rule.Or( 766 rule.MatchingLanguages("Forth"), 767 regexp.MustCompile(`(?m)^: `), 768 ), 769 rule.Or( 770 rule.MatchingLanguages("Fortran"), 771 regexp.MustCompile(`(?m)^(?i:[c*][^abd-z]| (subroutine|program|end|data)\s|\s*!)`), 772 ), 773 }, 774 ".fr": &Heuristics{ 775 rule.Or( 776 rule.MatchingLanguages("Forth"), 777 regexp.MustCompile(`(?m)^(: |also |new-device|previous )`), 778 ), 779 rule.Or( 780 rule.MatchingLanguages("Frege"), 781 regexp.MustCompile(`(?m)^\s*(import|module|package|data|type) `), 782 ), 783 rule.Always( 784 rule.MatchingLanguages("Text"), 785 ), 786 }, 787 ".fs": &Heuristics{ 788 rule.Or( 789 rule.MatchingLanguages("Forth"), 790 regexp.MustCompile(`(?m)^(: |new-device)`), 791 ), 792 rule.Or( 793 rule.MatchingLanguages("F#"), 794 regexp.MustCompile(`(?m)^\s*(#light|import|let|module|namespace|open|type)`), 795 ), 796 rule.Or( 797 rule.MatchingLanguages("GLSL"), 798 regexp.MustCompile(`(?m)^\s*(#version|precision|uniform|varying|vec[234])`), 799 ), 800 rule.Or( 801 rule.MatchingLanguages("Filterscript"), 802 regexp.MustCompile(`(?m)#include|#pragma\s+(rs|version)|__attribute__`), 803 ), 804 }, 805 ".gd": &Heuristics{ 806 rule.Or( 807 rule.MatchingLanguages("GAP"), 808 regexp.MustCompile(`(?m)\s*(Declare|BindGlobal|KeyDependentOperation)`), 809 ), 810 rule.Or( 811 rule.MatchingLanguages("GDScript"), 812 regexp.MustCompile(`(?m)\s*(extends|var|const|enum|func|class|signal|tool|yield|assert|onready)`), 813 ), 814 }, 815 ".gml": &Heuristics{ 816 rule.Or( 817 rule.MatchingLanguages("XML"), 818 regexp.MustCompile(`(?m)(?i:^\s*(\<\?xml|xmlns))`), 819 ), 820 rule.Or( 821 rule.MatchingLanguages("Graph Modeling Language"), 822 regexp.MustCompile(`(?m)(?i:^\s*(graph|node)\s+\[$)`), 823 ), 824 rule.Or( 825 rule.MatchingLanguages("Gerber Image"), 826 regexp.MustCompile(`(?m)^[DGMT][0-9]{2}\*$`), 827 ), 828 rule.Always( 829 rule.MatchingLanguages("Game Maker Language"), 830 ), 831 }, 832 ".gs": &Heuristics{ 833 rule.Or( 834 rule.MatchingLanguages("GLSL"), 835 regexp.MustCompile(`(?m)^#version\s+[0-9]+\b`), 836 ), 837 rule.Or( 838 rule.MatchingLanguages("Gosu"), 839 regexp.MustCompile(`(?m)^uses (java|gw)\.`), 840 ), 841 rule.Or( 842 rule.MatchingLanguages("Genie"), 843 regexp.MustCompile(`(?m)^\[indent=[0-9]+\]`), 844 ), 845 }, 846 ".h": &Heuristics{ 847 rule.Or( 848 rule.MatchingLanguages("Objective-C"), 849 regexp.MustCompile(`(?m)^\s*(@(interface|class|protocol|property|end|synchronised|selector|implementation)\b|#import\s+.+\.h[">])`), 850 ), 851 rule.Or( 852 rule.MatchingLanguages("C++"), 853 regexp.MustCompile(`(?m)^\s*#\s*include <(cstdint|string|vector|map|list|array|bitset|queue|stack|forward_list|unordered_map|unordered_set|(i|o|io)stream)>|^\s*template\s*<|^[ \t]*(try|constexpr)|^[ \t]*catch\s*\(|^[ \t]*(class|(using[ \t]+)?namespace)\s+\w+|^[ \t]*(private|public|protected):$|std::\w+`), 854 ), 855 }, 856 ".hh": &Heuristics{ 857 rule.Or( 858 rule.MatchingLanguages("Hack"), 859 regexp.MustCompile(`(?m)<\?hh`), 860 ), 861 }, 862 ".i": &Heuristics{ 863 rule.Or( 864 rule.MatchingLanguages("Motorola 68K Assembly"), 865 regexp.MustCompile(`(?m)(?im)\bmoveq(?:\.l)?\s+#(?:\$-?[0-9a-f]{1,3}|%[0-1]{1,8}|-?[0-9]{1,3}),\s*d[0-7]\b|(?im)^\s*move(?:\.[bwl])?\s+(?:sr|usp),\s*[^\s]+|(?im)^\s*move\.[bwl]\s+.*\b[ad]\d|(?im)^\s*movem\.[bwl]\b|(?im)^\s*move[mp](?:\.[wl])?\b|(?im)^\s*btst\b|(?im)^\s*dbra\b`), 866 ), 867 rule.Or( 868 rule.MatchingLanguages("SWIG"), 869 regexp.MustCompile(`(?m)^[ \t]*%[a-z_]+\b|^%[{}]$`), 870 ), 871 }, 872 ".ice": &Heuristics{ 873 rule.Or( 874 rule.MatchingLanguages("JSON"), 875 regexp.MustCompile(`(?m)\A\s*[{\[]`), 876 ), 877 rule.Always( 878 rule.MatchingLanguages("Slice"), 879 ), 880 }, 881 ".inc": &Heuristics{ 882 rule.Or( 883 rule.MatchingLanguages("Motorola 68K Assembly"), 884 regexp.MustCompile(`(?m)(?im)\bmoveq(?:\.l)?\s+#(?:\$-?[0-9a-f]{1,3}|%[0-1]{1,8}|-?[0-9]{1,3}),\s*d[0-7]\b|(?im)^\s*move(?:\.[bwl])?\s+(?:sr|usp),\s*[^\s]+|(?im)^\s*move\.[bwl]\s+.*\b[ad]\d|(?im)^\s*movem\.[bwl]\b|(?im)^\s*move[mp](?:\.[wl])?\b|(?im)^\s*btst\b|(?im)^\s*dbra\b`), 885 ), 886 rule.Or( 887 rule.MatchingLanguages("PHP"), 888 regexp.MustCompile(`(?m)^<\?(?:php)?`), 889 ), 890 rule.Or( 891 rule.MatchingLanguages("SourcePawn"), 892 regexp.MustCompile(`(?m)^public\s+(?:SharedPlugin(?:\s+|:)__pl_\w+\s*=(?:\s*{)?|(?:void\s+)?__pl_\w+_SetNTVOptional\(\)(?:\s*{)?)`), 893 ), 894 rule.Or( 895 rule.MatchingLanguages("POV-Ray SDL"), 896 regexp.MustCompile(`(?m)^\s*#(declare|local|macro|while)\s`), 897 ), 898 }, 899 ".l": &Heuristics{ 900 rule.Or( 901 rule.MatchingLanguages("Common Lisp"), 902 regexp.MustCompile(`(?m)\(def(un|macro)\s`), 903 ), 904 rule.Or( 905 rule.MatchingLanguages("Lex"), 906 regexp.MustCompile(`(?m)^(%[%{}]xs|<.*>)`), 907 ), 908 rule.Or( 909 rule.MatchingLanguages("Roff"), 910 regexp.MustCompile(`(?m)^\.[A-Za-z]{2}(\s|$)`), 911 ), 912 rule.Or( 913 rule.MatchingLanguages("PicoLisp"), 914 regexp.MustCompile(`(?m)^\((de|class|rel|code|data|must)\s`), 915 ), 916 }, 917 ".lisp": &Heuristics{ 918 rule.Or( 919 rule.MatchingLanguages("Common Lisp"), 920 regexp.MustCompile(`(?m)^\s*\((?i:defun|in-package|defpackage) `), 921 ), 922 rule.Or( 923 rule.MatchingLanguages("NewLisp"), 924 regexp.MustCompile(`(?m)^\s*\(define `), 925 ), 926 }, 927 ".ls": &Heuristics{ 928 rule.Or( 929 rule.MatchingLanguages("LoomScript"), 930 regexp.MustCompile(`(?m)^\s*package\s*[\w\.\/\*\s]*\s*{`), 931 ), 932 rule.Always( 933 rule.MatchingLanguages("LiveScript"), 934 ), 935 }, 936 ".lsp": &Heuristics{ 937 rule.Or( 938 rule.MatchingLanguages("Common Lisp"), 939 regexp.MustCompile(`(?m)^\s*\((?i:defun|in-package|defpackage) `), 940 ), 941 rule.Or( 942 rule.MatchingLanguages("NewLisp"), 943 regexp.MustCompile(`(?m)^\s*\(define `), 944 ), 945 }, 946 ".m": &Heuristics{ 947 rule.Or( 948 rule.MatchingLanguages("Objective-C"), 949 regexp.MustCompile(`(?m)^\s*(@(interface|class|protocol|property|end|synchronised|selector|implementation)\b|#import\s+.+\.h[">])`), 950 ), 951 rule.Or( 952 rule.MatchingLanguages("Mercury"), 953 regexp.MustCompile(`(?m):- module`), 954 ), 955 rule.Or( 956 rule.MatchingLanguages("MUF"), 957 regexp.MustCompile(`(?m)^: `), 958 ), 959 rule.Or( 960 rule.MatchingLanguages("M"), 961 regexp.MustCompile(`(?m)^\s*;`), 962 ), 963 rule.And( 964 rule.MatchingLanguages("Mathematica"), 965 rule.Or( 966 rule.MatchingLanguages(""), 967 regexp.MustCompile(`(?m)\(\*`), 968 ), 969 rule.Or( 970 rule.MatchingLanguages(""), 971 regexp.MustCompile(`(?m)\*\)$`), 972 ), 973 ), 974 rule.Or( 975 rule.MatchingLanguages("MATLAB"), 976 regexp.MustCompile(`(?m)^\s*%`), 977 ), 978 rule.Or( 979 rule.MatchingLanguages("Limbo"), 980 regexp.MustCompile(`(?m)^\w+\s*:\s*module\s*{`), 981 ), 982 }, 983 ".m4": &Heuristics{ 984 rule.Or( 985 rule.MatchingLanguages("M4Sugar"), 986 regexp.MustCompile(`(?m)AC_DEFUN|AC_PREREQ|AC_INIT|^_?m4_`), 987 ), 988 rule.Always( 989 rule.MatchingLanguages("M4"), 990 ), 991 }, 992 ".man": &Heuristics{ 993 rule.And( 994 rule.MatchingLanguages("Roff Manpage"), 995 rule.Or( 996 rule.MatchingLanguages(""), 997 regexp.MustCompile(`(?m)^[.'][ \t]*Dd +(?:[^"\s]+|"[^"]+")`), 998 ), 999 rule.Or( 1000 rule.MatchingLanguages(""), 1001 regexp.MustCompile(`(?m)^[.'][ \t]*Dt +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 1002 ), 1003 rule.Or( 1004 rule.MatchingLanguages(""), 1005 regexp.MustCompile(`(?m)^[.'][ \t]*Sh +(?:[^"\s]|"[^"]+")`), 1006 ), 1007 ), 1008 rule.And( 1009 rule.MatchingLanguages("Roff Manpage"), 1010 rule.Or( 1011 rule.MatchingLanguages(""), 1012 regexp.MustCompile(`(?m)^[.'][ \t]*TH +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 1013 ), 1014 rule.Or( 1015 rule.MatchingLanguages(""), 1016 regexp.MustCompile(`(?m)^[.'][ \t]*SH +(?:[^"\s]+|"[^"\s]+)`), 1017 ), 1018 ), 1019 rule.Always( 1020 rule.MatchingLanguages("Roff"), 1021 ), 1022 }, 1023 ".mask": &Heuristics{ 1024 rule.Or( 1025 rule.MatchingLanguages("Unity3d Asset"), 1026 regexp.MustCompile(`(?m)tag:unity3d.com`), 1027 ), 1028 }, 1029 ".md": &Heuristics{ 1030 rule.Or( 1031 rule.MatchingLanguages("Markdown"), 1032 regexp.MustCompile(`(?m)(^[-A-Za-z0-9=#!\*\[|>])|<\/|\A\z`), 1033 ), 1034 rule.Or( 1035 rule.MatchingLanguages("GCC Machine Description"), 1036 regexp.MustCompile(`(?m)^(;;|\(define_)`), 1037 ), 1038 rule.Always( 1039 rule.MatchingLanguages("Markdown"), 1040 ), 1041 }, 1042 ".mdoc": &Heuristics{ 1043 rule.And( 1044 rule.MatchingLanguages("Roff Manpage"), 1045 rule.Or( 1046 rule.MatchingLanguages(""), 1047 regexp.MustCompile(`(?m)^[.'][ \t]*Dd +(?:[^"\s]+|"[^"]+")`), 1048 ), 1049 rule.Or( 1050 rule.MatchingLanguages(""), 1051 regexp.MustCompile(`(?m)^[.'][ \t]*Dt +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 1052 ), 1053 rule.Or( 1054 rule.MatchingLanguages(""), 1055 regexp.MustCompile(`(?m)^[.'][ \t]*Sh +(?:[^"\s]|"[^"]+")`), 1056 ), 1057 ), 1058 rule.And( 1059 rule.MatchingLanguages("Roff Manpage"), 1060 rule.Or( 1061 rule.MatchingLanguages(""), 1062 regexp.MustCompile(`(?m)^[.'][ \t]*TH +(?:[^"\s]+|"[^"]+") +"?(?:[1-9]|@[^\s@]+@)`), 1063 ), 1064 rule.Or( 1065 rule.MatchingLanguages(""), 1066 regexp.MustCompile(`(?m)^[.'][ \t]*SH +(?:[^"\s]+|"[^"\s]+)`), 1067 ), 1068 ), 1069 rule.Always( 1070 rule.MatchingLanguages("Roff"), 1071 ), 1072 }, 1073 ".ml": &Heuristics{ 1074 rule.Or( 1075 rule.MatchingLanguages("OCaml"), 1076 regexp.MustCompile(`(?m)(^\s*module)|let rec |match\s+(\S+\s)+with`), 1077 ), 1078 rule.Or( 1079 rule.MatchingLanguages("Standard ML"), 1080 regexp.MustCompile(`(?m)=> |case\s+(\S+\s)+of`), 1081 ), 1082 }, 1083 ".mod": &Heuristics{ 1084 rule.Or( 1085 rule.MatchingLanguages("XML"), 1086 regexp.MustCompile(`(?m)<!ENTITY `), 1087 ), 1088 rule.Or( 1089 rule.MatchingLanguages("Modula-2"), 1090 regexp.MustCompile(`(?m)^\s*(?i:MODULE|END) [\w\.]+;`), 1091 ), 1092 rule.Always( 1093 rule.MatchingLanguages("Linux Kernel Module", "AMPL"), 1094 ), 1095 }, 1096 ".ms": &Heuristics{ 1097 rule.Or( 1098 rule.MatchingLanguages("Roff"), 1099 regexp.MustCompile(`(?m)^[.'][A-Za-z]{2}(\s|$)`), 1100 ), 1101 rule.And( 1102 rule.MatchingLanguages("Unix Assembly"), 1103 rule.Not( 1104 rule.MatchingLanguages(""), 1105 regexp.MustCompile(`(?m)/\*`), 1106 ), 1107 rule.Or( 1108 rule.MatchingLanguages(""), 1109 regexp.MustCompile(`(?m)^\s*\.(?:include\s|globa?l\s|[A-Za-z][_A-Za-z0-9]*:)`), 1110 ), 1111 ), 1112 rule.Always( 1113 rule.MatchingLanguages("MAXScript"), 1114 ), 1115 }, 1116 ".n": &Heuristics{ 1117 rule.Or( 1118 rule.MatchingLanguages("Roff"), 1119 regexp.MustCompile(`(?m)^[.']`), 1120 ), 1121 rule.Or( 1122 rule.MatchingLanguages("Nemerle"), 1123 regexp.MustCompile(`(?m)^(module|namespace|using)\s`), 1124 ), 1125 }, 1126 ".ncl": &Heuristics{ 1127 rule.Or( 1128 rule.MatchingLanguages("XML"), 1129 regexp.MustCompile(`(?m)^\s*<\?xml\s+version`), 1130 ), 1131 rule.Or( 1132 rule.MatchingLanguages("Gerber Image"), 1133 regexp.MustCompile(`(?m)^[DGMT][0-9]{2}\*\r?\n`), 1134 ), 1135 rule.Or( 1136 rule.MatchingLanguages("Text"), 1137 regexp.MustCompile(`(?m)THE_TITLE`), 1138 ), 1139 }, 1140 ".nl": &Heuristics{ 1141 rule.Or( 1142 rule.MatchingLanguages("NL"), 1143 regexp.MustCompile(`(?m)^(b|g)[0-9]+ `), 1144 ), 1145 rule.Always( 1146 rule.MatchingLanguages("NewLisp"), 1147 ), 1148 }, 1149 ".odin": &Heuristics{ 1150 rule.Or( 1151 rule.MatchingLanguages("Object Data Instance Notation"), 1152 regexp.MustCompile(`(?m)(?:^|<)\s*[A-Za-z0-9_]+\s*=\s*<`), 1153 ), 1154 rule.Or( 1155 rule.MatchingLanguages("Odin"), 1156 regexp.MustCompile(`(?m)package\s+\w+|\b(?:im|ex)port\s*"[\w:./]+"|\w+\s*::\s*(?:proc|struct)\s*\(|^\s*//\s`), 1157 ), 1158 }, 1159 ".p": &Heuristics{ 1160 rule.Or( 1161 rule.MatchingLanguages("Gnuplot"), 1162 regexp.MustCompile(`(?m)^s?plot\b|^set\s+(term|terminal|out|output|[xy]tics|[xy]label|[xy]range|style)\b`), 1163 ), 1164 rule.Always( 1165 rule.MatchingLanguages("OpenEdge ABL"), 1166 ), 1167 }, 1168 ".php": &Heuristics{ 1169 rule.Or( 1170 rule.MatchingLanguages("Hack"), 1171 regexp.MustCompile(`(?m)<\?hh`), 1172 ), 1173 rule.Or( 1174 rule.MatchingLanguages("PHP"), 1175 regexp.MustCompile(`(?m)<\?[^h]`), 1176 ), 1177 }, 1178 ".pl": &Heuristics{ 1179 rule.Or( 1180 rule.MatchingLanguages("Prolog"), 1181 regexp.MustCompile(`(?m)^[^#]*:-`), 1182 ), 1183 rule.Or( 1184 rule.MatchingLanguages("Perl"), 1185 regexp.MustCompile(`(?m)\buse\s+(?:strict\b|v?5\.)`), 1186 ), 1187 rule.Or( 1188 rule.MatchingLanguages("Raku"), 1189 regexp.MustCompile(`(?m)^\s*(?:use\s+v6\b|\bmodule\b|\b(?:my\s+)?class\b)`), 1190 ), 1191 }, 1192 ".plist": &Heuristics{ 1193 rule.Or( 1194 rule.MatchingLanguages("XML Property List"), 1195 regexp.MustCompile(`(?m)<!DOCTYPE\s+plist`), 1196 ), 1197 rule.Always( 1198 rule.MatchingLanguages("OpenStep Property List"), 1199 ), 1200 }, 1201 ".pm": &Heuristics{ 1202 rule.Or( 1203 rule.MatchingLanguages("Perl"), 1204 regexp.MustCompile(`(?m)\buse\s+(?:strict\b|v?5\.)`), 1205 ), 1206 rule.Or( 1207 rule.MatchingLanguages("Raku"), 1208 regexp.MustCompile(`(?m)^\s*(?:use\s+v6\b|\bmodule\b|\b(?:my\s+)?class\b)`), 1209 ), 1210 rule.Or( 1211 rule.MatchingLanguages("X PixMap"), 1212 regexp.MustCompile(`(?m)^\s*\/\* XPM \*\/`), 1213 ), 1214 }, 1215 ".pod": &Heuristics{ 1216 rule.Or( 1217 rule.MatchingLanguages("Pod 6"), 1218 regexp.MustCompile(`(?m)^[\s&&[^\n]]*=(comment|begin pod|begin para|item\d+)`), 1219 ), 1220 rule.Always( 1221 rule.MatchingLanguages("Pod"), 1222 ), 1223 }, 1224 ".pp": &Heuristics{ 1225 rule.Or( 1226 rule.MatchingLanguages("Pascal"), 1227 regexp.MustCompile(`(?m)^\s*end[.;]`), 1228 ), 1229 rule.Or( 1230 rule.MatchingLanguages("Puppet"), 1231 regexp.MustCompile(`(?m)^\s+\w+\s+=>\s`), 1232 ), 1233 }, 1234 ".pro": &Heuristics{ 1235 rule.Or( 1236 rule.MatchingLanguages("Proguard"), 1237 regexp.MustCompile(`(?m)^-(include\b.*\.pro$|keep\b|keepclassmembers\b|keepattributes\b)`), 1238 ), 1239 rule.Or( 1240 rule.MatchingLanguages("Prolog"), 1241 regexp.MustCompile(`(?m)^[^\[#]+:-`), 1242 ), 1243 rule.Or( 1244 rule.MatchingLanguages("INI"), 1245 regexp.MustCompile(`(?m)last_client=`), 1246 ), 1247 rule.And( 1248 rule.MatchingLanguages("QMake"), 1249 rule.Or( 1250 rule.MatchingLanguages(""), 1251 regexp.MustCompile(`(?m)HEADERS`), 1252 ), 1253 rule.Or( 1254 rule.MatchingLanguages(""), 1255 regexp.MustCompile(`(?m)SOURCES`), 1256 ), 1257 ), 1258 rule.Or( 1259 rule.MatchingLanguages("IDL"), 1260 regexp.MustCompile(`(?m)^\s*function[ \w,]+$`), 1261 ), 1262 }, 1263 ".properties": &Heuristics{ 1264 rule.And( 1265 rule.MatchingLanguages("INI"), 1266 rule.Or( 1267 rule.MatchingLanguages(""), 1268 regexp.MustCompile(`(?m)^[^#!;][^=]*=`), 1269 ), 1270 rule.Or( 1271 rule.MatchingLanguages(""), 1272 regexp.MustCompile(`(?m)^[;\[]`), 1273 ), 1274 ), 1275 rule.And( 1276 rule.MatchingLanguages("Java Properties"), 1277 rule.Or( 1278 rule.MatchingLanguages(""), 1279 regexp.MustCompile(`(?m)^[^#!;][^=]*=`), 1280 ), 1281 rule.Or( 1282 rule.MatchingLanguages(""), 1283 regexp.MustCompile(`(?m)^[#!]`), 1284 ), 1285 ), 1286 rule.Or( 1287 rule.MatchingLanguages("INI"), 1288 regexp.MustCompile(`(?m)^[^#!;][^=]*=`), 1289 ), 1290 rule.Or( 1291 rule.MatchingLanguages("Java properties"), 1292 regexp.MustCompile(`(?m)^[^#!][^:]*:`), 1293 ), 1294 }, 1295 ".q": &Heuristics{ 1296 rule.Or( 1297 rule.MatchingLanguages("q"), 1298 regexp.MustCompile(`(?m)((?i:[A-Z.][\w.]*:{)|(^|\n)\\(cd?|d|l|p|ts?) )`), 1299 ), 1300 rule.Or( 1301 rule.MatchingLanguages("HiveQL"), 1302 regexp.MustCompile(`(?m)(?i:SELECT\s+[\w*,]+\s+FROM|(CREATE|ALTER|DROP)\s(DATABASE|SCHEMA|TABLE))`), 1303 ), 1304 }, 1305 ".qs": &Heuristics{ 1306 rule.Or( 1307 rule.MatchingLanguages("Q#"), 1308 regexp.MustCompile(`(?m)^((\/{2,3})?\s*(namespace|operation)\b)`), 1309 ), 1310 rule.Or( 1311 rule.MatchingLanguages("Qt Script"), 1312 regexp.MustCompile(`(?m)(\w+\.prototype\.\w+|===|\bvar\b)`), 1313 ), 1314 }, 1315 ".r": &Heuristics{ 1316 rule.Or( 1317 rule.MatchingLanguages("Rebol"), 1318 regexp.MustCompile(`(?m)(?i:\bRebol\b)`), 1319 ), 1320 rule.Or( 1321 rule.MatchingLanguages("R"), 1322 regexp.MustCompile(`(?m)<-|^\s*#`), 1323 ), 1324 }, 1325 ".re": &Heuristics{ 1326 rule.Or( 1327 rule.MatchingLanguages("Reason"), 1328 regexp.MustCompile(`(?m)^\s*module\s+type\s|^\s*(?:include|open)\s+\w+\s*;\s*$|^\s*let\s+(?:module\s\w+\s*=\s*{|\w+:\s+.*=.*;\s*$)`), 1329 ), 1330 rule.Or( 1331 rule.MatchingLanguages("C++"), 1332 regexp.MustCompile(`(?m)^\s*#(?:(?:if|ifdef|define|pragma)\s+\w|\s*include\s+<[^>]+>)|^\s*template\s*<`), 1333 ), 1334 }, 1335 ".res": &Heuristics{ 1336 rule.Or( 1337 rule.MatchingLanguages("ReScript"), 1338 regexp.MustCompile(`(?m)^\s*(let|module|type)\s+\w*\s+=\s+|^\s*(?:include|open)\s+\w+\s*$`), 1339 ), 1340 }, 1341 ".rno": &Heuristics{ 1342 rule.Or( 1343 rule.MatchingLanguages("Roff"), 1344 regexp.MustCompile(`(?m)^\.\\" `), 1345 ), 1346 }, 1347 ".rpy": &Heuristics{ 1348 rule.Or( 1349 rule.MatchingLanguages("Python"), 1350 regexp.MustCompile(`(?m)(?m:^(import|from|class|def)\s)`), 1351 ), 1352 rule.Always( 1353 rule.MatchingLanguages("Ren'Py"), 1354 ), 1355 }, 1356 ".rs": &Heuristics{ 1357 rule.Or( 1358 rule.MatchingLanguages("Rust"), 1359 regexp.MustCompile(`(?m)^(use |fn |mod |pub |macro_rules|impl|#!?\[)`), 1360 ), 1361 rule.Or( 1362 rule.MatchingLanguages("RenderScript"), 1363 regexp.MustCompile(`(?m)#include|#pragma\s+(rs|version)|__attribute__`), 1364 ), 1365 rule.Or( 1366 rule.MatchingLanguages("XML"), 1367 regexp.MustCompile(`(?m)^\s*<\?xml`), 1368 ), 1369 }, 1370 ".s": &Heuristics{ 1371 rule.Or( 1372 rule.MatchingLanguages("Motorola 68K Assembly"), 1373 regexp.MustCompile(`(?m)(?im)\bmoveq(?:\.l)?\s+#(?:\$-?[0-9a-f]{1,3}|%[0-1]{1,8}|-?[0-9]{1,3}),\s*d[0-7]\b|(?im)^\s*move(?:\.[bwl])?\s+(?:sr|usp),\s*[^\s]+|(?im)^\s*move\.[bwl]\s+.*\b[ad]\d|(?im)^\s*movem\.[bwl]\b|(?im)^\s*move[mp](?:\.[wl])?\b|(?im)^\s*btst\b|(?im)^\s*dbra\b`), 1374 ), 1375 }, 1376 ".sc": &Heuristics{ 1377 rule.Or( 1378 rule.MatchingLanguages("SuperCollider"), 1379 regexp.MustCompile(`(?m)(?i:\^(this|super)\.|^\s*~\w+\s*=\.)`), 1380 ), 1381 rule.Or( 1382 rule.MatchingLanguages("Scala"), 1383 regexp.MustCompile(`(?m)(^\s*import (scala|java)\.|^\s*class\b)`), 1384 ), 1385 }, 1386 ".sol": &Heuristics{ 1387 rule.Or( 1388 rule.MatchingLanguages("Gerber Image"), 1389 regexp.MustCompile(`(?m)^[DGMT][0-9]{2}\*\r?\n`), 1390 ), 1391 }, 1392 ".sql": &Heuristics{ 1393 rule.Or( 1394 rule.MatchingLanguages("PLpgSQL"), 1395 regexp.MustCompile(`(?m)(?i:^\\i\b|AS\s+\$\$|LANGUAGE\s+'?plpgsql'?|BEGIN(\s+WORK)?\s*;)`), 1396 ), 1397 rule.Or( 1398 rule.MatchingLanguages("SQLPL"), 1399 regexp.MustCompile(`(?m)(?i:ALTER\s+MODULE|MODE\s+DB2SQL|\bSYS(CAT|PROC)\.|ASSOCIATE\s+RESULT\s+SET|\bEND!\s*$)`), 1400 ), 1401 rule.Or( 1402 rule.MatchingLanguages("PLSQL"), 1403 regexp.MustCompile(`(?m)(?i:\$\$PLSQL_|XMLTYPE|systimestamp|\.nextval|CONNECT\s+BY|AUTHID\s+(DEFINER|CURRENT_USER)|constructor\W+function)`), 1404 ), 1405 rule.Or( 1406 rule.MatchingLanguages("TSQL"), 1407 regexp.MustCompile(`(?m)(?i:^\s*GO\b|BEGIN(\s+TRY|\s+CATCH)|OUTPUT\s+INSERTED|DECLARE\s+@|\[dbo\])`), 1408 ), 1409 rule.Always( 1410 rule.MatchingLanguages("SQL"), 1411 ), 1412 }, 1413 ".srt": &Heuristics{ 1414 rule.Or( 1415 rule.MatchingLanguages("SubRip Text"), 1416 regexp.MustCompile(`(?m)^(\d{2}:\d{2}:\d{2},\d{3})\s*(-->)\s*(\d{2}:\d{2}:\d{2},\d{3})$`), 1417 ), 1418 }, 1419 ".st": &Heuristics{ 1420 rule.Or( 1421 rule.MatchingLanguages("Smalltalk"), 1422 regexp.MustCompile(`(?m)\A\s*[\[{(^"'\w#]|[a-zA-Z_]\w*\s*:=\s*[a-zA-Z_]\w*|class\s*>>\s*[a-zA-Z_]\w*|^[a-zA-Z_]\w*\s+[a-zA-Z_]\w*:|^Class\s*{|if(?:True|False):\s*\[`), 1423 ), 1424 }, 1425 ".t": &Heuristics{ 1426 rule.Or( 1427 rule.MatchingLanguages("Perl"), 1428 regexp.MustCompile(`(?m)\buse\s+(?:strict\b|v?5\.)`), 1429 ), 1430 rule.Or( 1431 rule.MatchingLanguages("Raku"), 1432 regexp.MustCompile(`(?m)^\s*(?:use\s+v6\b|\bmodule\b|\bmy\s+class\b)`), 1433 ), 1434 rule.Or( 1435 rule.MatchingLanguages("Turing"), 1436 regexp.MustCompile(`(?m)^\s*%[ \t]+|^\s*var\s+\w+(\s*:\s*\w+)?\s*:=\s*\w+`), 1437 ), 1438 }, 1439 ".toc": &Heuristics{ 1440 rule.Or( 1441 rule.MatchingLanguages("World of Warcraft Addon Data"), 1442 regexp.MustCompile(`(?m)^## |@no-lib-strip@`), 1443 ), 1444 rule.Or( 1445 rule.MatchingLanguages("TeX"), 1446 regexp.MustCompile(`(?m)^\\(contentsline|defcounter|beamer|boolfalse)`), 1447 ), 1448 }, 1449 ".ts": &Heuristics{ 1450 rule.Or( 1451 rule.MatchingLanguages("XML"), 1452 regexp.MustCompile(`(?m)<TS\b`), 1453 ), 1454 rule.Always( 1455 rule.MatchingLanguages("TypeScript"), 1456 ), 1457 }, 1458 ".tst": &Heuristics{ 1459 rule.Or( 1460 rule.MatchingLanguages("GAP"), 1461 regexp.MustCompile(`(?m)gap> `), 1462 ), 1463 rule.Always( 1464 rule.MatchingLanguages("Scilab"), 1465 ), 1466 }, 1467 ".tsx": &Heuristics{ 1468 rule.Or( 1469 rule.MatchingLanguages("TSX"), 1470 regexp.MustCompile(`(?m)^\s*(import.+(from\s+|require\()['"]react|\/\/\/\s*<reference\s)`), 1471 ), 1472 rule.Or( 1473 rule.MatchingLanguages("XML"), 1474 regexp.MustCompile(`(?m)(?i:^\s*<\?xml\s+version)`), 1475 ), 1476 }, 1477 ".txt": &Heuristics{ 1478 rule.Always( 1479 rule.MatchingLanguages("Text"), 1480 ), 1481 }, 1482 ".v": &Heuristics{ 1483 rule.Or( 1484 rule.MatchingLanguages("Coq"), 1485 regexp.MustCompile(`(?m)(?:^|\s)(?:Proof|Qed)\.(?:$|\s)|(?:^|\s)Require[ \t]+(Import|Export)\s`), 1486 ), 1487 rule.Or( 1488 rule.MatchingLanguages("Verilog"), 1489 regexp.MustCompile(`(?m)^[ \t]*module\s+[^\s()]+\s+\#?\(|^[ \t]*`+"`"+`(?:define|ifdef|ifndef|include|timescale)|^[ \t]*always[ \t]+@|^[ \t]*initial[ \t]+(begin|@)`), 1490 ), 1491 rule.Or( 1492 rule.MatchingLanguages("V"), 1493 regexp.MustCompile(`(?m)\$(?:if|else)[ \t]|^[ \t]*fn\s+[^\s()]+\(.*?\).*?\{|^[ \t]*for\s*\{`), 1494 ), 1495 }, 1496 ".vba": &Heuristics{ 1497 rule.Or( 1498 rule.MatchingLanguages("Vim script"), 1499 regexp.MustCompile(`(?m)^UseVimball`), 1500 ), 1501 rule.Always( 1502 rule.MatchingLanguages("VBA"), 1503 ), 1504 }, 1505 ".w": &Heuristics{ 1506 rule.Or( 1507 rule.MatchingLanguages("OpenEdge ABL"), 1508 regexp.MustCompile(`(?m)&ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS`), 1509 ), 1510 rule.Or( 1511 rule.MatchingLanguages("CWeb"), 1512 regexp.MustCompile(`(?m)^@(<|\w+\.)`), 1513 ), 1514 }, 1515 ".x": &Heuristics{ 1516 rule.Or( 1517 rule.MatchingLanguages("DirectX 3D File"), 1518 regexp.MustCompile(`(?m)^xof 030(2|3)(?:txt|bin|tzip|bzip)\b`), 1519 ), 1520 rule.Or( 1521 rule.MatchingLanguages("RPC"), 1522 regexp.MustCompile(`(?m)\b(program|version)\s+\w+\s*{|\bunion\s+\w+\s+switch\s*\(`), 1523 ), 1524 rule.Or( 1525 rule.MatchingLanguages("Logos"), 1526 regexp.MustCompile(`(?m)^%(end|ctor|hook|group)\b`), 1527 ), 1528 rule.Or( 1529 rule.MatchingLanguages("Linker Script"), 1530 regexp.MustCompile(`(?m)OUTPUT_ARCH\(|OUTPUT_FORMAT\(|SECTIONS`), 1531 ), 1532 }, 1533 ".yy": &Heuristics{ 1534 rule.Or( 1535 rule.MatchingLanguages("JSON"), 1536 regexp.MustCompile(`(?m)\"modelName\"\:\s*\"GM`), 1537 ), 1538 rule.Always( 1539 rule.MatchingLanguages("Yacc"), 1540 ), 1541 }, 1542} 1543