| ofs | hex dump | ascii |
|---|
| 0000 | 73 2d 32 30 32 32 30 39 30 32 2e 31 35 31 31 2f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | s-20220902.1511/................ |
| 0020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0060 | 00 00 00 00 30 30 30 30 37 35 35 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 | ....0000755.0000000.0000000.0000 |
| 0080 | 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 31 32 34 33 00 20 35 00 00 00 | 0000000.00000000000.011243..5... |
| 00a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 00c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 00e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0100 | 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...root................... |
| 0120 | 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........root................... |
| 0140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0200 | 73 2d 32 30 32 32 30 39 30 32 2e 31 35 31 31 2f 73 2d 70 6b 67 2e 65 6c 00 00 00 00 00 00 00 00 | s-20220902.1511/s-pkg.el........ |
| 0220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0260 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 | ....0000644.0000000.0000000.0000 |
| 0280 | 30 30 30 30 36 32 34 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 32 36 31 30 00 20 30 00 00 00 | 0000624.00000000000.012610..0... |
| 02a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 02c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 02e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0300 | 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...root................... |
| 0320 | 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........root................... |
| 0340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 03a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 03c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 03e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0400 | 3b 3b 20 2d 2a 2d 20 6e 6f 2d 62 79 74 65 2d 63 6f 6d 70 69 6c 65 3a 20 74 3b 20 6c 65 78 69 63 | ;;.-*-.no-byte-compile:.t;.lexic |
| 0420 | 61 6c 2d 62 69 6e 64 69 6e 67 3a 20 6e 69 6c 20 2d 2a 2d 0a 28 64 65 66 69 6e 65 2d 70 61 63 6b | al-binding:.nil.-*-.(define-pack |
| 0440 | 61 67 65 20 22 73 22 20 22 32 30 32 32 30 39 30 32 2e 31 35 31 31 22 0a 20 20 22 54 68 65 20 6c | age."s"."20220902.1511"..."The.l |
| 0460 | 6f 6e 67 20 6c 6f 73 74 20 45 6d 61 63 73 20 73 74 72 69 6e 67 20 6d 61 6e 69 70 75 6c 61 74 69 | ong.lost.Emacs.string.manipulati |
| 0480 | 6f 6e 20 6c 69 62 72 61 72 79 2e 22 0a 20 20 28 29 0a 20 20 3a 75 72 6c 20 22 68 74 74 70 73 3a | on.library."...()...:url."https: |
| 04a0 | 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6d 61 67 6e 61 72 73 2f 73 2e 65 6c 22 0a 20 20 3a 63 6f | //github.com/magnars/s.el"...:co |
| 04c0 | 6d 6d 69 74 20 22 62 34 62 38 63 30 33 66 63 65 66 33 31 36 61 32 37 66 37 35 36 33 33 66 65 34 | mmit."b4b8c03fcef316a27f75633fe4 |
| 04e0 | 62 62 39 39 30 61 65 66 66 36 65 37 30 35 22 0a 20 20 3a 72 65 76 64 65 73 63 20 22 62 34 62 38 | bb990aeff6e705"...:revdesc."b4b8 |
| 0500 | 63 30 33 66 63 65 66 33 22 0a 20 20 3a 6b 65 79 77 6f 72 64 73 20 27 28 22 73 74 72 69 6e 67 73 | c03fcef3"...:keywords.'("strings |
| 0520 | 22 29 0a 20 20 3a 61 75 74 68 6f 72 73 20 27 28 28 22 4d 61 67 6e 61 72 20 53 76 65 65 6e 22 20 | ")...:authors.'(("Magnar.Sveen". |
| 0540 | 2e 20 22 6d 61 67 6e 61 72 73 40 67 6d 61 69 6c 2e 63 6f 6d 22 29 29 0a 20 20 3a 6d 61 69 6e 74 | .."magnars@gmail.com"))...:maint |
| 0560 | 61 69 6e 65 72 73 20 27 28 28 22 4a 61 73 6f 6e 20 4d 69 6c 6b 69 6e 73 22 20 2e 20 22 6a 61 73 | ainers.'(("Jason.Milkins"..."jas |
| 0580 | 6f 6e 6d 32 33 40 67 6d 61 69 6c 2e 63 6f 6d 22 29 29 29 0a 00 00 00 00 00 00 00 00 00 00 00 00 | onm23@gmail.com")))............. |
| 05a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 05c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 05e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0600 | 73 2d 32 30 32 32 30 39 30 32 2e 31 35 31 31 2f 73 2e 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 | s-20220902.1511/s.el............ |
| 0620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0660 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 | ....0000644.0000000.0000000.0000 |
| 0680 | 30 30 36 33 30 30 33 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 32 30 33 31 00 20 30 00 00 00 | 0063003.00000000000.012031..0... |
| 06a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 06c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 06e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0700 | 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...root................... |
| 0720 | 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........root................... |
| 0740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 07a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 07c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 07e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0800 | 3b 3b 3b 20 73 2e 65 6c 20 2d 2d 2d 20 54 68 65 20 6c 6f 6e 67 20 6c 6f 73 74 20 45 6d 61 63 73 | ;;;.s.el.---.The.long.lost.Emacs |
| 0820 | 20 73 74 72 69 6e 67 20 6d 61 6e 69 70 75 6c 61 74 69 6f 6e 20 6c 69 62 72 61 72 79 2e 20 2d 2a | .string.manipulation.library..-* |
| 0840 | 2d 20 6c 65 78 69 63 61 6c 2d 62 69 6e 64 69 6e 67 3a 20 74 20 2d 2a 2d 0a 0a 3b 3b 20 43 6f 70 | -.lexical-binding:.t.-*-..;;.Cop |
| 0860 | 79 72 69 67 68 74 20 28 43 29 20 32 30 31 32 2d 32 30 32 32 20 4d 61 67 6e 61 72 20 53 76 65 65 | yright.(C).2012-2022.Magnar.Svee |
| 0880 | 6e 0a 0a 3b 3b 20 41 75 74 68 6f 72 3a 20 4d 61 67 6e 61 72 20 53 76 65 65 6e 20 3c 6d 61 67 6e | n..;;.Author:.Magnar.Sveen.<magn |
| 08a0 | 61 72 73 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a 3b 3b 20 4d 61 69 6e 74 61 69 6e 65 72 3a 20 4a 61 | ars@gmail.com>.;;.Maintainer:.Ja |
| 08c0 | 73 6f 6e 20 4d 69 6c 6b 69 6e 73 20 3c 6a 61 73 6f 6e 6d 32 33 40 67 6d 61 69 6c 2e 63 6f 6d 3e | son.Milkins.<jasonm23@gmail.com> |
| 08e0 | 0a 3b 3b 20 50 61 63 6b 61 67 65 2d 56 65 72 73 69 6f 6e 3a 20 32 30 32 32 30 39 30 32 2e 31 35 | .;;.Package-Version:.20220902.15 |
| 0900 | 31 31 0a 3b 3b 20 50 61 63 6b 61 67 65 2d 52 65 76 69 73 69 6f 6e 3a 20 62 34 62 38 63 30 33 66 | 11.;;.Package-Revision:.b4b8c03f |
| 0920 | 63 65 66 33 0a 3b 3b 20 4b 65 79 77 6f 72 64 73 3a 20 73 74 72 69 6e 67 73 0a 0a 3b 3b 20 54 68 | cef3.;;.Keywords:.strings..;;.Th |
| 0940 | 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 3b 20 79 6f 75 | is.program.is.free.software;.you |
| 0960 | 20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20 61 6e 64 2f 6f 72 20 6d 6f 64 69 | .can.redistribute.it.and/or.modi |
| 0980 | 66 79 0a 3b 3b 20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 20 | fy.;;.it.under.the.terms.of.the. |
| 09a0 | 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 61 73 20 70 75 | GNU.General.Public.License.as.pu |
| 09c0 | 62 6c 69 73 68 65 64 20 62 79 0a 3b 3b 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 | blished.by.;;.the.Free.Software. |
| 09e0 | 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65 72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20 | Foundation,.either.version.3.of. |
| 0a00 | 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 3b 3b 20 28 61 74 20 79 6f 75 72 20 6f 70 74 69 | the.License,.or.;;.(at.your.opti |
| 0a20 | 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 73 20 | on).any.later.version...;;.This. |
| 0a40 | 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e 20 74 68 65 20 68 6f | program.is.distributed.in.the.ho |
| 0a60 | 70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2c 0a 3b 3b 20 62 75 | pe.that.it.will.be.useful,.;;.bu |
| 0a80 | 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20 | t.WITHOUT.ANY.WARRANTY;.without. |
| 0aa0 | 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20 6f 66 0a 3b 3b 20 | even.the.implied.warranty.of.;;. |
| 0ac0 | 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41 | MERCHANTABILITY.or.FITNESS.FOR.A |
| 0ae0 | 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65 20 74 68 65 0a 3b 3b | .PARTICULAR.PURPOSE...See.the.;; |
| 0b00 | 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20 | .GNU.General.Public.License.for. |
| 0b20 | 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 68 6f 75 6c 64 20 68 61 76 | more.details...;;.You.should.hav |
| 0b40 | 65 20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e | e.received.a.copy.of.the.GNU.Gen |
| 0b60 | 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 69 74 | eral.Public.License.;;.along.wit |
| 0b80 | 68 20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20 73 65 65 20 3c 68 74 | h.this.program...If.not,.see.<ht |
| 0ba0 | 74 70 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b | tp://www.gnu.org/licenses/>...;; |
| 0bc0 | 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 54 68 65 20 6c 6f 6e 67 20 6c 6f 73 74 20 | ;.Commentary:..;;.The.long.lost. |
| 0be0 | 45 6d 61 63 73 20 73 74 72 69 6e 67 20 6d 61 6e 69 70 75 6c 61 74 69 6f 6e 20 6c 69 62 72 61 72 | Emacs.string.manipulation.librar |
| 0c00 | 79 2e 0a 3b 3b 0a 3b 3b 20 53 65 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 6e 20 68 74 | y..;;.;;.See.documentation.on.ht |
| 0c20 | 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6d 61 67 6e 61 72 73 2f 73 2e 65 6c 23 66 75 | tps://github.com/magnars/s.el#fu |
| 0c40 | 6e 63 74 69 6f 6e 73 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 0a 3b 3b 20 53 69 6c 65 6e 63 65 20 62 | nctions..;;;.Code:..;;.Silence.b |
| 0c60 | 79 74 65 2d 63 6f 6d 70 69 6c 65 72 0a 28 64 65 66 76 61 72 20 75 63 73 2d 6e 6f 72 6d 61 6c 69 | yte-compiler.(defvar.ucs-normali |
| 0c80 | 7a 65 2d 63 6f 6d 62 69 6e 69 6e 67 2d 63 68 61 72 73 29 20 20 3b 20 44 65 66 69 6e 65 64 20 69 | ze-combining-chars)..;.Defined.i |
| 0ca0 | 6e 20 60 75 63 73 2d 6e 6f 72 6d 61 6c 69 7a 65 27 0a 28 61 75 74 6f 6c 6f 61 64 20 27 73 6c 6f | n.`ucs-normalize'.(autoload.'slo |
| 0cc0 | 74 2d 76 61 6c 75 65 20 22 65 69 65 69 6f 22 29 0a 0a 28 64 65 66 75 6e 20 73 2d 74 72 69 6d 2d | t-value."eieio")..(defun.s-trim- |
| 0ce0 | 6c 65 66 74 20 28 73 29 0a 20 20 22 52 65 6d 6f 76 65 20 77 68 69 74 65 73 70 61 63 65 20 61 74 | left.(s)..."Remove.whitespace.at |
| 0d00 | 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 53 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 | .the.beginning.of.S."...(declare |
| 0d20 | 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a | .(pure.t).(side-effect-free.t)). |
| 0d40 | 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 28 69 66 20 28 73 74 72 69 | ..(save-match-data.....(if.(stri |
| 0d60 | 6e 67 2d 6d 61 74 63 68 20 22 5c 5c 60 5b 20 5c 74 5c 6e 5c 72 5d 2b 22 20 73 29 0a 20 20 20 20 | ng-match."\\`[.\t\n\r]+".s)..... |
| 0d80 | 20 20 20 20 28 72 65 70 6c 61 63 65 2d 6d 61 74 63 68 20 22 22 20 74 20 74 20 73 29 0a 20 20 20 | ....(replace-match."".t.t.s).... |
| 0da0 | 20 20 20 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 74 72 69 6d 2d 72 69 67 68 74 20 28 73 29 | ...s)))..(defun.s-trim-right.(s) |
| 0dc0 | 0a 20 20 22 52 65 6d 6f 76 65 20 77 68 69 74 65 73 70 61 63 65 20 61 74 20 74 68 65 20 65 6e 64 | ..."Remove.whitespace.at.the.end |
| 0de0 | 20 6f 66 20 53 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 | .of.S."...(declare.(pure.t).(sid |
| 0e00 | 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d | e-effect-free.t))...(save-match- |
| 0e20 | 64 61 74 61 0a 20 20 20 20 28 69 66 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 5b 20 5c 74 | data.....(if.(string-match."[.\t |
| 0e40 | 5c 6e 5c 72 5d 2b 5c 5c 27 22 20 73 29 0a 20 20 20 20 20 20 20 20 28 72 65 70 6c 61 63 65 2d 6d | \n\r]+\\'".s).........(replace-m |
| 0e60 | 61 74 63 68 20 22 22 20 74 20 74 20 73 29 0a 20 20 20 20 20 20 73 29 29 29 0a 0a 28 64 65 66 75 | atch."".t.t.s).......s)))..(defu |
| 0e80 | 6e 20 73 2d 74 72 69 6d 20 28 73 29 0a 20 20 22 52 65 6d 6f 76 65 20 77 68 69 74 65 73 70 61 63 | n.s-trim.(s)..."Remove.whitespac |
| 0ea0 | 65 20 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 61 6e 64 20 65 6e 64 20 6f 66 20 53 2e | e.at.the.beginning.and.end.of.S. |
| 0ec0 | 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 | "...(declare.(pure.t).(side-effe |
| 0ee0 | 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 2d 74 72 69 6d 2d 6c 65 66 74 20 28 73 2d 74 72 | ct-free.t))...(s-trim-left.(s-tr |
| 0f00 | 69 6d 2d 72 69 67 68 74 20 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 63 6f 6c 6c 61 70 73 65 | im-right.s)))..(defun.s-collapse |
| 0f20 | 2d 77 68 69 74 65 73 70 61 63 65 20 28 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 61 6c 6c 20 61 | -whitespace.(s)..."Convert.all.a |
| 0f40 | 64 6a 61 63 65 6e 74 20 77 68 69 74 65 73 70 61 63 65 20 63 68 61 72 61 63 74 65 72 73 20 74 6f | djacent.whitespace.characters.to |
| 0f60 | 20 61 20 73 69 6e 67 6c 65 20 73 70 61 63 65 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 | .a.single.space."...(declare.(pu |
| 0f80 | 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 72 | re.t).(side-effect-free.t))...(r |
| 0fa0 | 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 20 22 5b 20 5c 74 5c 6e 5c | eplace-regexp-in-string."[.\t\n\ |
| 0fc0 | 72 5d 2b 22 20 22 20 22 20 73 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 75 6e 69 6e 64 65 6e 74 20 | r]+".".".s))..(defun.s-unindent. |
| 0fe0 | 28 73 20 26 6f 70 74 69 6f 6e 61 6c 20 62 6f 6c 29 0a 20 20 22 55 6e 69 6e 64 65 6e 74 20 53 20 | (s.&optional.bol)..."Unindent.S. |
| 1000 | 77 68 69 63 68 20 68 61 73 20 42 4f 4c 20 28 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 6c 69 6e 65 | which.has.BOL.(beginning.of.line |
| 1020 | 29 20 69 6e 64 69 63 61 74 6f 72 73 2e 0a 42 4f 4c 20 77 69 6c 6c 20 64 65 66 61 75 6c 74 20 74 | ).indicators..BOL.will.default.t |
| 1040 | 6f 20 70 69 70 65 2e 20 59 6f 75 20 63 61 6e 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 73 75 70 70 6c | o.pipe..You.can.optionally.suppl |
| 1060 | 79 20 79 6f 75 72 20 6f 77 6e 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 | y.your.own."...(declare.(pure.t) |
| 1080 | 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 | .(side-effect-free.t))...(let.(( |
| 10a0 | 63 61 73 65 2d 66 6f 6c 64 2d 73 65 61 72 63 68 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 28 62 | case-fold-search.nil).........(b |
| 10c0 | 6f 6c 20 28 6f 72 20 62 6f 6c 20 22 7c 22 29 29 29 0a 20 20 20 28 73 2d 72 65 70 6c 61 63 65 2d | ol.(or.bol."|")))....(s-replace- |
| 10e0 | 72 65 67 65 78 70 20 28 63 6f 6e 63 61 74 20 22 5e 5b 5b 3a 73 70 61 63 65 3a 5d 5d 2a 22 20 28 | regexp.(concat."^[[:space:]]*".( |
| 1100 | 72 65 67 65 78 70 2d 71 75 6f 74 65 20 62 6f 6c 29 29 20 22 22 20 73 29 29 29 0a 0a 28 64 65 66 | regexp-quote.bol))."".s)))..(def |
| 1120 | 75 6e 20 73 2d 73 70 6c 69 74 20 28 73 65 70 61 72 61 74 6f 72 20 73 20 26 6f 70 74 69 6f 6e 61 | un.s-split.(separator.s.&optiona |
| 1140 | 6c 20 6f 6d 69 74 2d 6e 75 6c 6c 73 29 0a 20 20 22 53 70 6c 69 74 20 53 20 69 6e 74 6f 20 73 75 | l.omit-nulls)..."Split.S.into.su |
| 1160 | 62 73 74 72 69 6e 67 73 20 62 6f 75 6e 64 65 64 20 62 79 20 6d 61 74 63 68 65 73 20 66 6f 72 20 | bstrings.bounded.by.matches.for. |
| 1180 | 72 65 67 65 78 70 20 53 45 50 41 52 41 54 4f 52 2e 0a 49 66 20 4f 4d 49 54 2d 4e 55 4c 4c 53 20 | regexp.SEPARATOR..If.OMIT-NULLS. |
| 11a0 | 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 7a 65 72 6f 2d 6c 65 6e 67 74 68 20 73 75 62 73 74 72 69 6e | is.non-nil,.zero-length.substrin |
| 11c0 | 67 73 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 0a 0a 54 68 69 73 20 69 73 20 61 20 73 69 6d 70 6c | gs.are.omitted...This.is.a.simpl |
| 11e0 | 65 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 60 73 | e.wrapper.around.the.built-in.`s |
| 1200 | 70 6c 69 74 2d 73 74 72 69 6e 67 27 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d | plit-string'."...(declare.(side- |
| 1220 | 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 | effect-free.t))...(save-match-da |
| 1240 | 74 61 0a 20 20 20 20 28 73 70 6c 69 74 2d 73 74 72 69 6e 67 20 73 20 73 65 70 61 72 61 74 6f 72 | ta.....(split-string.s.separator |
| 1260 | 20 6f 6d 69 74 2d 6e 75 6c 6c 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 73 70 6c 69 74 2d 75 | .omit-nulls)))..(defun.s-split-u |
| 1280 | 70 2d 74 6f 20 28 73 65 70 61 72 61 74 6f 72 20 73 20 6e 20 26 6f 70 74 69 6f 6e 61 6c 20 6f 6d | p-to.(separator.s.n.&optional.om |
| 12a0 | 69 74 2d 6e 75 6c 6c 73 29 0a 20 20 22 53 70 6c 69 74 20 53 20 75 70 20 74 6f 20 4e 20 74 69 6d | it-nulls)..."Split.S.up.to.N.tim |
| 12c0 | 65 73 20 69 6e 74 6f 20 73 75 62 73 74 72 69 6e 67 73 20 62 6f 75 6e 64 65 64 20 62 79 20 6d 61 | es.into.substrings.bounded.by.ma |
| 12e0 | 74 63 68 65 73 20 66 6f 72 20 72 65 67 65 78 70 20 53 45 50 41 52 41 54 4f 52 2e 0a 0a 49 66 20 | tches.for.regexp.SEPARATOR...If. |
| 1300 | 4f 4d 49 54 2d 4e 55 4c 4c 53 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 7a 65 72 6f 2d 6c 65 6e 67 | OMIT-NULLS.is.non-nil,.zero-leng |
| 1320 | 74 68 20 73 75 62 73 74 72 69 6e 67 73 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 0a 0a 53 65 65 20 | th.substrings.are.omitted...See. |
| 1340 | 61 6c 73 6f 20 60 73 2d 73 70 6c 69 74 27 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 | also.`s-split'."...(declare.(sid |
| 1360 | 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d | e-effect-free.t))...(save-match- |
| 1380 | 64 61 74 61 0a 20 20 20 20 28 6c 65 74 20 28 28 6f 70 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 | data.....(let.((op.0)........... |
| 13a0 | 28 72 20 6e 69 6c 29 29 0a 20 20 20 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 | (r.nil)).......(with-temp-buffer |
| 13c0 | 0a 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 73 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 | .........(insert.s).........(set |
| 13e0 | 71 20 6f 70 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 0a 20 20 | q.op.(goto-char.(point-min)))... |
| 1400 | 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 20 28 72 65 2d 73 65 61 72 63 68 2d 66 6f 72 | ......(while.(and.(re-search-for |
| 1420 | 77 61 72 64 20 73 65 70 61 72 61 74 6f 72 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 | ward.separator.nil.t)........... |
| 1440 | 20 20 20 20 20 20 20 20 20 20 28 3c 20 30 20 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 | ..........(<.0.n))...........(le |
| 1460 | 74 20 28 28 73 75 62 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 6f 70 20 28 6d 61 | t.((sub.(buffer-substring.op.(ma |
| 1480 | 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | tch-beginning.0))))............. |
| 14a0 | 28 75 6e 6c 65 73 73 20 28 61 6e 64 20 6f 6d 69 74 2d 6e 75 6c 6c 73 0a 20 20 20 20 20 20 20 20 | (unless.(and.omit-nulls......... |
| 14c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 71 75 61 6c 20 73 75 62 20 22 22 29 29 | .................(equal.sub."")) |
| 14e0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 73 75 62 20 72 29 29 29 0a 20 20 | ...............(push.sub.r)))... |
| 1500 | 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6f 70 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 6d 61 74 | ........(setq.op.(goto-char.(mat |
| 1520 | 63 68 2d 65 6e 64 20 30 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6e 20 28 31 | ch-end.0)))...........(setq.n.(1 |
| 1540 | 2d 20 6e 29 29 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 73 75 62 20 28 62 75 66 66 65 | -.n))).........(let.((sub.(buffe |
| 1560 | 72 2d 73 75 62 73 74 72 69 6e 67 20 6f 70 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 0a 20 20 | r-substring.op.(point-max))))... |
| 1580 | 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 61 6e 64 20 6f 6d 69 74 2d 6e 75 6c 6c 73 0a | ........(unless.(and.omit-nulls. |
| 15a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 71 75 61 6c 20 73 75 | .......................(equal.su |
| 15c0 | 62 20 22 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 73 75 62 20 72 29 29 | b."")).............(push.sub.r)) |
| 15e0 | 29 29 0a 20 20 20 20 20 20 28 6e 72 65 76 65 72 73 65 20 72 29 29 29 29 0a 0a 28 64 65 66 75 6e | )).......(nreverse.r))))..(defun |
| 1600 | 20 73 2d 6c 69 6e 65 73 20 28 73 29 0a 20 20 22 53 70 6c 69 74 73 20 53 20 69 6e 74 6f 20 61 20 | .s-lines.(s)..."Splits.S.into.a. |
| 1620 | 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 20 6f 6e 20 6e 65 77 6c 69 6e 65 20 63 68 61 72 61 | list.of.strings.on.newline.chara |
| 1640 | 63 74 65 72 73 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 | cters."...(declare.(pure.t).(sid |
| 1660 | 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 2d 73 70 6c 69 74 20 22 5c 5c | e-effect-free.t))...(s-split."\\ |
| 1680 | 28 5c 72 5c 6e 5c 5c 7c 5b 5c 6e 5c 72 5d 5c 5c 29 22 20 73 29 29 0a 0a 28 64 65 66 75 6e 20 73 | (\r\n\\|[\n\r]\\)".s))..(defun.s |
| 16a0 | 2d 6a 6f 69 6e 20 28 73 65 70 61 72 61 74 6f 72 20 73 74 72 69 6e 67 73 29 0a 20 20 22 4a 6f 69 | -join.(separator.strings)..."Joi |
| 16c0 | 6e 20 61 6c 6c 20 74 68 65 20 73 74 72 69 6e 67 73 20 69 6e 20 53 54 52 49 4e 47 53 20 77 69 74 | n.all.the.strings.in.STRINGS.wit |
| 16e0 | 68 20 53 45 50 41 52 41 54 4f 52 20 69 6e 20 62 65 74 77 65 65 6e 2e 22 0a 20 20 28 64 65 63 6c | h.SEPARATOR.in.between."...(decl |
| 1700 | 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 | are.(pure.t).(side-effect-free.t |
| 1720 | 29 29 0a 20 20 28 6d 61 70 63 6f 6e 63 61 74 20 27 69 64 65 6e 74 69 74 79 20 73 74 72 69 6e 67 | ))...(mapconcat.'identity.string |
| 1740 | 73 20 73 65 70 61 72 61 74 6f 72 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 63 6f 6e 63 61 74 20 28 | s.separator))..(defun.s-concat.( |
| 1760 | 26 72 65 73 74 20 73 74 72 69 6e 67 73 29 0a 20 20 22 4a 6f 69 6e 20 61 6c 6c 20 74 68 65 20 73 | &rest.strings)..."Join.all.the.s |
| 1780 | 74 72 69 6e 67 20 61 72 67 75 6d 65 6e 74 73 20 69 6e 74 6f 20 6f 6e 65 20 73 74 72 69 6e 67 2e | tring.arguments.into.one.string. |
| 17a0 | 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 | "...(declare.(pure.t).(side-effe |
| 17c0 | 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 61 70 70 6c 79 20 27 63 6f 6e 63 61 74 20 73 74 72 | ct-free.t))...(apply.'concat.str |
| 17e0 | 69 6e 67 73 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 70 72 65 70 65 6e 64 20 28 70 72 65 66 69 78 | ings))..(defun.s-prepend.(prefix |
| 1800 | 20 73 29 0a 20 20 22 43 6f 6e 63 61 74 65 6e 61 74 65 20 50 52 45 46 49 58 20 61 6e 64 20 53 2e | .s)..."Concatenate.PREFIX.and.S. |
| 1820 | 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 | "...(declare.(pure.t).(side-effe |
| 1840 | 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 63 6f 6e 63 61 74 20 70 72 65 66 69 78 20 73 29 29 | ct-free.t))...(concat.prefix.s)) |
| 1860 | 0a 0a 28 64 65 66 75 6e 20 73 2d 61 70 70 65 6e 64 20 28 73 75 66 66 69 78 20 73 29 0a 20 20 22 | ..(defun.s-append.(suffix.s)..." |
| 1880 | 43 6f 6e 63 61 74 65 6e 61 74 65 20 53 20 61 6e 64 20 53 55 46 46 49 58 2e 22 0a 20 20 28 64 65 | Concatenate.S.and.SUFFIX."...(de |
| 18a0 | 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 | clare.(pure.t).(side-effect-free |
| 18c0 | 20 74 29 29 0a 20 20 28 63 6f 6e 63 61 74 20 73 20 73 75 66 66 69 78 29 29 0a 0a 28 64 65 66 75 | .t))...(concat.s.suffix))..(defu |
| 18e0 | 6e 20 73 2d 73 70 6c 69 63 65 20 28 6e 65 65 64 6c 65 20 6e 20 73 29 0a 20 20 22 53 70 6c 69 63 | n.s-splice.(needle.n.s)..."Splic |
| 1900 | 65 20 4e 45 45 44 4c 45 20 69 6e 74 6f 20 53 20 61 74 20 70 6f 73 69 74 69 6f 6e 20 4e 2e 0a 30 | e.NEEDLE.into.S.at.position.N..0 |
| 1920 | 20 69 73 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20 73 74 72 69 6e 67 2c | .is.the.beginning.of.the.string, |
| 1940 | 20 2d 31 20 69 73 20 74 68 65 20 65 6e 64 2e 22 0a 20 20 28 69 66 20 28 3c 20 6e 20 30 29 0a 20 | .-1.is.the.end."...(if.(<.n.0).. |
| 1960 | 20 20 20 20 20 28 6c 65 74 20 28 28 6c 65 66 74 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 30 20 | .....(let.((left.(substring.s.0. |
| 1980 | 28 2b 20 31 20 6e 20 28 6c 65 6e 67 74 68 20 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 | (+.1.n.(length.s))))............ |
| 19a0 | 20 28 72 69 67 68 74 20 28 73 2d 72 69 67 68 74 20 28 2d 20 2d 31 20 6e 29 20 73 29 29 29 0a 20 | .(right.(s-right.(-.-1.n).s))).. |
| 19c0 | 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 6c 65 66 74 20 6e 65 65 64 6c 65 20 72 69 67 68 74 | .......(concat.left.needle.right |
| 19e0 | 29 29 0a 20 20 20 20 28 6c 65 74 20 28 28 6c 65 66 74 20 28 73 2d 6c 65 66 74 20 6e 20 73 29 29 | )).....(let.((left.(s-left.n.s)) |
| 1a00 | 0a 20 20 20 20 20 20 20 20 20 20 28 72 69 67 68 74 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 6e | ...........(right.(substring.s.n |
| 1a20 | 20 28 6c 65 6e 67 74 68 20 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 6c | .(length.s)))).........(concat.l |
| 1a40 | 65 66 74 20 6e 65 65 64 6c 65 20 72 69 67 68 74 29 29 29 29 0a 0a 0a 28 64 65 66 75 6e 20 73 2d | eft.needle.right))))...(defun.s- |
| 1a60 | 72 65 70 65 61 74 20 28 6e 75 6d 20 73 29 0a 20 20 22 4d 61 6b 65 20 61 20 73 74 72 69 6e 67 20 | repeat.(num.s)..."Make.a.string. |
| 1a80 | 6f 66 20 53 20 72 65 70 65 61 74 65 64 20 4e 55 4d 20 74 69 6d 65 73 2e 22 0a 20 20 28 64 65 63 | of.S.repeated.NUM.times."...(dec |
| 1aa0 | 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 | lare.(pure.t).(side-effect-free. |
| 1ac0 | 74 29 29 0a 20 20 28 6c 65 74 20 28 73 73 29 0a 20 20 20 20 28 77 68 69 6c 65 20 28 3e 20 6e 75 | t))...(let.(ss).....(while.(>.nu |
| 1ae0 | 6d 20 30 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 73 73 20 28 63 6f 6e 73 20 73 20 73 73 29 29 | m.0).......(setq.ss.(cons.s.ss)) |
| 1b00 | 0a 20 20 20 20 20 20 28 73 65 74 71 20 6e 75 6d 20 28 31 2d 20 6e 75 6d 29 29 29 0a 20 20 20 20 | .......(setq.num.(1-.num)))..... |
| 1b20 | 28 61 70 70 6c 79 20 27 63 6f 6e 63 61 74 20 73 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 63 | (apply.'concat.ss)))..(defun.s-c |
| 1b40 | 68 6f 70 2d 73 75 66 66 69 78 20 28 73 75 66 66 69 78 20 73 29 0a 20 20 22 52 65 6d 6f 76 65 20 | hop-suffix.(suffix.s)..."Remove. |
| 1b60 | 53 55 46 46 49 58 20 69 66 20 69 74 20 69 73 20 61 74 20 65 6e 64 20 6f 66 20 53 2e 22 0a 20 20 | SUFFIX.if.it.is.at.end.of.S."... |
| 1b80 | 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 | (declare.(pure.t).(side-effect-f |
| 1ba0 | 72 65 65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 70 6f 73 20 28 2d 20 28 6c 65 6e 67 74 68 20 | ree.t))...(let.((pos.(-.(length. |
| 1bc0 | 73 75 66 66 69 78 29 29 29 29 0a 20 20 20 20 28 69 66 20 28 61 6e 64 20 28 3e 3d 20 28 6c 65 6e | suffix)))).....(if.(and.(>=.(len |
| 1be0 | 67 74 68 20 73 29 20 28 6c 65 6e 67 74 68 20 73 75 66 66 69 78 29 29 0a 20 20 20 20 20 20 20 20 | gth.s).(length.suffix))......... |
| 1c00 | 20 20 20 20 20 28 73 74 72 69 6e 67 3d 20 73 75 66 66 69 78 20 28 73 75 62 73 74 72 69 6e 67 20 | .....(string=.suffix.(substring. |
| 1c20 | 73 20 70 6f 73 29 29 29 0a 20 20 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 30 20 | s.pos))).........(substring.s.0. |
| 1c40 | 70 6f 73 29 0a 20 20 20 20 20 20 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 63 68 6f 70 2d 73 | pos).......s)))..(defun.s-chop-s |
| 1c60 | 75 66 66 69 78 65 73 20 28 73 75 66 66 69 78 65 73 20 73 29 0a 20 20 22 52 65 6d 6f 76 65 20 53 | uffixes.(suffixes.s)..."Remove.S |
| 1c80 | 55 46 46 49 58 45 53 20 6f 6e 65 20 62 79 20 6f 6e 65 20 69 6e 20 6f 72 64 65 72 2c 20 69 66 20 | UFFIXES.one.by.one.in.order,.if. |
| 1ca0 | 74 68 65 79 20 61 72 65 20 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20 53 2e 22 0a 20 20 28 64 65 | they.are.at.the.end.of.S."...(de |
| 1cc0 | 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 | clare.(pure.t).(side-effect-free |
| 1ce0 | 20 74 29 29 0a 20 20 28 77 68 69 6c 65 20 73 75 66 66 69 78 65 73 0a 20 20 20 20 28 73 65 74 71 | .t))...(while.suffixes.....(setq |
| 1d00 | 20 73 20 28 73 2d 63 68 6f 70 2d 73 75 66 66 69 78 20 28 63 61 72 20 73 75 66 66 69 78 65 73 29 | .s.(s-chop-suffix.(car.suffixes) |
| 1d20 | 20 73 29 29 0a 20 20 20 20 28 73 65 74 71 20 73 75 66 66 69 78 65 73 20 28 63 64 72 20 73 75 66 | .s)).....(setq.suffixes.(cdr.suf |
| 1d40 | 66 69 78 65 73 29 29 29 0a 20 20 73 29 0a 0a 28 64 65 66 75 6e 20 73 2d 63 68 6f 70 2d 70 72 65 | fixes)))...s)..(defun.s-chop-pre |
| 1d60 | 66 69 78 20 28 70 72 65 66 69 78 20 73 29 0a 20 20 22 52 65 6d 6f 76 65 20 50 52 45 46 49 58 20 | fix.(prefix.s)..."Remove.PREFIX. |
| 1d80 | 69 66 20 69 74 20 69 73 20 61 74 20 74 68 65 20 73 74 61 72 74 20 6f 66 20 53 2e 22 0a 20 20 28 | if.it.is.at.the.start.of.S."...( |
| 1da0 | 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 | declare.(pure.t).(side-effect-fr |
| 1dc0 | 65 65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 70 6f 73 20 28 6c 65 6e 67 74 68 20 70 72 65 66 | ee.t))...(let.((pos.(length.pref |
| 1de0 | 69 78 29 29 29 0a 20 20 20 20 28 69 66 20 28 61 6e 64 20 28 3e 3d 20 28 6c 65 6e 67 74 68 20 73 | ix))).....(if.(and.(>=.(length.s |
| 1e00 | 29 20 28 6c 65 6e 67 74 68 20 70 72 65 66 69 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | ).(length.prefix)).............. |
| 1e20 | 28 73 74 72 69 6e 67 3d 20 70 72 65 66 69 78 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 30 20 70 | (string=.prefix.(substring.s.0.p |
| 1e40 | 6f 73 29 29 29 0a 20 20 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 70 6f 73 29 0a | os))).........(substring.s.pos). |
| 1e60 | 20 20 20 20 20 20 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 63 68 6f 70 2d 70 72 65 66 69 78 | ......s)))..(defun.s-chop-prefix |
| 1e80 | 65 73 20 28 70 72 65 66 69 78 65 73 20 73 29 0a 20 20 22 52 65 6d 6f 76 65 20 50 52 45 46 49 58 | es.(prefixes.s)..."Remove.PREFIX |
| 1ea0 | 45 53 20 6f 6e 65 20 62 79 20 6f 6e 65 20 69 6e 20 6f 72 64 65 72 2c 20 69 66 20 74 68 65 79 20 | ES.one.by.one.in.order,.if.they. |
| 1ec0 | 61 72 65 20 61 74 20 74 68 65 20 73 74 61 72 74 20 6f 66 20 53 2e 22 0a 20 20 28 64 65 63 6c 61 | are.at.the.start.of.S."...(decla |
| 1ee0 | 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 | re.(pure.t).(side-effect-free.t) |
| 1f00 | 29 0a 20 20 28 77 68 69 6c 65 20 70 72 65 66 69 78 65 73 0a 20 20 20 20 28 73 65 74 71 20 73 20 | )...(while.prefixes.....(setq.s. |
| 1f20 | 28 73 2d 63 68 6f 70 2d 70 72 65 66 69 78 20 28 63 61 72 20 70 72 65 66 69 78 65 73 29 20 73 29 | (s-chop-prefix.(car.prefixes).s) |
| 1f40 | 29 0a 20 20 20 20 28 73 65 74 71 20 70 72 65 66 69 78 65 73 20 28 63 64 72 20 70 72 65 66 69 78 | ).....(setq.prefixes.(cdr.prefix |
| 1f60 | 65 73 29 29 29 0a 20 20 73 29 0a 0a 28 64 65 66 75 6e 20 73 2d 73 68 61 72 65 64 2d 73 74 61 72 | es)))...s)..(defun.s-shared-star |
| 1f80 | 74 20 28 73 31 20 73 32 29 0a 20 20 22 52 65 74 75 72 6e 73 20 74 68 65 20 6c 6f 6e 67 65 73 74 | t.(s1.s2)..."Returns.the.longest |
| 1fa0 | 20 70 72 65 66 69 78 20 53 31 20 61 6e 64 20 53 32 20 68 61 76 65 20 69 6e 20 63 6f 6d 6d 6f 6e | .prefix.S1.and.S2.have.in.common |
| 1fc0 | 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 | ."...(declare.(pure.t).(side-eff |
| 1fe0 | 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 63 6d 70 20 28 63 6f 6d 70 61 | ect-free.t))...(let.((cmp.(compa |
| 2000 | 72 65 2d 73 74 72 69 6e 67 73 20 73 31 20 30 20 28 6c 65 6e 67 74 68 20 73 31 29 20 73 32 20 30 | re-strings.s1.0.(length.s1).s2.0 |
| 2020 | 20 28 6c 65 6e 67 74 68 20 73 32 29 29 29 29 0a 20 20 20 20 28 69 66 20 28 65 71 20 63 6d 70 20 | .(length.s2)))).....(if.(eq.cmp. |
| 2040 | 74 29 20 73 31 20 28 73 75 62 73 74 72 69 6e 67 20 73 31 20 30 20 28 31 2d 20 28 61 62 73 20 63 | t).s1.(substring.s1.0.(1-.(abs.c |
| 2060 | 6d 70 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 73 68 61 72 65 64 2d 65 6e 64 20 28 73 | mp))))))..(defun.s-shared-end.(s |
| 2080 | 31 20 73 32 29 0a 20 20 22 52 65 74 75 72 6e 73 20 74 68 65 20 6c 6f 6e 67 65 73 74 20 73 75 66 | 1.s2)..."Returns.the.longest.suf |
| 20a0 | 66 69 78 20 53 31 20 61 6e 64 20 53 32 20 68 61 76 65 20 69 6e 20 63 6f 6d 6d 6f 6e 2e 22 0a 20 | fix.S1.and.S2.have.in.common.".. |
| 20c0 | 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d | .(declare.(pure.t).(side-effect- |
| 20e0 | 66 72 65 65 20 74 29 29 0a 20 20 28 6c 65 74 2a 20 28 28 6c 31 20 28 6c 65 6e 67 74 68 20 73 31 | free.t))...(let*.((l1.(length.s1 |
| 2100 | 29 29 0a 20 20 20 20 20 20 20 20 20 28 6c 32 20 28 6c 65 6e 67 74 68 20 73 32 29 29 0a 20 20 20 | ))..........(l2.(length.s2)).... |
| 2120 | 20 20 20 20 20 20 28 73 65 61 72 63 68 2d 6c 65 6e 67 74 68 20 28 6d 69 6e 20 6c 31 20 6c 32 29 | ......(search-length.(min.l1.l2) |
| 2140 | 29 0a 20 20 20 20 20 20 20 20 20 28 69 20 30 29 29 0a 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e | )..........(i.0)).....(while.(an |
| 2160 | 64 20 28 3c 20 69 20 73 65 61 72 63 68 2d 6c 65 6e 67 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 | d.(<.i.search-length)........... |
| 2180 | 20 20 20 20 20 20 28 3d 20 28 61 72 65 66 20 73 31 20 28 2d 20 6c 31 20 69 20 31 29 29 20 28 61 | ......(=.(aref.s1.(-.l1.i.1)).(a |
| 21a0 | 72 65 66 20 73 32 20 28 2d 20 6c 32 20 69 20 31 29 29 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 | ref.s2.(-.l2.i.1)))).......(setq |
| 21c0 | 20 69 20 28 31 2b 20 69 29 29 29 0a 20 20 20 20 3b 3b 20 49 66 20 49 20 69 73 20 30 2c 20 74 68 | .i.(1+.i))).....;;.If.I.is.0,.th |
| 21e0 | 65 6e 20 69 74 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65 72 65 27 73 20 6e 6f 20 63 6f 6d 6d | en.it.means.that.there's.no.comm |
| 2200 | 6f 6e 20 73 75 66 66 69 78 20 62 65 74 77 65 65 6e 0a 20 20 20 20 3b 3b 20 53 31 20 61 6e 64 20 | on.suffix.between.....;;.S1.and. |
| 2220 | 53 32 2e 0a 20 20 20 20 3b 3b 0a 20 20 20 20 3b 3b 20 48 6f 77 65 76 65 72 2c 20 73 69 6e 63 65 | S2......;;.....;;.However,.since |
| 2240 | 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 28 2d 20 30 29 29 20 77 69 6c 6c 20 72 65 74 75 72 6e | .(substring.s.(-.0)).will.return |
| 2260 | 20 74 68 65 20 77 68 6f 6c 65 0a 20 20 20 20 3b 3b 20 73 74 72 69 6e 67 2c 20 60 73 2d 73 68 61 | .the.whole.....;;.string,.`s-sha |
| 2280 | 72 65 64 2d 65 6e 64 27 20 73 68 6f 75 6c 64 20 73 69 6d 70 6c 79 20 72 65 74 75 72 6e 20 74 68 | red-end'.should.simply.return.th |
| 22a0 | 65 20 65 6d 70 74 79 20 73 74 72 69 6e 67 0a 20 20 20 20 3b 3b 20 77 68 65 6e 20 49 20 69 73 20 | e.empty.string.....;;.when.I.is. |
| 22c0 | 30 2e 0a 20 20 20 20 28 69 66 20 28 7a 65 72 6f 70 20 69 29 0a 20 20 20 20 20 20 20 20 22 22 0a | 0......(if.(zerop.i)........."". |
| 22e0 | 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 73 31 20 28 2d 20 69 29 29 29 29 29 0a 0a 28 | ......(substring.s1.(-.i)))))..( |
| 2300 | 64 65 66 75 6e 20 73 2d 63 68 6f 6d 70 20 28 73 29 0a 20 20 22 52 65 6d 6f 76 65 20 6f 6e 65 20 | defun.s-chomp.(s)..."Remove.one. |
| 2320 | 74 72 61 69 6c 69 6e 67 20 60 5c 5c 6e 60 2c 20 60 5c 5c 72 60 20 6f 72 20 60 5c 5c 72 5c 5c 6e | trailing.`\\n`,.`\\r`.or.`\\r\\n |
| 2340 | 60 20 66 72 6f 6d 20 53 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 | `.from.S."...(declare.(pure.t).( |
| 2360 | 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 2d 63 68 6f 70 2d 73 | side-effect-free.t))...(s-chop-s |
| 2380 | 75 66 66 69 78 65 73 20 27 28 22 5c 6e 22 20 22 5c 72 22 29 20 73 29 29 0a 0a 28 64 65 66 75 6e | uffixes.'("\n"."\r").s))..(defun |
| 23a0 | 20 73 2d 74 72 75 6e 63 61 74 65 20 28 6c 65 6e 20 73 20 26 6f 70 74 69 6f 6e 61 6c 20 65 6c 6c | .s-truncate.(len.s.&optional.ell |
| 23c0 | 69 70 73 69 73 29 0a 20 20 22 49 66 20 53 20 69 73 20 6c 6f 6e 67 65 72 20 74 68 61 6e 20 4c 45 | ipsis)..."If.S.is.longer.than.LE |
| 23e0 | 4e 2c 20 63 75 74 20 69 74 20 64 6f 77 6e 20 61 6e 64 20 61 64 64 20 45 4c 4c 49 50 53 49 53 20 | N,.cut.it.down.and.add.ELLIPSIS. |
| 2400 | 74 6f 20 74 68 65 20 65 6e 64 2e 0a 0a 54 68 65 20 72 65 73 75 6c 74 69 6e 67 20 73 74 72 69 6e | to.the.end...The.resulting.strin |
| 2420 | 67 2c 20 69 6e 63 6c 75 64 69 6e 67 20 65 6c 6c 69 70 73 69 73 2c 20 77 69 6c 6c 20 62 65 20 4c | g,.including.ellipsis,.will.be.L |
| 2440 | 45 4e 20 63 68 61 72 61 63 74 65 72 73 0a 6c 6f 6e 67 2e 0a 0a 57 68 65 6e 20 6e 6f 74 20 73 70 | EN.characters.long...When.not.sp |
| 2460 | 65 63 69 66 69 65 64 2c 20 45 4c 4c 49 50 53 49 53 20 64 65 66 61 75 6c 74 73 20 74 6f 20 e2 80 | ecified,.ELLIPSIS.defaults.to... |
| 2480 | 98 2e 2e 2e e2 80 99 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 | ........"...(declare.(pure.t).(s |
| 24a0 | 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 75 6e 6c 65 73 73 20 65 6c | ide-effect-free.t))...(unless.el |
| 24c0 | 6c 69 70 73 69 73 0a 20 20 20 20 28 73 65 74 71 20 65 6c 6c 69 70 73 69 73 20 22 2e 2e 2e 22 29 | lipsis.....(setq.ellipsis."...") |
| 24e0 | 29 0a 20 20 28 69 66 20 28 3e 20 28 6c 65 6e 67 74 68 20 73 29 20 6c 65 6e 29 0a 20 20 20 20 20 | )...(if.(>.(length.s).len)...... |
| 2500 | 20 28 66 6f 72 6d 61 74 20 22 25 73 25 73 22 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 30 20 28 | .(format."%s%s".(substring.s.0.( |
| 2520 | 2d 20 6c 65 6e 20 28 6c 65 6e 67 74 68 20 65 6c 6c 69 70 73 69 73 29 29 29 20 65 6c 6c 69 70 73 | -.len.(length.ellipsis))).ellips |
| 2540 | 69 73 29 0a 20 20 20 20 73 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 77 6f 72 64 2d 77 72 61 70 20 | is).....s))..(defun.s-word-wrap. |
| 2560 | 28 6c 65 6e 20 73 29 0a 20 20 22 49 66 20 53 20 69 73 20 6c 6f 6e 67 65 72 20 74 68 61 6e 20 4c | (len.s)..."If.S.is.longer.than.L |
| 2580 | 45 4e 2c 20 77 72 61 70 20 74 68 65 20 77 6f 72 64 73 20 77 69 74 68 20 6e 65 77 6c 69 6e 65 73 | EN,.wrap.the.words.with.newlines |
| 25a0 | 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 | ."...(declare.(side-effect-free. |
| 25c0 | 74 29 29 0a 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 28 77 69 74 68 | t))...(save-match-data.....(with |
| 25e0 | 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 73 29 0a 20 20 | -temp-buffer.......(insert.s)... |
| 2600 | 20 20 20 20 28 6c 65 74 20 28 28 66 69 6c 6c 2d 63 6f 6c 75 6d 6e 20 6c 65 6e 29 29 0a 20 20 20 | ....(let.((fill-column.len)).... |
| 2620 | 20 20 20 20 20 28 66 69 6c 6c 2d 72 65 67 69 6f 6e 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 | .....(fill-region.(point-min).(p |
| 2640 | 6f 69 6e 74 2d 6d 61 78 29 29 29 0a 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 | oint-max))).......(buffer-substr |
| 2660 | 69 6e 67 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 29 0a | ing.(point-min).(point-max))))). |
| 2680 | 0a 28 64 65 66 75 6e 20 73 2d 63 65 6e 74 65 72 20 28 6c 65 6e 20 73 29 0a 20 20 22 49 66 20 53 | .(defun.s-center.(len.s)..."If.S |
| 26a0 | 20 69 73 20 73 68 6f 72 74 65 72 20 74 68 61 6e 20 4c 45 4e 2c 20 70 61 64 20 69 74 20 77 69 74 | .is.shorter.than.LEN,.pad.it.wit |
| 26c0 | 68 20 73 70 61 63 65 73 20 73 6f 20 69 74 20 69 73 20 63 65 6e 74 65 72 65 64 2e 22 0a 20 20 28 | h.spaces.so.it.is.centered."...( |
| 26e0 | 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 | declare.(pure.t).(side-effect-fr |
| 2700 | 65 65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 65 78 74 72 61 20 28 6d 61 78 20 30 20 28 2d 20 | ee.t))...(let.((extra.(max.0.(-. |
| 2720 | 6c 65 6e 20 28 6c 65 6e 67 74 68 20 73 29 29 29 29 29 0a 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 | len.(length.s))))).....(concat.. |
| 2740 | 20 20 20 20 28 6d 61 6b 65 2d 73 74 72 69 6e 67 20 28 63 65 69 6c 69 6e 67 20 65 78 74 72 61 20 | ....(make-string.(ceiling.extra. |
| 2760 | 32 29 20 3f 5c 73 29 0a 20 20 20 20 20 73 0a 20 20 20 20 20 28 6d 61 6b 65 2d 73 74 72 69 6e 67 | 2).?\s)......s......(make-string |
| 2780 | 20 28 66 6c 6f 6f 72 20 65 78 74 72 61 20 32 29 20 3f 5c 73 29 29 29 29 0a 0a 28 64 65 66 75 6e | .(floor.extra.2).?\s))))..(defun |
| 27a0 | 20 73 2d 70 61 64 2d 6c 65 66 74 20 28 6c 65 6e 20 70 61 64 64 69 6e 67 20 73 29 0a 20 20 22 49 | .s-pad-left.(len.padding.s)..."I |
| 27c0 | 66 20 53 20 69 73 20 73 68 6f 72 74 65 72 20 74 68 61 6e 20 4c 45 4e 2c 20 70 61 64 20 69 74 20 | f.S.is.shorter.than.LEN,.pad.it. |
| 27e0 | 77 69 74 68 20 50 41 44 44 49 4e 47 20 6f 6e 20 74 68 65 20 6c 65 66 74 2e 22 0a 20 20 28 64 65 | with.PADDING.on.the.left."...(de |
| 2800 | 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 | clare.(pure.t).(side-effect-free |
| 2820 | 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 65 78 74 72 61 20 28 6d 61 78 20 30 20 28 2d 20 6c 65 | .t))...(let.((extra.(max.0.(-.le |
| 2840 | 6e 20 28 6c 65 6e 67 74 68 20 73 29 29 29 29 29 0a 20 20 20 20 28 63 6f 6e 63 61 74 20 28 6d 61 | n.(length.s))))).....(concat.(ma |
| 2860 | 6b 65 2d 73 74 72 69 6e 67 20 65 78 74 72 61 20 28 73 74 72 69 6e 67 2d 74 6f 2d 63 68 61 72 20 | ke-string.extra.(string-to-char. |
| 2880 | 70 61 64 64 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 29 29 29 0a 0a 28 64 65 66 | padding)).............s)))..(def |
| 28a0 | 75 6e 20 73 2d 70 61 64 2d 72 69 67 68 74 20 28 6c 65 6e 20 70 61 64 64 69 6e 67 20 73 29 0a 20 | un.s-pad-right.(len.padding.s).. |
| 28c0 | 20 22 49 66 20 53 20 69 73 20 73 68 6f 72 74 65 72 20 74 68 61 6e 20 4c 45 4e 2c 20 70 61 64 20 | ."If.S.is.shorter.than.LEN,.pad. |
| 28e0 | 69 74 20 77 69 74 68 20 50 41 44 44 49 4e 47 20 6f 6e 20 74 68 65 20 72 69 67 68 74 2e 22 0a 20 | it.with.PADDING.on.the.right.".. |
| 2900 | 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d | .(declare.(pure.t).(side-effect- |
| 2920 | 66 72 65 65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 65 78 74 72 61 20 28 6d 61 78 20 30 20 28 | free.t))...(let.((extra.(max.0.( |
| 2940 | 2d 20 6c 65 6e 20 28 6c 65 6e 67 74 68 20 73 29 29 29 29 29 0a 20 20 20 20 28 63 6f 6e 63 61 74 | -.len.(length.s))))).....(concat |
| 2960 | 20 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 6b 65 2d 73 74 72 69 6e 67 20 65 78 74 72 | .s.............(make-string.extr |
| 2980 | 61 20 28 73 74 72 69 6e 67 2d 74 6f 2d 63 68 61 72 20 70 61 64 64 69 6e 67 29 29 29 29 29 0a 0a | a.(string-to-char.padding))))).. |
| 29a0 | 28 64 65 66 75 6e 20 73 2d 6c 65 66 74 20 28 6c 65 6e 20 73 29 0a 20 20 22 52 65 74 75 72 6e 73 | (defun.s-left.(len.s)..."Returns |
| 29c0 | 20 75 70 20 74 6f 20 74 68 65 20 4c 45 4e 20 66 69 72 73 74 20 63 68 61 72 73 20 6f 66 20 53 2e | .up.to.the.LEN.first.chars.of.S. |
| 29e0 | 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 | "...(declare.(pure.t).(side-effe |
| 2a00 | 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 69 66 20 28 3e 20 28 6c 65 6e 67 74 68 20 73 29 20 | ct-free.t))...(if.(>.(length.s). |
| 2a20 | 6c 65 6e 29 0a 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 30 20 6c 65 6e 29 0a 20 | len).......(substring.s.0.len).. |
| 2a40 | 20 20 20 73 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 72 69 67 68 74 20 28 6c 65 6e 20 73 29 0a 20 | ...s))..(defun.s-right.(len.s).. |
| 2a60 | 20 22 52 65 74 75 72 6e 73 20 75 70 20 74 6f 20 74 68 65 20 4c 45 4e 20 6c 61 73 74 20 63 68 61 | ."Returns.up.to.the.LEN.last.cha |
| 2a80 | 72 73 20 6f 66 20 53 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 | rs.of.S."...(declare.(pure.t).(s |
| 2aa0 | 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 6c 20 28 | ide-effect-free.t))...(let.((l.( |
| 2ac0 | 6c 65 6e 67 74 68 20 73 29 29 29 0a 20 20 20 20 28 69 66 20 28 3e 20 6c 20 6c 65 6e 29 0a 20 20 | length.s))).....(if.(>.l.len)... |
| 2ae0 | 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 28 2d 20 6c 20 6c 65 6e 29 20 6c 29 0a | ......(substring.s.(-.l.len).l). |
| 2b00 | 20 20 20 20 20 20 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 63 68 6f 70 2d 6c 65 66 74 20 28 | ......s)))..(defun.s-chop-left.( |
| 2b20 | 6c 65 6e 20 73 29 0a 20 20 22 52 65 6d 6f 76 65 20 74 68 65 20 66 69 72 73 74 20 4c 45 4e 20 63 | len.s)..."Remove.the.first.LEN.c |
| 2b40 | 68 61 72 73 20 66 72 6f 6d 20 53 2e 22 0a 20 20 28 6c 65 74 20 28 28 6c 20 28 6c 65 6e 67 74 68 | hars.from.S."...(let.((l.(length |
| 2b60 | 20 73 29 29 29 0a 20 20 20 20 28 69 66 20 28 3e 20 6c 20 6c 65 6e 29 0a 20 20 20 20 20 20 20 20 | .s))).....(if.(>.l.len)......... |
| 2b80 | 28 73 75 62 73 74 72 69 6e 67 20 73 20 6c 65 6e 20 6c 29 0a 20 20 20 20 20 20 22 22 29 29 29 0a | (substring.s.len.l).......""))). |
| 2ba0 | 0a 28 64 65 66 75 6e 20 73 2d 63 68 6f 70 2d 72 69 67 68 74 20 28 6c 65 6e 20 73 29 0a 20 20 22 | .(defun.s-chop-right.(len.s)..." |
| 2bc0 | 52 65 6d 6f 76 65 20 74 68 65 20 6c 61 73 74 20 4c 45 4e 20 63 68 61 72 73 20 66 72 6f 6d 20 53 | Remove.the.last.LEN.chars.from.S |
| 2be0 | 2e 22 0a 20 20 28 6c 65 74 20 28 28 6c 20 28 6c 65 6e 67 74 68 20 73 29 29 29 0a 20 20 20 20 28 | ."...(let.((l.(length.s))).....( |
| 2c00 | 69 66 20 28 3e 20 6c 20 6c 65 6e 29 0a 20 20 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 | if.(>.l.len).........(substring. |
| 2c20 | 73 20 30 20 28 2d 20 6c 20 6c 65 6e 29 29 0a 20 20 20 20 20 20 22 22 29 29 29 0a 0a 28 64 65 66 | s.0.(-.l.len))......."")))..(def |
| 2c40 | 75 6e 20 73 2d 65 6e 64 73 2d 77 69 74 68 3f 20 28 73 75 66 66 69 78 20 73 20 26 6f 70 74 69 6f | un.s-ends-with?.(suffix.s.&optio |
| 2c60 | 6e 61 6c 20 69 67 6e 6f 72 65 2d 63 61 73 65 29 0a 20 20 22 44 6f 65 73 20 53 20 65 6e 64 20 77 | nal.ignore-case)..."Does.S.end.w |
| 2c80 | 69 74 68 20 53 55 46 46 49 58 3f 0a 0a 49 66 20 49 47 4e 4f 52 45 2d 43 41 53 45 20 69 73 20 6e | ith.SUFFIX?..If.IGNORE-CASE.is.n |
| 2ca0 | 6f 6e 2d 6e 69 6c 2c 20 74 68 65 20 63 6f 6d 70 61 72 69 73 6f 6e 20 69 73 20 64 6f 6e 65 20 77 | on-nil,.the.comparison.is.done.w |
| 2cc0 | 69 74 68 6f 75 74 20 70 61 79 69 6e 67 0a 61 74 74 65 6e 74 69 6f 6e 20 74 6f 20 63 61 73 65 20 | ithout.paying.attention.to.case. |
| 2ce0 | 64 69 66 66 65 72 65 6e 63 65 73 2e 0a 0a 41 6c 69 61 73 3a 20 60 73 2d 73 75 66 66 69 78 3f 27 | differences...Alias:.`s-suffix?' |
| 2d00 | 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 | "...(declare.(pure.t).(side-effe |
| 2d20 | 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 73 74 61 72 74 2d 70 6f 73 20 28 | ct-free.t))...(let.((start-pos.( |
| 2d40 | 2d 20 28 6c 65 6e 67 74 68 20 73 29 20 28 6c 65 6e 67 74 68 20 73 75 66 66 69 78 29 29 29 29 0a | -.(length.s).(length.suffix)))). |
| 2d60 | 20 20 20 20 28 61 6e 64 20 28 3e 3d 20 73 74 61 72 74 2d 70 6f 73 20 30 29 0a 20 20 20 20 20 20 | ....(and.(>=.start-pos.0)....... |
| 2d80 | 20 20 20 28 65 71 20 74 20 28 63 6f 6d 70 61 72 65 2d 73 74 72 69 6e 67 73 20 73 75 66 66 69 78 | ...(eq.t.(compare-strings.suffix |
| 2da0 | 20 6e 69 6c 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .nil.nil........................ |
| 2dc0 | 20 20 20 20 20 20 20 20 20 73 20 73 74 61 72 74 2d 70 6f 73 20 6e 69 6c 20 69 67 6e 6f 72 65 2d | .........s.start-pos.nil.ignore- |
| 2de0 | 63 61 73 65 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 73 74 61 72 74 73 2d 77 69 74 68 3f | case)))))..(defun.s-starts-with? |
| 2e00 | 20 28 70 72 65 66 69 78 20 73 20 26 6f 70 74 69 6f 6e 61 6c 20 69 67 6e 6f 72 65 2d 63 61 73 65 | .(prefix.s.&optional.ignore-case |
| 2e20 | 29 0a 20 20 22 44 6f 65 73 20 53 20 73 74 61 72 74 20 77 69 74 68 20 50 52 45 46 49 58 3f 0a 0a | )..."Does.S.start.with.PREFIX?.. |
| 2e40 | 49 66 20 49 47 4e 4f 52 45 2d 43 41 53 45 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 74 68 65 20 63 | If.IGNORE-CASE.is.non-nil,.the.c |
| 2e60 | 6f 6d 70 61 72 69 73 6f 6e 20 69 73 20 64 6f 6e 65 20 77 69 74 68 6f 75 74 20 70 61 79 69 6e 67 | omparison.is.done.without.paying |
| 2e80 | 0a 61 74 74 65 6e 74 69 6f 6e 20 74 6f 20 63 61 73 65 20 64 69 66 66 65 72 65 6e 63 65 73 2e 0a | .attention.to.case.differences.. |
| 2ea0 | 0a 41 6c 69 61 73 3a 20 60 73 2d 70 72 65 66 69 78 3f 27 2e 20 54 68 69 73 20 69 73 20 61 20 73 | .Alias:.`s-prefix?'..This.is.a.s |
| 2ec0 | 69 6d 70 6c 65 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68 65 20 62 75 69 6c 74 2d 69 | imple.wrapper.around.the.built-i |
| 2ee0 | 6e 0a 60 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d 70 27 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 | n.`string-prefix-p'."...(declare |
| 2f00 | 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a | .(pure.t).(side-effect-free.t)). |
| 2f20 | 20 20 28 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d 70 20 70 72 65 66 69 78 20 73 20 69 67 6e 6f | ..(string-prefix-p.prefix.s.igno |
| 2f40 | 72 65 2d 63 61 73 65 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 2d 74 72 75 74 68 79 3f 20 28 76 61 | re-case))..(defun.s--truthy?.(va |
| 2f60 | 6c 29 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 | l)...(declare.(pure.t).(side-eff |
| 2f80 | 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6e 6f 74 20 28 6e 75 6c 6c 20 76 61 6c 29 29 29 | ect-free.t))...(not.(null.val))) |
| 2fa0 | 0a 0a 28 64 65 66 75 6e 20 73 2d 63 6f 6e 74 61 69 6e 73 3f 20 28 6e 65 65 64 6c 65 20 73 20 26 | ..(defun.s-contains?.(needle.s.& |
| 2fc0 | 6f 70 74 69 6f 6e 61 6c 20 69 67 6e 6f 72 65 2d 63 61 73 65 29 0a 20 20 22 44 6f 65 73 20 53 20 | optional.ignore-case)..."Does.S. |
| 2fe0 | 63 6f 6e 74 61 69 6e 20 4e 45 45 44 4c 45 3f 0a 0a 49 66 20 49 47 4e 4f 52 45 2d 43 41 53 45 20 | contain.NEEDLE?..If.IGNORE-CASE. |
| 3000 | 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 74 68 65 20 63 6f 6d 70 61 72 69 73 6f 6e 20 69 73 20 64 6f | is.non-nil,.the.comparison.is.do |
| 3020 | 6e 65 20 77 69 74 68 6f 75 74 20 70 61 79 69 6e 67 0a 61 74 74 65 6e 74 69 6f 6e 20 74 6f 20 63 | ne.without.paying.attention.to.c |
| 3040 | 61 73 65 20 64 69 66 66 65 72 65 6e 63 65 73 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 | ase.differences."...(declare.(pu |
| 3060 | 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c | re.t).(side-effect-free.t))...(l |
| 3080 | 65 74 20 28 28 63 61 73 65 2d 66 6f 6c 64 2d 73 65 61 72 63 68 20 69 67 6e 6f 72 65 2d 63 61 73 | et.((case-fold-search.ignore-cas |
| 30a0 | 65 29 29 0a 20 20 20 20 28 73 2d 2d 74 72 75 74 68 79 3f 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 | e)).....(s--truthy?.(string-matc |
| 30c0 | 68 2d 70 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 6e 65 65 64 6c 65 29 20 73 29 29 29 29 0a | h-p.(regexp-quote.needle).s)))). |
| 30e0 | 0a 28 64 65 66 75 6e 20 73 2d 65 71 75 61 6c 73 3f 20 28 73 31 20 73 32 29 0a 20 20 22 49 73 20 | .(defun.s-equals?.(s1.s2)..."Is. |
| 3100 | 53 31 20 65 71 75 61 6c 20 74 6f 20 53 32 3f 0a 0a 54 68 69 73 20 69 73 20 61 20 73 69 6d 70 6c | S1.equal.to.S2?..This.is.a.simpl |
| 3120 | 65 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 60 73 | e.wrapper.around.the.built-in.`s |
| 3140 | 74 72 69 6e 67 2d 65 71 75 61 6c 27 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 | tring-equal'."...(declare.(pure. |
| 3160 | 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 74 72 69 | t).(side-effect-free.t))...(stri |
| 3180 | 6e 67 2d 65 71 75 61 6c 20 73 31 20 73 32 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 6c 65 73 73 3f | ng-equal.s1.s2))..(defun.s-less? |
| 31a0 | 20 28 73 31 20 73 32 29 0a 20 20 22 49 73 20 53 31 20 6c 65 73 73 20 74 68 61 6e 20 53 32 3f 0a | .(s1.s2)..."Is.S1.less.than.S2?. |
| 31c0 | 0a 54 68 69 73 20 69 73 20 61 20 73 69 6d 70 6c 65 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 | .This.is.a.simple.wrapper.around |
| 31e0 | 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 60 73 74 72 69 6e 67 2d 6c 65 73 73 70 27 2e 22 0a 20 | .the.built-in.`string-lessp'.".. |
| 3200 | 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d | .(declare.(pure.t).(side-effect- |
| 3220 | 66 72 65 65 20 74 29 29 0a 20 20 28 73 74 72 69 6e 67 2d 6c 65 73 73 70 20 73 31 20 73 32 29 29 | free.t))...(string-lessp.s1.s2)) |
| 3240 | 0a 0a 28 64 65 66 75 6e 20 73 2d 6d 61 74 63 68 65 73 3f 20 28 72 65 67 65 78 70 20 73 20 26 6f | ..(defun.s-matches?.(regexp.s.&o |
| 3260 | 70 74 69 6f 6e 61 6c 20 73 74 61 72 74 29 0a 20 20 22 44 6f 65 73 20 52 45 47 45 58 50 20 6d 61 | ptional.start)..."Does.REGEXP.ma |
| 3280 | 74 63 68 20 53 3f 0a 49 66 20 53 54 41 52 54 20 69 73 20 6e 6f 6e 2d 6e 69 6c 20 74 68 65 20 73 | tch.S?.If.START.is.non-nil.the.s |
| 32a0 | 65 61 72 63 68 20 73 74 61 72 74 73 20 61 74 20 74 68 61 74 20 69 6e 64 65 78 2e 0a 0a 54 68 69 | earch.starts.at.that.index...Thi |
| 32c0 | 73 20 69 73 20 61 20 73 69 6d 70 6c 65 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68 65 | s.is.a.simple.wrapper.around.the |
| 32e0 | 20 62 75 69 6c 74 2d 69 6e 20 60 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 27 2e 22 0a 20 20 28 | .built-in.`string-match-p'."...( |
| 3300 | 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 | declare.(side-effect-free.t))... |
| 3320 | 28 73 2d 2d 74 72 75 74 68 79 3f 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 72 65 67 65 | (s--truthy?.(string-match-p.rege |
| 3340 | 78 70 20 73 20 73 74 61 72 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 62 6c 61 6e 6b 3f 20 28 | xp.s.start)))..(defun.s-blank?.( |
| 3360 | 73 29 0a 20 20 22 49 73 20 53 20 6e 69 6c 20 6f 72 20 74 68 65 20 65 6d 70 74 79 20 73 74 72 69 | s)..."Is.S.nil.or.the.empty.stri |
| 3380 | 6e 67 3f 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 | ng?"...(declare.(pure.t).(side-e |
| 33a0 | 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6f 72 20 28 6e 75 6c 6c 20 73 29 20 28 73 | ffect-free.t))...(or.(null.s).(s |
| 33c0 | 74 72 69 6e 67 3d 20 22 22 20 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 62 6c 61 6e 6b 2d 73 | tring=."".s)))..(defun.s-blank-s |
| 33e0 | 74 72 3f 20 28 73 29 0a 20 20 22 49 73 20 53 20 6e 69 6c 20 6f 72 20 74 68 65 20 65 6d 70 74 79 | tr?.(s)..."Is.S.nil.or.the.empty |
| 3400 | 20 73 74 72 69 6e 67 20 6f 72 20 73 74 72 69 6e 67 20 6f 6e 6c 79 20 63 6f 6e 74 61 69 6e 73 20 | .string.or.string.only.contains. |
| 3420 | 77 68 69 74 65 73 70 61 63 65 3f 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 | whitespace?"...(declare.(pure.t) |
| 3440 | 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6f 72 20 28 73 2d | .(side-effect-free.t))...(or.(s- |
| 3460 | 62 6c 61 6e 6b 3f 20 73 29 20 28 73 2d 62 6c 61 6e 6b 3f 20 28 73 2d 74 72 69 6d 20 73 29 29 29 | blank?.s).(s-blank?.(s-trim.s))) |
| 3480 | 29 0a 0a 28 64 65 66 75 6e 20 73 2d 70 72 65 73 65 6e 74 3f 20 28 73 29 0a 20 20 22 49 73 20 53 | )..(defun.s-present?.(s)..."Is.S |
| 34a0 | 20 61 6e 79 74 68 69 6e 67 20 62 75 74 20 6e 69 6c 20 6f 72 20 74 68 65 20 65 6d 70 74 79 20 73 | .anything.but.nil.or.the.empty.s |
| 34c0 | 74 72 69 6e 67 3f 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 | tring?"...(declare.(pure.t).(sid |
| 34e0 | 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6e 6f 74 20 28 73 2d 62 6c 61 6e | e-effect-free.t))...(not.(s-blan |
| 3500 | 6b 3f 20 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 70 72 65 73 65 6e 63 65 20 28 73 29 0a 20 | k?.s)))..(defun.s-presence.(s).. |
| 3520 | 20 22 52 65 74 75 72 6e 20 53 20 69 66 20 69 74 27 73 20 60 73 2d 70 72 65 73 65 6e 74 3f 27 2c | ."Return.S.if.it's.`s-present?', |
| 3540 | 20 6f 74 68 65 72 77 69 73 65 20 72 65 74 75 72 6e 20 6e 69 6c 2e 22 0a 20 20 28 64 65 63 6c 61 | .otherwise.return.nil."...(decla |
| 3560 | 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 | re.(pure.t).(side-effect-free.t) |
| 3580 | 29 0a 20 20 28 61 6e 64 20 28 73 2d 70 72 65 73 65 6e 74 3f 20 73 29 20 73 29 29 0a 0a 28 64 65 | )...(and.(s-present?.s).s))..(de |
| 35a0 | 66 75 6e 20 73 2d 6c 6f 77 65 72 63 61 73 65 3f 20 28 73 29 0a 20 20 22 41 72 65 20 61 6c 6c 20 | fun.s-lowercase?.(s)..."Are.all. |
| 35c0 | 74 68 65 20 6c 65 74 74 65 72 73 20 69 6e 20 53 20 69 6e 20 6c 6f 77 65 72 20 63 61 73 65 3f 22 | the.letters.in.S.in.lower.case?" |
| 35e0 | 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 | ...(declare.(side-effect-free.t) |
| 3600 | 29 0a 20 20 28 6c 65 74 20 28 28 63 61 73 65 2d 66 6f 6c 64 2d 73 65 61 72 63 68 20 6e 69 6c 29 | )...(let.((case-fold-search.nil) |
| 3620 | 29 0a 20 20 20 20 28 6e 6f 74 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 22 5b 5b 3a 75 | ).....(not.(string-match-p."[[:u |
| 3640 | 70 70 65 72 3a 5d 5d 22 20 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 75 70 70 65 72 63 61 | pper:]]".s))))..(defun.s-upperca |
| 3660 | 73 65 3f 20 28 73 29 0a 20 20 22 41 72 65 20 61 6c 6c 20 74 68 65 20 6c 65 74 74 65 72 73 20 69 | se?.(s)..."Are.all.the.letters.i |
| 3680 | 6e 20 53 20 69 6e 20 75 70 70 65 72 20 63 61 73 65 3f 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 | n.S.in.upper.case?"...(declare.( |
| 36a0 | 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 63 61 | side-effect-free.t))...(let.((ca |
| 36c0 | 73 65 2d 66 6f 6c 64 2d 73 65 61 72 63 68 20 6e 69 6c 29 29 0a 20 20 20 20 28 6e 6f 74 20 28 73 | se-fold-search.nil)).....(not.(s |
| 36e0 | 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 22 5b 5b 3a 6c 6f 77 65 72 3a 5d 5d 22 20 73 29 29 29 | tring-match-p."[[:lower:]]".s))) |
| 3700 | 29 0a 0a 28 64 65 66 75 6e 20 73 2d 6d 69 78 65 64 63 61 73 65 3f 20 28 73 29 0a 20 20 22 41 72 | )..(defun.s-mixedcase?.(s)..."Ar |
| 3720 | 65 20 74 68 65 72 65 20 62 6f 74 68 20 6c 6f 77 65 72 20 63 61 73 65 20 61 6e 64 20 75 70 70 65 | e.there.both.lower.case.and.uppe |
| 3740 | 72 20 63 61 73 65 20 6c 65 74 74 65 72 73 20 69 6e 20 53 3f 22 0a 20 20 28 6c 65 74 20 28 28 63 | r.case.letters.in.S?"...(let.((c |
| 3760 | 61 73 65 2d 66 6f 6c 64 2d 73 65 61 72 63 68 20 6e 69 6c 29 29 0a 20 20 20 20 28 73 2d 2d 74 72 | ase-fold-search.nil)).....(s--tr |
| 3780 | 75 74 68 79 3f 0a 20 20 20 20 20 28 61 6e 64 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 | uthy?......(and.(string-match-p. |
| 37a0 | 22 5b 5b 3a 6c 6f 77 65 72 3a 5d 5d 22 20 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 | "[[:lower:]]".s)...........(stri |
| 37c0 | 6e 67 2d 6d 61 74 63 68 2d 70 20 22 5b 5b 3a 75 70 70 65 72 3a 5d 5d 22 20 73 29 29 29 29 29 0a | ng-match-p."[[:upper:]]".s))))). |
| 37e0 | 0a 28 64 65 66 75 6e 20 73 2d 63 61 70 69 74 61 6c 69 7a 65 64 3f 20 28 73 29 0a 20 20 22 49 6e | .(defun.s-capitalized?.(s)..."In |
| 3800 | 20 53 2c 20 69 73 20 74 68 65 20 66 69 72 73 74 20 6c 65 74 74 65 72 20 75 70 70 65 72 20 63 61 | .S,.is.the.first.letter.upper.ca |
| 3820 | 73 65 2c 20 61 6e 64 20 61 6c 6c 20 6f 74 68 65 72 20 6c 65 74 74 65 72 73 20 6c 6f 77 65 72 20 | se,.and.all.other.letters.lower. |
| 3840 | 63 61 73 65 3f 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 | case?"...(declare.(side-effect-f |
| 3860 | 72 65 65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 63 61 73 65 2d 66 6f 6c 64 2d 73 65 61 72 63 | ree.t))...(let.((case-fold-searc |
| 3880 | 68 20 6e 69 6c 29 29 0a 20 20 20 20 28 73 2d 2d 74 72 75 74 68 79 3f 0a 20 20 20 20 20 28 73 74 | h.nil)).....(s--truthy?......(st |
| 38a0 | 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 22 5e 5b 5b 3a 75 70 70 65 72 3a 5d 5d 5b 5e 5b 3a 75 70 | ring-match-p."^[[:upper:]][^[:up |
| 38c0 | 70 65 72 3a 5d 5d 2a 24 22 20 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 6e 75 6d 65 72 69 | per:]]*$".s))))..(defun.s-numeri |
| 38e0 | 63 3f 20 28 73 29 0a 20 20 22 49 73 20 53 20 61 20 6e 75 6d 62 65 72 3f 22 0a 20 20 28 64 65 63 | c?.(s)..."Is.S.a.number?"...(dec |
| 3900 | 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 | lare.(pure.t).(side-effect-free. |
| 3920 | 74 29 29 0a 20 20 28 73 2d 2d 74 72 75 74 68 79 3f 0a 20 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 | t))...(s--truthy?....(string-mat |
| 3940 | 63 68 2d 70 20 22 5e 5b 30 2d 39 5d 2b 24 22 20 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 72 | ch-p."^[0-9]+$".s)))..(defun.s-r |
| 3960 | 65 70 6c 61 63 65 20 28 6f 6c 64 20 6e 65 77 20 73 29 0a 20 20 22 52 65 70 6c 61 63 65 73 20 4f | eplace.(old.new.s)..."Replaces.O |
| 3980 | 4c 44 20 77 69 74 68 20 4e 45 57 20 69 6e 20 53 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 | LD.with.NEW.in.S."...(declare.(p |
| 39a0 | 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 | ure.t).(side-effect-free.t))...( |
| 39c0 | 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 20 28 72 65 67 65 78 70 | replace-regexp-in-string.(regexp |
| 39e0 | 2d 71 75 6f 74 65 20 6f 6c 64 29 20 6e 65 77 20 73 20 74 20 74 29 29 0a 0a 28 64 65 66 61 6c 69 | -quote.old).new.s.t.t))..(defali |
| 3a00 | 61 73 20 27 73 2d 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 20 27 72 65 70 6c 61 63 65 2d 72 65 | as.'s-replace-regexp.'replace-re |
| 3a20 | 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 29 0a 0a 28 64 65 66 75 6e 20 73 2d 2d 61 67 65 74 20 | gexp-in-string)..(defun.s--aget. |
| 3a40 | 28 61 6c 69 73 74 20 6b 65 79 29 0a 20 20 22 47 65 74 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 | (alist.key)..."Get.the.value.of. |
| 3a60 | 4b 45 59 20 69 6e 20 41 4c 49 53 54 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 | KEY.in.ALIST."...(declare.(pure. |
| 3a80 | 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 63 64 72 20 | t).(side-effect-free.t))...(cdr. |
| 3aa0 | 28 61 73 73 6f 63 2d 73 74 72 69 6e 67 20 6b 65 79 20 61 6c 69 73 74 29 29 29 0a 0a 28 64 65 66 | (assoc-string.key.alist)))..(def |
| 3ac0 | 75 6e 20 73 2d 72 65 70 6c 61 63 65 2d 61 6c 6c 20 28 72 65 70 6c 61 63 65 6d 65 6e 74 73 20 73 | un.s-replace-all.(replacements.s |
| 3ae0 | 29 0a 20 20 22 52 45 50 4c 41 43 45 4d 45 4e 54 53 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 63 | )..."REPLACEMENTS.is.a.list.of.c |
| 3b00 | 6f 6e 73 2d 63 65 6c 6c 73 2e 20 45 61 63 68 20 60 63 61 72 60 20 69 73 20 72 65 70 6c 61 63 65 | ons-cells..Each.`car`.is.replace |
| 3b20 | 64 20 77 69 74 68 20 60 63 64 72 60 20 69 6e 20 53 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 | d.with.`cdr`.in.S."...(declare.( |
| 3b40 | 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 | pure.t).(side-effect-free.t))... |
| 3b60 | 28 6c 65 74 20 28 28 63 61 73 65 2d 66 6f 6c 64 2d 73 65 61 72 63 68 20 6e 69 6c 29 29 0a 20 20 | (let.((case-fold-search.nil))... |
| 3b80 | 20 28 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 20 28 72 65 67 65 | .(replace-regexp-in-string.(rege |
| 3ba0 | 78 70 2d 6f 70 74 20 28 6d 61 70 63 61 72 20 27 63 61 72 20 72 65 70 6c 61 63 65 6d 65 6e 74 73 | xp-opt.(mapcar.'car.replacements |
| 3bc0 | 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | )).............................. |
| 3be0 | 28 6c 61 6d 62 64 61 20 28 69 74 29 20 28 73 2d 2d 61 67 65 74 20 72 65 70 6c 61 63 65 6d 65 6e | (lambda.(it).(s--aget.replacemen |
| 3c00 | 74 73 20 69 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ts.it))......................... |
| 3c20 | 20 20 20 20 20 73 20 74 20 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 64 6f 77 6e 63 61 73 65 | .....s.t.t)))..(defun.s-downcase |
| 3c40 | 20 28 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 20 74 6f 20 6c 6f 77 65 72 20 63 61 73 65 2e | .(s)..."Convert.S.to.lower.case. |
| 3c60 | 0a 0a 54 68 69 73 20 69 73 20 61 20 73 69 6d 70 6c 65 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e | ..This.is.a.simple.wrapper.aroun |
| 3c80 | 64 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 60 64 6f 77 6e 63 61 73 65 27 2e 22 0a 20 20 28 64 | d.the.built-in.`downcase'."...(d |
| 3ca0 | 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 | eclare.(side-effect-free.t))...( |
| 3cc0 | 64 6f 77 6e 63 61 73 65 20 73 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 75 70 63 61 73 65 20 28 73 | downcase.s))..(defun.s-upcase.(s |
| 3ce0 | 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 20 74 6f 20 75 70 70 65 72 20 63 61 73 65 2e 0a 0a 54 | )..."Convert.S.to.upper.case...T |
| 3d00 | 68 69 73 20 69 73 20 61 20 73 69 6d 70 6c 65 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 | his.is.a.simple.wrapper.around.t |
| 3d20 | 68 65 20 62 75 69 6c 74 2d 69 6e 20 60 75 70 63 61 73 65 27 2e 22 0a 20 20 28 64 65 63 6c 61 72 | he.built-in.`upcase'."...(declar |
| 3d40 | 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 75 70 63 61 73 | e.(side-effect-free.t))...(upcas |
| 3d60 | 65 20 73 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 63 61 70 69 74 61 6c 69 7a 65 20 28 73 29 0a 20 | e.s))..(defun.s-capitalize.(s).. |
| 3d80 | 20 22 43 6f 6e 76 65 72 74 20 53 20 66 69 72 73 74 20 77 6f 72 64 27 73 20 66 69 72 73 74 20 63 | ."Convert.S.first.word's.first.c |
| 3da0 | 68 61 72 61 63 74 65 72 20 74 6f 20 75 70 70 65 72 20 61 6e 64 20 74 68 65 20 72 65 73 74 20 74 | haracter.to.upper.and.the.rest.t |
| 3dc0 | 6f 20 6c 6f 77 65 72 20 63 61 73 65 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d | o.lower.case."...(declare.(side- |
| 3de0 | 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 63 6f 6e 63 61 74 20 28 75 70 63 61 73 | effect-free.t))...(concat.(upcas |
| 3e00 | 65 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 30 20 31 29 29 20 28 64 6f 77 6e 63 61 73 65 20 28 | e.(substring.s.0.1)).(downcase.( |
| 3e20 | 73 75 62 73 74 72 69 6e 67 20 73 20 31 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 74 69 74 6c | substring.s.1))))..(defun.s-titl |
| 3e40 | 65 69 7a 65 20 28 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 69 6e 20 53 20 65 61 63 68 20 77 6f | eize.(s)..."Convert.in.S.each.wo |
| 3e60 | 72 64 27 73 20 66 69 72 73 74 20 63 68 61 72 61 63 74 65 72 20 74 6f 20 75 70 70 65 72 20 61 6e | rd's.first.character.to.upper.an |
| 3e80 | 64 20 74 68 65 20 72 65 73 74 20 74 6f 20 6c 6f 77 65 72 20 63 61 73 65 2e 0a 0a 54 68 69 73 20 | d.the.rest.to.lower.case...This. |
| 3ea0 | 69 73 20 61 20 73 69 6d 70 6c 65 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68 65 20 62 | is.a.simple.wrapper.around.the.b |
| 3ec0 | 75 69 6c 74 2d 69 6e 20 60 63 61 70 69 74 61 6c 69 7a 65 27 2e 22 0a 20 20 28 64 65 63 6c 61 72 | uilt-in.`capitalize'."...(declar |
| 3ee0 | 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 63 61 70 69 74 | e.(side-effect-free.t))...(capit |
| 3f00 | 61 6c 69 7a 65 20 73 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 73 2d 77 69 74 68 20 28 73 20 66 | alize.s))..(defmacro.s-with.(s.f |
| 3f20 | 6f 72 6d 20 26 72 65 73 74 20 6d 6f 72 65 29 0a 20 20 22 54 68 72 65 61 64 73 20 53 20 74 68 72 | orm.&rest.more)..."Threads.S.thr |
| 3f40 | 6f 75 67 68 20 74 68 65 20 66 6f 72 6d 73 2e 20 49 6e 73 65 72 74 73 20 53 20 61 73 20 74 68 65 | ough.the.forms..Inserts.S.as.the |
| 3f60 | 20 6c 61 73 74 20 69 74 65 6d 0a 69 6e 20 74 68 65 20 66 69 72 73 74 20 66 6f 72 6d 2c 20 6d 61 | .last.item.in.the.first.form,.ma |
| 3f80 | 6b 69 6e 67 20 61 20 6c 69 73 74 20 6f 66 20 69 74 20 69 66 20 69 74 20 69 73 20 6e 6f 74 20 61 | king.a.list.of.it.if.it.is.not.a |
| 3fa0 | 20 6c 69 73 74 0a 61 6c 72 65 61 64 79 2e 20 49 66 20 74 68 65 72 65 20 61 72 65 20 6d 6f 72 65 | .list.already..If.there.are.more |
| 3fc0 | 20 66 6f 72 6d 73 2c 20 69 6e 73 65 72 74 73 20 74 68 65 20 66 69 72 73 74 20 66 6f 72 6d 20 61 | .forms,.inserts.the.first.form.a |
| 3fe0 | 73 20 74 68 65 0a 6c 61 73 74 20 69 74 65 6d 20 69 6e 20 73 65 63 6f 6e 64 20 66 6f 72 6d 2c 20 | s.the.last.item.in.second.form,. |
| 4000 | 65 74 63 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 64 65 62 75 67 20 28 66 6f 72 6d 20 26 72 | etc."...(declare.(debug.(form.&r |
| 4020 | 65 73 74 20 5b 26 6f 72 20 28 66 75 6e 63 74 69 6f 6e 20 26 72 65 73 74 20 66 6f 72 6d 29 20 66 | est.[&or.(function.&rest.form).f |
| 4040 | 62 6f 75 6e 64 70 5d 29 29 29 0a 20 20 28 69 66 20 28 6e 75 6c 6c 20 6d 6f 72 65 29 0a 20 20 20 | boundp])))...(if.(null.more).... |
| 4060 | 20 20 20 28 69 66 20 28 6c 69 73 74 70 20 66 6f 72 6d 29 0a 20 20 20 20 20 20 20 20 20 20 60 28 | ...(if.(listp.form)...........`( |
| 4080 | 2c 28 63 61 72 20 66 6f 72 6d 29 20 2c 40 28 63 64 72 20 66 6f 72 6d 29 20 2c 73 29 0a 20 20 20 | ,(car.form).,@(cdr.form).,s).... |
| 40a0 | 20 20 20 20 20 28 6c 69 73 74 20 66 6f 72 6d 20 73 29 29 0a 20 20 20 20 60 28 73 2d 77 69 74 68 | .....(list.form.s)).....`(s-with |
| 40c0 | 20 28 73 2d 77 69 74 68 20 2c 73 20 2c 66 6f 72 6d 29 20 2c 40 6d 6f 72 65 29 29 29 0a 0a 28 70 | .(s-with.,s.,form).,@more)))..(p |
| 40e0 | 75 74 20 27 73 2d 77 69 74 68 20 27 6c 69 73 70 2d 69 6e 64 65 6e 74 2d 66 75 6e 63 74 69 6f 6e | ut.'s-with.'lisp-indent-function |
| 4100 | 20 31 29 0a 0a 28 64 65 66 75 6e 20 73 2d 69 6e 64 65 78 2d 6f 66 20 28 6e 65 65 64 6c 65 20 73 | .1)..(defun.s-index-of.(needle.s |
| 4120 | 20 26 6f 70 74 69 6f 6e 61 6c 20 69 67 6e 6f 72 65 2d 63 61 73 65 29 0a 20 20 22 52 65 74 75 72 | .&optional.ignore-case)..."Retur |
| 4140 | 6e 73 20 66 69 72 73 74 20 69 6e 64 65 78 20 6f 66 20 4e 45 45 44 4c 45 20 69 6e 20 53 2c 20 6f | ns.first.index.of.NEEDLE.in.S,.o |
| 4160 | 72 20 6e 69 6c 2e 0a 0a 49 66 20 49 47 4e 4f 52 45 2d 43 41 53 45 20 69 73 20 6e 6f 6e 2d 6e 69 | r.nil...If.IGNORE-CASE.is.non-ni |
| 4180 | 6c 2c 20 74 68 65 20 63 6f 6d 70 61 72 69 73 6f 6e 20 69 73 20 64 6f 6e 65 20 77 69 74 68 6f 75 | l,.the.comparison.is.done.withou |
| 41a0 | 74 20 70 61 79 69 6e 67 0a 61 74 74 65 6e 74 69 6f 6e 20 74 6f 20 63 61 73 65 20 64 69 66 66 65 | t.paying.attention.to.case.diffe |
| 41c0 | 72 65 6e 63 65 73 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 | rences."...(declare.(pure.t).(si |
| 41e0 | 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 63 61 73 65 | de-effect-free.t))...(let.((case |
| 4200 | 2d 66 6f 6c 64 2d 73 65 61 72 63 68 20 69 67 6e 6f 72 65 2d 63 61 73 65 29 29 0a 20 20 20 20 28 | -fold-search.ignore-case)).....( |
| 4220 | 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 6e 65 65 | string-match-p.(regexp-quote.nee |
| 4240 | 64 6c 65 29 20 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 72 65 76 65 72 73 65 20 28 73 29 0a | dle).s)))..(defun.s-reverse.(s). |
| 4260 | 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 72 65 76 65 72 73 65 20 6f 66 20 53 2e 22 0a 20 20 28 | .."Return.the.reverse.of.S."...( |
| 4280 | 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 | declare.(pure.t).(side-effect-fr |
| 42a0 | 65 65 20 74 29 29 0a 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 28 69 | ee.t))...(save-match-data.....(i |
| 42c0 | 66 20 28 6d 75 6c 74 69 62 79 74 65 2d 73 74 72 69 6e 67 2d 70 20 73 29 0a 20 20 20 20 20 20 20 | f.(multibyte-string-p.s)........ |
| 42e0 | 20 28 6c 65 74 20 28 28 69 6e 70 75 74 20 28 73 74 72 69 6e 67 2d 74 6f 2d 6c 69 73 74 20 73 29 | .(let.((input.(string-to-list.s) |
| 4300 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 29 0a 20 20 20 20 20 20 20 20 | )...............output)......... |
| 4320 | 20 20 28 72 65 71 75 69 72 65 20 27 75 63 73 2d 6e 6f 72 6d 61 6c 69 7a 65 29 0a 20 20 20 20 20 | ..(require.'ucs-normalize)...... |
| 4340 | 20 20 20 20 20 28 77 68 69 6c 65 20 69 6e 70 75 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b | .....(while.input.............;; |
| 4360 | 20 48 61 6e 64 6c 65 20 65 6e 74 69 72 65 20 67 72 61 70 68 65 6d 65 20 63 6c 75 73 74 65 72 20 | .Handle.entire.grapheme.cluster. |
| 4380 | 61 73 20 61 20 73 69 6e 67 6c 65 20 75 6e 69 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 | as.a.single.unit.............(le |
| 43a0 | 74 20 28 28 67 72 61 70 68 65 6d 65 20 28 6c 69 73 74 20 28 70 6f 70 20 69 6e 70 75 74 29 29 29 | t.((grapheme.(list.(pop.input))) |
| 43c0 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 6d 65 6d 71 6c 20 28 63 | )...............(while.(memql.(c |
| 43e0 | 61 72 20 69 6e 70 75 74 29 20 75 63 73 2d 6e 6f 72 6d 61 6c 69 7a 65 2d 63 6f 6d 62 69 6e 69 6e | ar.input).ucs-normalize-combinin |
| 4400 | 67 2d 63 68 61 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 | g-chars).................(push.( |
| 4420 | 70 6f 70 20 69 6e 70 75 74 29 20 67 72 61 70 68 65 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 | pop.input).grapheme))........... |
| 4440 | 20 20 20 20 28 73 65 74 71 20 6f 75 74 70 75 74 20 28 6e 63 6f 6e 63 20 28 6e 72 65 76 65 72 73 | ....(setq.output.(nconc.(nrevers |
| 4460 | 65 20 67 72 61 70 68 65 6d 65 29 20 6f 75 74 70 75 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 | e.grapheme).output)))).......... |
| 4480 | 20 28 63 6f 6e 63 61 74 20 6f 75 74 70 75 74 29 29 0a 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 | .(concat.output)).......(concat. |
| 44a0 | 28 6e 72 65 76 65 72 73 65 20 28 73 74 72 69 6e 67 2d 74 6f 2d 6c 69 73 74 20 73 29 29 29 29 29 | (nreverse.(string-to-list.s))))) |
| 44c0 | 29 0a 0a 28 64 65 66 75 6e 20 73 2d 6d 61 74 63 68 2d 73 74 72 69 6e 67 73 2d 61 6c 6c 20 28 72 | )..(defun.s-match-strings-all.(r |
| 44e0 | 65 67 65 78 20 73 74 72 69 6e 67 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f 66 | egex.string)..."Return.a.list.of |
| 4500 | 20 6d 61 74 63 68 65 73 20 66 6f 72 20 52 45 47 45 58 20 69 6e 20 53 54 52 49 4e 47 2e 0a 0a 45 | .matches.for.REGEX.in.STRING...E |
| 4520 | 61 63 68 20 65 6c 65 6d 65 6e 74 20 69 74 73 65 6c 66 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 | ach.element.itself.is.a.list.of. |
| 4540 | 6d 61 74 63 68 65 73 2c 20 61 73 20 70 65 72 0a 60 6d 61 74 63 68 2d 73 74 72 69 6e 67 27 2e 20 | matches,.as.per.`match-string'.. |
| 4560 | 4d 75 6c 74 69 70 6c 65 20 6d 61 74 63 68 65 73 20 61 74 20 74 68 65 20 73 61 6d 65 20 70 6f 73 | Multiple.matches.at.the.same.pos |
| 4580 | 69 74 69 6f 6e 20 77 69 6c 6c 20 62 65 0a 69 67 6e 6f 72 65 64 20 61 66 74 65 72 20 74 68 65 20 | ition.will.be.ignored.after.the. |
| 45a0 | 66 69 72 73 74 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d | first."...(declare.(side-effect- |
| 45c0 | 66 72 65 65 20 74 29 29 0a 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 | free.t))...(save-match-data..... |
| 45e0 | 28 6c 65 74 20 28 28 61 6c 6c 2d 73 74 72 69 6e 67 73 20 28 29 29 0a 20 20 20 20 20 20 20 20 20 | (let.((all-strings.()).......... |
| 4600 | 20 28 69 20 30 29 29 0a 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 20 28 3c 20 69 20 28 | .(i.0)).......(while.(and.(<.i.( |
| 4620 | 6c 65 6e 67 74 68 20 73 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | length.string))................. |
| 4640 | 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 72 65 67 65 78 20 73 74 72 69 6e 67 20 69 29 29 | ..(string-match.regex.string.i)) |
| 4660 | 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 69 20 28 31 2b 20 28 6d 61 74 63 68 2d 62 65 67 69 | .........(setq.i.(1+.(match-begi |
| 4680 | 6e 6e 69 6e 67 20 30 29 29 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 73 74 72 69 6e 67 73 | nning.0))).........(let.(strings |
| 46a0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 75 6d 2d 6d 61 74 63 68 65 73 20 28 2f 20 28 | ...............(num-matches.(/.( |
| 46c0 | 6c 65 6e 67 74 68 20 28 6d 61 74 63 68 2d 64 61 74 61 29 29 20 32 29 29 0a 20 20 20 20 20 20 20 | length.(match-data)).2))........ |
| 46e0 | 20 20 20 20 20 20 20 28 6d 61 74 63 68 20 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 69 | .......(match.0))...........(whi |
| 4700 | 6c 65 20 28 2f 3d 20 6d 61 74 63 68 20 6e 75 6d 2d 6d 61 74 63 68 65 73 29 0a 20 20 20 20 20 20 | le.(/=.match.num-matches)....... |
| 4720 | 20 20 20 20 20 20 28 70 75 73 68 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 6d 61 74 63 68 20 | ......(push.(match-string.match. |
| 4740 | 73 74 72 69 6e 67 29 20 73 74 72 69 6e 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 | string).strings).............(se |
| 4760 | 74 71 20 6d 61 74 63 68 20 28 31 2b 20 6d 61 74 63 68 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 | tq.match.(1+.match)))........... |
| 4780 | 28 70 75 73 68 20 28 6e 72 65 76 65 72 73 65 20 73 74 72 69 6e 67 73 29 20 61 6c 6c 2d 73 74 72 | (push.(nreverse.strings).all-str |
| 47a0 | 69 6e 67 73 29 29 29 0a 20 20 20 20 20 20 28 6e 72 65 76 65 72 73 65 20 61 6c 6c 2d 73 74 72 69 | ings))).......(nreverse.all-stri |
| 47c0 | 6e 67 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 6d 61 74 63 68 65 64 2d 70 6f 73 69 74 69 | ngs))))..(defun.s-matched-positi |
| 47e0 | 6f 6e 73 2d 61 6c 6c 20 28 72 65 67 65 78 70 20 73 74 72 69 6e 67 20 26 6f 70 74 69 6f 6e 61 6c | ons-all.(regexp.string.&optional |
| 4800 | 20 73 75 62 65 78 70 2d 64 65 70 74 68 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 6c 69 73 74 20 | .subexp-depth)..."Return.a.list. |
| 4820 | 6f 66 20 6d 61 74 63 68 65 64 20 70 6f 73 69 74 69 6f 6e 73 20 66 6f 72 20 52 45 47 45 58 50 20 | of.matched.positions.for.REGEXP. |
| 4840 | 69 6e 20 53 54 52 49 4e 47 2e 0a 53 55 42 45 58 50 2d 44 45 50 54 48 20 69 73 20 30 20 62 79 20 | in.STRING..SUBEXP-DEPTH.is.0.by. |
| 4860 | 64 65 66 61 75 6c 74 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 | default."...(declare.(side-effec |
| 4880 | 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 69 66 20 28 6e 75 6c 6c 20 73 75 62 65 78 70 2d 64 65 | t-free.t))...(if.(null.subexp-de |
| 48a0 | 70 74 68 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 73 75 62 65 78 70 2d 64 65 70 74 68 20 30 29 | pth).......(setq.subexp-depth.0) |
| 48c0 | 29 0a 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 28 6c 65 74 20 28 28 | )...(save-match-data.....(let.(( |
| 48e0 | 70 6f 73 20 30 29 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 | pos.0).result).......(while.(and |
| 4900 | 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 72 65 67 65 78 70 20 73 74 72 69 6e 67 20 70 6f 73 | .(string-match.regexp.string.pos |
| 4920 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3c 20 70 6f 73 20 28 6c 65 6e 67 | )...................(<.pos.(leng |
| 4940 | 74 68 20 73 74 72 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 63 6f 6e 73 | th.string))).........(push.(cons |
| 4960 | 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 73 75 62 65 78 70 2d 64 65 70 74 68 29 20 | .(match-beginning.subexp-depth). |
| 4980 | 28 6d 61 74 63 68 2d 65 6e 64 20 73 75 62 65 78 70 2d 64 65 70 74 68 29 29 20 72 65 73 75 6c 74 | (match-end.subexp-depth)).result |
| 49a0 | 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 6f 73 20 28 6d 61 74 63 68 2d 65 6e 64 20 30 | ).........(setq.pos.(match-end.0 |
| 49c0 | 29 29 29 0a 20 20 20 20 20 20 28 6e 72 65 76 65 72 73 65 20 72 65 73 75 6c 74 29 29 29 29 0a 0a | ))).......(nreverse.result)))).. |
| 49e0 | 28 64 65 66 75 6e 20 73 2d 6d 61 74 63 68 20 28 72 65 67 65 78 70 20 73 20 26 6f 70 74 69 6f 6e | (defun.s-match.(regexp.s.&option |
| 4a00 | 61 6c 20 73 74 61 72 74 29 0a 20 20 22 57 68 65 6e 20 74 68 65 20 67 69 76 65 6e 20 65 78 70 72 | al.start)..."When.the.given.expr |
| 4a20 | 65 73 73 69 6f 6e 20 6d 61 74 63 68 65 73 20 74 68 65 20 73 74 72 69 6e 67 2c 20 74 68 69 73 20 | ession.matches.the.string,.this. |
| 4a40 | 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 6c 69 73 74 0a 6f 66 20 74 68 65 20 77 | function.returns.a.list.of.the.w |
| 4a60 | 68 6f 6c 65 20 6d 61 74 63 68 69 6e 67 20 73 74 72 69 6e 67 20 61 6e 64 20 61 20 73 74 72 69 6e | hole.matching.string.and.a.strin |
| 4a80 | 67 20 66 6f 72 20 65 61 63 68 20 6d 61 74 63 68 65 64 20 73 75 62 65 78 70 72 65 73 73 69 6f 6e | g.for.each.matched.subexpression |
| 4aa0 | 73 2e 0a 53 75 62 65 78 70 72 65 73 73 69 6f 6e 73 20 74 68 61 74 20 64 69 64 6e 27 74 20 6d 61 | s..Subexpressions.that.didn't.ma |
| 4ac0 | 74 63 68 20 61 72 65 20 72 65 70 72 65 73 65 6e 74 65 64 20 62 79 20 6e 69 6c 20 65 6c 65 6d 65 | tch.are.represented.by.nil.eleme |
| 4ae0 | 6e 74 73 0a 69 6e 20 74 68 65 20 6c 69 73 74 2c 20 65 78 63 65 70 74 20 74 68 61 74 20 6e 6f 6e | nts.in.the.list,.except.that.non |
| 4b00 | 2d 6d 61 74 63 68 69 6e 67 20 73 75 62 65 78 70 72 65 73 73 69 6f 6e 73 20 61 74 20 74 68 65 20 | -matching.subexpressions.at.the. |
| 4b20 | 65 6e 64 0a 6f 66 20 52 45 47 45 58 50 20 6d 69 67 68 74 20 6e 6f 74 20 61 70 70 65 61 72 20 61 | end.of.REGEXP.might.not.appear.a |
| 4b40 | 74 20 61 6c 6c 20 69 6e 20 74 68 65 20 6c 69 73 74 2e 20 20 54 68 61 74 20 69 73 2c 20 74 68 65 | t.all.in.the.list...That.is,.the |
| 4b60 | 0a 72 65 74 75 72 6e 65 64 20 6c 69 73 74 20 63 61 6e 20 62 65 20 73 68 6f 72 74 65 72 20 74 68 | .returned.list.can.be.shorter.th |
| 4b80 | 61 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 75 62 65 78 70 72 65 73 73 69 6f 6e 73 20 | an.the.number.of.subexpressions. |
| 4ba0 | 69 6e 0a 52 45 47 45 58 50 20 70 6c 75 73 20 6f 6e 65 2e 20 20 49 66 20 52 45 47 45 58 50 20 64 | in.REGEXP.plus.one...If.REGEXP.d |
| 4bc0 | 69 64 20 6e 6f 74 20 6d 61 74 63 68 20 74 68 65 20 72 65 74 75 72 6e 65 64 20 76 61 6c 75 65 20 | id.not.match.the.returned.value. |
| 4be0 | 69 73 0a 61 6e 20 65 6d 70 74 79 20 6c 69 73 74 20 28 6e 69 6c 29 2e 0a 0a 57 68 65 6e 20 53 54 | is.an.empty.list.(nil)...When.ST |
| 4c00 | 41 52 54 20 69 73 20 6e 6f 6e 2d 6e 69 6c 20 74 68 65 20 73 65 61 72 63 68 20 77 69 6c 6c 20 73 | ART.is.non-nil.the.search.will.s |
| 4c20 | 74 61 72 74 20 61 74 20 74 68 61 74 20 69 6e 64 65 78 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 | tart.at.that.index."...(declare. |
| 4c40 | 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 61 76 65 2d 6d 61 | (side-effect-free.t))...(save-ma |
| 4c60 | 74 63 68 2d 64 61 74 61 0a 20 20 20 20 28 69 66 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 72 | tch-data.....(if.(string-match.r |
| 4c80 | 65 67 65 78 70 20 73 20 73 74 61 72 74 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6d 61 | egexp.s.start).........(let.((ma |
| 4ca0 | 74 63 68 2d 64 61 74 61 2d 6c 69 73 74 20 28 6d 61 74 63 68 2d 64 61 74 61 29 29 0a 20 20 20 20 | tch-data-list.(match-data))..... |
| 4cc0 | 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 69 | ..........result)...........(whi |
| 4ce0 | 6c 65 20 6d 61 74 63 68 2d 64 61 74 61 2d 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 | le.match-data-list.............( |
| 4d00 | 6c 65 74 2a 20 28 28 62 65 67 20 28 63 61 72 20 6d 61 74 63 68 2d 64 61 74 61 2d 6c 69 73 74 29 | let*.((beg.(car.match-data-list) |
| 4d20 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6e 64 20 28 63 61 64 72 20 | )....................(end.(cadr. |
| 4d40 | 6d 61 74 63 68 2d 64 61 74 61 2d 6c 69 73 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | match-data-list))............... |
| 4d60 | 20 20 20 20 20 28 73 75 62 73 20 28 69 66 20 28 61 6e 64 20 62 65 67 20 65 6e 64 29 20 28 73 75 | .....(subs.(if.(and.beg.end).(su |
| 4d80 | 62 73 74 72 69 6e 67 20 73 20 62 65 67 20 65 6e 64 29 20 6e 69 6c 29 29 29 0a 20 20 20 20 20 20 | bstring.s.beg.end).nil)))....... |
| 4da0 | 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c 74 20 28 63 6f 6e 73 20 73 75 62 73 20 | ........(setq.result.(cons.subs. |
| 4dc0 | 72 65 73 75 6c 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6d 61 74 | result))...............(setq.mat |
| 4de0 | 63 68 2d 64 61 74 61 2d 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ch-data-list.................... |
| 4e00 | 20 28 63 64 64 72 20 6d 61 74 63 68 2d 64 61 74 61 2d 6c 69 73 74 29 29 29 29 0a 20 20 20 20 20 | .(cddr.match-data-list))))...... |
| 4e20 | 20 20 20 20 20 28 6e 72 65 76 65 72 73 65 20 72 65 73 75 6c 74 29 29 29 29 29 0a 0a 28 64 65 66 | .....(nreverse.result)))))..(def |
| 4e40 | 75 6e 20 73 2d 73 6c 69 63 65 2d 61 74 20 28 72 65 67 65 78 70 20 73 29 0a 20 20 22 53 6c 69 63 | un.s-slice-at.(regexp.s)..."Slic |
| 4e60 | 65 73 20 53 20 75 70 20 61 74 20 65 76 65 72 79 20 69 6e 64 65 78 20 6d 61 74 63 68 69 6e 67 20 | es.S.up.at.every.index.matching. |
| 4e80 | 52 45 47 45 58 50 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 | REGEXP."...(declare.(side-effect |
| 4ea0 | 2d 66 72 65 65 20 74 29 29 0a 20 20 28 69 66 20 28 73 2d 62 6c 61 6e 6b 3f 20 73 29 0a 20 20 20 | -free.t))...(if.(s-blank?.s).... |
| 4ec0 | 20 20 20 28 6c 69 73 74 20 73 29 0a 20 20 20 20 28 6c 65 74 20 28 73 73 29 0a 20 20 20 20 20 20 | ...(list.s).....(let.(ss)....... |
| 4ee0 | 28 77 68 69 6c 65 20 28 6e 6f 74 20 28 73 2d 62 6c 61 6e 6b 3f 20 73 29 29 0a 20 20 20 20 20 20 | (while.(not.(s-blank?.s))....... |
| 4f00 | 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 | ..(save-match-data...........(le |
| 4f20 | 74 20 28 28 69 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 72 65 67 65 78 70 20 73 20 31 29 29 | t.((i.(string-match.regexp.s.1)) |
| 4f40 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 69 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ).............(if.i............. |
| 4f60 | 20 20 20 20 28 73 65 74 71 20 73 73 20 28 63 6f 6e 73 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 | ....(setq.ss.(cons.(substring.s. |
| 4f80 | 30 20 69 29 20 73 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 | 0.i).ss).......................s |
| 4fa0 | 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 69 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .(substring.s.i))............... |
| 4fc0 | 28 73 65 74 71 20 73 73 20 28 63 6f 6e 73 20 73 20 73 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 | (setq.ss.(cons.s.ss)............ |
| 4fe0 | 20 20 20 20 20 20 20 20 20 73 20 22 22 29 29 29 29 29 0a 20 20 20 20 20 20 28 6e 72 65 76 65 72 | .........s.""))))).......(nrever |
| 5000 | 73 65 20 73 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 73 70 6c 69 74 2d 77 6f 72 64 73 20 | se.ss))))..(defun.s-split-words. |
| 5020 | 28 73 29 0a 20 20 22 53 70 6c 69 74 20 53 20 69 6e 74 6f 20 6c 69 73 74 20 6f 66 20 77 6f 72 64 | (s)..."Split.S.into.list.of.word |
| 5040 | 73 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 | s."...(declare.(side-effect-free |
| 5060 | 20 74 29 29 0a 20 20 28 73 2d 73 70 6c 69 74 0a 20 20 20 22 5b 5e 5b 3a 77 6f 72 64 3a 5d 30 2d | .t))...(s-split...."[^[:word:]0- |
| 5080 | 39 5d 2b 22 0a 20 20 20 28 6c 65 74 20 28 28 63 61 73 65 2d 66 6f 6c 64 2d 73 65 61 72 63 68 20 | 9]+"....(let.((case-fold-search. |
| 50a0 | 6e 69 6c 29 29 0a 20 20 20 20 20 28 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73 74 | nil))......(replace-regexp-in-st |
| 50c0 | 72 69 6e 67 0a 20 20 20 20 20 20 22 5c 5c 28 5b 5b 3a 6c 6f 77 65 72 3a 5d 5d 5c 5c 29 5c 5c 28 | ring......."\\([[:lower:]]\\)\\( |
| 50e0 | 5b 5b 3a 75 70 70 65 72 3a 5d 5d 5c 5c 29 22 20 22 5c 5c 31 20 5c 5c 32 22 0a 20 20 20 20 20 20 | [[:upper:]]\\)"."\\1.\\2"....... |
| 5100 | 28 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 20 22 5c 5c 28 5b 5b | (replace-regexp-in-string."\\([[ |
| 5120 | 3a 75 70 70 65 72 3a 5d 5d 5c 5c 29 5c 5c 28 5b 5b 3a 75 70 70 65 72 3a 5d 5d 5b 30 2d 39 5b 3a | :upper:]]\\)\\([[:upper:]][0-9[: |
| 5140 | 6c 6f 77 65 72 3a 5d 5d 5c 5c 29 22 20 22 5c 5c 31 20 5c 5c 32 22 20 73 29 29 29 0a 20 20 20 74 | lower:]]\\)"."\\1.\\2".s)))....t |
| 5160 | 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 2d 6d 61 70 63 61 72 2d 68 65 61 64 20 28 66 6e 2d 68 65 | ))..(defun.s--mapcar-head.(fn-he |
| 5180 | 61 64 20 66 6e 2d 72 65 73 74 20 6c 69 73 74 29 0a 20 20 22 4c 69 6b 65 20 4d 41 50 43 41 52 2c | ad.fn-rest.list)..."Like.MAPCAR, |
| 51a0 | 20 62 75 74 20 61 70 70 6c 69 65 73 20 61 20 64 69 66 66 65 72 65 6e 74 20 66 75 6e 63 74 69 6f | .but.applies.a.different.functio |
| 51c0 | 6e 20 74 6f 20 74 68 65 20 66 69 72 73 74 20 65 6c 65 6d 65 6e 74 2e 22 0a 20 20 28 69 66 20 6c | n.to.the.first.element."...(if.l |
| 51e0 | 69 73 74 0a 20 20 20 20 20 20 28 63 6f 6e 73 20 28 66 75 6e 63 61 6c 6c 20 66 6e 2d 68 65 61 64 | ist.......(cons.(funcall.fn-head |
| 5200 | 20 28 63 61 72 20 6c 69 73 74 29 29 20 28 6d 61 70 63 61 72 20 66 6e 2d 72 65 73 74 20 28 63 64 | .(car.list)).(mapcar.fn-rest.(cd |
| 5220 | 72 20 6c 69 73 74 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 6c 6f 77 65 72 2d 63 61 6d 65 | r.list)))))..(defun.s-lower-came |
| 5240 | 6c 2d 63 61 73 65 20 28 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 20 74 6f 20 6c 6f 77 65 72 | l-case.(s)..."Convert.S.to.lower |
| 5260 | 43 61 6d 65 6c 43 61 73 65 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 | CamelCase."...(declare.(side-eff |
| 5280 | 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 2d 6a 6f 69 6e 20 22 22 20 28 73 2d 2d 6d 61 | ect-free.t))...(s-join."".(s--ma |
| 52a0 | 70 63 61 72 2d 68 65 61 64 20 27 64 6f 77 6e 63 61 73 65 20 27 63 61 70 69 74 61 6c 69 7a 65 20 | pcar-head.'downcase.'capitalize. |
| 52c0 | 28 73 2d 73 70 6c 69 74 2d 77 6f 72 64 73 20 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 75 | (s-split-words.s))))..(defun.s-u |
| 52e0 | 70 70 65 72 2d 63 61 6d 65 6c 2d 63 61 73 65 20 28 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 | pper-camel-case.(s)..."Convert.S |
| 5300 | 20 74 6f 20 55 70 70 65 72 43 61 6d 65 6c 43 61 73 65 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 | .to.UpperCamelCase."...(declare. |
| 5320 | 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 2d 6a 6f 69 6e 20 | (side-effect-free.t))...(s-join. |
| 5340 | 22 22 20 28 6d 61 70 63 61 72 20 27 63 61 70 69 74 61 6c 69 7a 65 20 28 73 2d 73 70 6c 69 74 2d | "".(mapcar.'capitalize.(s-split- |
| 5360 | 77 6f 72 64 73 20 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 73 6e 61 6b 65 2d 63 61 73 65 | words.s))))..(defun.s-snake-case |
| 5380 | 20 28 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 20 74 6f 20 73 6e 61 6b 65 5f 63 61 73 65 2e | .(s)..."Convert.S.to.snake_case. |
| 53a0 | 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 | "...(declare.(side-effect-free.t |
| 53c0 | 29 29 0a 20 20 28 73 2d 6a 6f 69 6e 20 22 5f 22 20 28 6d 61 70 63 61 72 20 27 64 6f 77 6e 63 61 | ))...(s-join."_".(mapcar.'downca |
| 53e0 | 73 65 20 28 73 2d 73 70 6c 69 74 2d 77 6f 72 64 73 20 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 | se.(s-split-words.s))))..(defun. |
| 5400 | 73 2d 64 61 73 68 65 64 2d 77 6f 72 64 73 20 28 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 20 | s-dashed-words.(s)..."Convert.S. |
| 5420 | 74 6f 20 64 61 73 68 65 64 2d 77 6f 72 64 73 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 | to.dashed-words."...(declare.(si |
| 5440 | 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 2d 6a 6f 69 6e 20 22 2d 22 | de-effect-free.t))...(s-join."-" |
| 5460 | 20 28 6d 61 70 63 61 72 20 27 64 6f 77 6e 63 61 73 65 20 28 73 2d 73 70 6c 69 74 2d 77 6f 72 64 | .(mapcar.'downcase.(s-split-word |
| 5480 | 73 20 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 73 70 61 63 65 64 2d 77 6f 72 64 73 20 28 | s.s))))..(defun.s-spaced-words.( |
| 54a0 | 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 20 74 6f 20 73 70 61 63 65 64 20 77 6f 72 64 73 2e | s)..."Convert.S.to.spaced.words. |
| 54c0 | 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 | "...(declare.(side-effect-free.t |
| 54e0 | 29 29 0a 20 20 28 73 2d 6a 6f 69 6e 20 22 20 22 20 28 73 2d 73 70 6c 69 74 2d 77 6f 72 64 73 20 | ))...(s-join.".".(s-split-words. |
| 5500 | 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 63 61 70 69 74 61 6c 69 7a 65 64 2d 77 6f 72 64 73 | s)))..(defun.s-capitalized-words |
| 5520 | 20 28 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 20 74 6f 20 43 61 70 69 74 61 6c 69 7a 65 64 | .(s)..."Convert.S.to.Capitalized |
| 5540 | 20 77 6f 72 64 73 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 | .words."...(declare.(side-effect |
| 5560 | 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 77 6f 72 64 73 20 28 73 2d 73 70 6c 69 | -free.t))...(let.((words.(s-spli |
| 5580 | 74 2d 77 6f 72 64 73 20 73 29 29 29 0a 20 20 20 20 28 73 2d 6a 6f 69 6e 20 22 20 22 20 28 63 6f | t-words.s))).....(s-join.".".(co |
| 55a0 | 6e 73 20 28 63 61 70 69 74 61 6c 69 7a 65 20 28 63 61 72 20 77 6f 72 64 73 29 29 20 28 6d 61 70 | ns.(capitalize.(car.words)).(map |
| 55c0 | 63 61 72 20 27 64 6f 77 6e 63 61 73 65 20 28 63 64 72 20 77 6f 72 64 73 29 29 29 29 29 29 0a 0a | car.'downcase.(cdr.words)))))).. |
| 55e0 | 28 64 65 66 75 6e 20 73 2d 74 69 74 6c 65 69 7a 65 64 2d 77 6f 72 64 73 20 28 73 29 0a 20 20 22 | (defun.s-titleized-words.(s)..." |
| 5600 | 43 6f 6e 76 65 72 74 20 53 20 74 6f 20 54 69 74 6c 65 69 7a 65 64 20 57 6f 72 64 73 2e 22 0a 20 | Convert.S.to.Titleized.Words.".. |
| 5620 | 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a | .(declare.(side-effect-free.t)). |
| 5640 | 20 20 28 73 2d 6a 6f 69 6e 20 22 20 22 20 28 6d 61 70 63 61 72 20 27 73 2d 74 69 74 6c 65 69 7a | ..(s-join.".".(mapcar.'s-titleiz |
| 5660 | 65 20 28 73 2d 73 70 6c 69 74 2d 77 6f 72 64 73 20 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 | e.(s-split-words.s))))..(defun.s |
| 5680 | 2d 77 6f 72 64 2d 69 6e 69 74 69 61 6c 73 20 28 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 20 | -word-initials.(s)..."Convert.S. |
| 56a0 | 74 6f 20 69 74 73 20 69 6e 69 74 69 61 6c 73 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 | to.its.initials."...(declare.(si |
| 56c0 | 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 2d 6a 6f 69 6e 20 22 22 20 | de-effect-free.t))...(s-join."". |
| 56e0 | 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 73 73 29 20 28 73 75 62 73 74 72 69 6e 67 20 | (mapcar.(lambda.(ss).(substring. |
| 5700 | 73 73 20 30 20 31 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 | ss.0.1))......................(s |
| 5720 | 2d 73 70 6c 69 74 2d 77 6f 72 64 73 20 73 29 29 29 29 0a 0a 3b 3b 20 45 72 72 6f 72 73 20 66 6f | -split-words.s))))..;;.Errors.fo |
| 5740 | 72 20 73 2d 66 6f 72 6d 61 74 0a 28 70 72 6f 67 6e 0a 20 20 28 70 75 74 20 27 73 2d 66 6f 72 6d | r.s-format.(progn...(put.'s-form |
| 5760 | 61 74 2d 72 65 73 6f 6c 76 65 0a 20 20 20 20 20 20 20 27 65 72 72 6f 72 2d 63 6f 6e 64 69 74 69 | at-resolve........'error-conditi |
| 5780 | 6f 6e 73 0a 20 20 20 20 20 20 20 27 28 65 72 72 6f 72 20 73 2d 66 6f 72 6d 61 74 20 73 2d 66 6f | ons........'(error.s-format.s-fo |
| 57a0 | 72 6d 61 74 2d 72 65 73 6f 6c 76 65 29 29 0a 20 20 28 70 75 74 20 27 73 2d 66 6f 72 6d 61 74 2d | rmat-resolve))...(put.'s-format- |
| 57c0 | 72 65 73 6f 6c 76 65 0a 20 20 20 20 20 20 20 27 65 72 72 6f 72 2d 6d 65 73 73 61 67 65 0a 20 20 | resolve........'error-message... |
| 57e0 | 20 20 20 20 20 22 43 61 6e 6e 6f 74 20 72 65 73 6f 6c 76 65 20 61 20 74 65 6d 70 6c 61 74 65 20 | ....."Cannot.resolve.a.template. |
| 5800 | 74 6f 20 76 61 6c 75 65 73 22 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 66 6f 72 6d 61 74 20 28 74 | to.values"))..(defun.s-format.(t |
| 5820 | 65 6d 70 6c 61 74 65 20 72 65 70 6c 61 63 65 72 20 26 6f 70 74 69 6f 6e 61 6c 20 65 78 74 72 61 | emplate.replacer.&optional.extra |
| 5840 | 29 0a 20 20 22 46 6f 72 6d 61 74 20 54 45 4d 50 4c 41 54 45 20 77 69 74 68 20 74 68 65 20 66 75 | )..."Format.TEMPLATE.with.the.fu |
| 5860 | 6e 63 74 69 6f 6e 20 52 45 50 4c 41 43 45 52 2e 0a 0a 52 45 50 4c 41 43 45 52 20 74 61 6b 65 73 | nction.REPLACER...REPLACER.takes |
| 5880 | 20 61 6e 20 61 72 67 75 6d 65 6e 74 20 6f 66 20 74 68 65 20 66 6f 72 6d 61 74 20 76 61 72 69 61 | .an.argument.of.the.format.varia |
| 58a0 | 62 6c 65 20 61 6e 64 20 6f 70 74 69 6f 6e 61 6c 6c 79 0a 61 6e 20 65 78 74 72 61 20 61 72 67 75 | ble.and.optionally.an.extra.argu |
| 58c0 | 6d 65 6e 74 20 77 68 69 63 68 20 69 73 20 74 68 65 20 45 58 54 52 41 20 76 61 6c 75 65 20 66 72 | ment.which.is.the.EXTRA.value.fr |
| 58e0 | 6f 6d 20 74 68 65 20 63 61 6c 6c 20 74 6f 0a 60 73 2d 66 6f 72 6d 61 74 27 2e 0a 0a 53 65 76 65 | om.the.call.to.`s-format'...Seve |
| 5900 | 72 61 6c 20 73 74 61 6e 64 61 72 64 20 60 73 2d 66 6f 72 6d 61 74 27 20 68 65 6c 70 65 72 20 66 | ral.standard.`s-format'.helper.f |
| 5920 | 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 72 65 63 6f 67 6e 69 7a 65 64 20 61 6e 64 0a 61 64 61 70 | unctions.are.recognized.and.adap |
| 5940 | 74 65 64 20 66 6f 72 20 74 68 69 73 3a 0a 0a 20 20 20 20 28 73 2d 66 6f 72 6d 61 74 20 5c 22 24 | ted.for.this:......(s-format.\"$ |
| 5960 | 7b 6e 61 6d 65 7d 5c 22 20 5c 5c 3d 27 67 65 74 68 61 73 68 20 68 61 73 68 2d 74 61 62 6c 65 29 | {name}\".\\='gethash.hash-table) |
| 5980 | 0a 20 20 20 20 28 73 2d 66 6f 72 6d 61 74 20 5c 22 24 7b 6e 61 6d 65 7d 5c 22 20 5c 5c 3d 27 61 | .....(s-format.\"${name}\".\\='a |
| 59a0 | 67 65 74 20 61 6c 69 73 74 29 0a 20 20 20 20 28 73 2d 66 6f 72 6d 61 74 20 5c 22 24 30 5c 22 20 | get.alist).....(s-format.\"$0\". |
| 59c0 | 5c 5c 3d 27 65 6c 74 20 73 65 71 75 65 6e 63 65 29 0a 0a 54 68 65 20 52 45 50 4c 41 43 45 52 20 | \\='elt.sequence)..The.REPLACER. |
| 59e0 | 66 75 6e 63 74 69 6f 6e 20 6d 61 79 20 62 65 20 75 73 65 64 20 74 6f 20 64 6f 20 61 6e 79 20 6f | function.may.be.used.to.do.any.o |
| 5a00 | 74 68 65 72 20 6b 69 6e 64 20 6f 66 0a 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 2e 22 0a 20 20 | ther.kind.of.transformation."... |
| 5a20 | 28 6c 65 74 20 28 28 73 61 76 65 64 2d 6d 61 74 63 68 2d 64 61 74 61 20 28 6d 61 74 63 68 2d 64 | (let.((saved-match-data.(match-d |
| 5a40 | 61 74 61 29 29 29 0a 20 20 20 20 28 75 6e 77 69 6e 64 2d 70 72 6f 74 65 63 74 0a 20 20 20 20 20 | ata))).....(unwind-protect...... |
| 5a60 | 20 20 20 28 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 0a 20 20 20 | ...(replace-regexp-in-string.... |
| 5a80 | 20 20 20 20 20 20 22 5c 5c 24 5c 5c 28 7b 5c 5c 28 5b 5e 7d 5d 2b 5c 5c 29 7d 5c 5c 7c 5b 30 2d | ......"\\$\\({\\([^}]+\\)}\\|[0- |
| 5aa0 | 39 5d 2b 5c 5c 29 22 0a 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 6d 64 29 0a 20 20 | 9]+\\)"..........(lambda.(md)... |
| 5ac0 | 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 76 61 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 | .........(let.((var............. |
| 5ae0 | 20 20 20 20 20 20 28 6c 65 74 20 28 28 6d 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 32 20 6d | ......(let.((m.(match-string.2.m |
| 5b00 | 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 6d 20 6d | d))).....................(if.m.m |
| 5b20 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 74 | .......................(string-t |
| 5b40 | 6f 2d 6e 75 6d 62 65 72 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 6d 64 29 29 29 29 29 | o-number.(match-string.1.md))))) |
| 5b60 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 70 6c 61 63 65 72 2d 6d 61 74 63 | ..................(replacer-matc |
| 5b80 | 68 2d 64 61 74 61 20 28 6d 61 74 63 68 2d 64 61 74 61 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 | h-data.(match-data)))........... |
| 5ba0 | 20 20 20 28 75 6e 77 69 6e 64 2d 70 72 6f 74 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...(unwind-protect.............. |
| 5bc0 | 20 20 20 20 28 6c 65 74 20 28 28 76 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ....(let.((v.................... |
| 5be0 | 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .....(cond...................... |
| 5c00 | 20 20 20 20 28 28 65 71 20 72 65 70 6c 61 63 65 72 20 27 67 65 74 68 61 73 68 29 0a 20 20 20 20 | ....((eq.replacer.'gethash)..... |
| 5c20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 72 | ......................(funcall.r |
| 5c40 | 65 70 6c 61 63 65 72 20 76 61 72 20 65 78 74 72 61 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | eplacer.var.extra))............. |
| 5c60 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 72 65 70 6c 61 63 65 72 20 27 61 67 65 74 | .............((eq.replacer.'aget |
| 5c80 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e | )...........................(fun |
| 5ca0 | 63 61 6c 6c 20 27 73 2d 2d 61 67 65 74 20 65 78 74 72 61 20 76 61 72 29 29 0a 20 20 20 20 20 20 | call.'s--aget.extra.var))....... |
| 5cc0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 72 65 70 6c 61 63 65 72 | ...................((eq.replacer |
| 5ce0 | 20 27 65 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .'elt).......................... |
| 5d00 | 20 28 66 75 6e 63 61 6c 6c 20 72 65 70 6c 61 63 65 72 20 65 78 74 72 61 20 76 61 72 29 29 0a 20 | .(funcall.replacer.extra.var)).. |
| 5d20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 72 65 70 | ........................((eq.rep |
| 5d40 | 6c 61 63 65 72 20 27 6f 72 65 66 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | lacer.'oref).................... |
| 5d60 | 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 23 27 73 6c 6f 74 2d 76 61 6c 75 65 20 65 78 74 | .......(funcall.#'slot-value.ext |
| 5d80 | 72 61 20 28 69 6e 74 65 72 6e 20 76 61 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ra.(intern.var)))............... |
| 5da0 | 20 20 20 20 20 20 20 20 20 20 20 28 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...........(t................... |
| 5dc0 | 20 20 20 20 20 20 20 20 28 73 65 74 2d 6d 61 74 63 68 2d 64 61 74 61 20 73 61 76 65 64 2d 6d 61 | ........(set-match-data.saved-ma |
| 5de0 | 74 63 68 2d 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | tch-data)....................... |
| 5e00 | 20 20 20 20 28 69 66 20 65 78 74 72 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ....(if.extra................... |
| 5e20 | 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 72 65 70 6c 61 63 65 72 20 76 61 | ............(funcall.replacer.va |
| 5e40 | 72 20 65 78 74 72 61 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | r.extra)........................ |
| 5e60 | 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 72 65 70 6c 61 63 65 72 20 76 61 72 29 29 29 29 29 29 | .....(funcall.replacer.var)))))) |
| 5e80 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 76 20 28 66 6f 72 6d 61 | ....................(if.v.(forma |
| 5ea0 | 74 20 22 25 73 22 20 76 29 20 28 73 69 67 6e 61 6c 20 27 73 2d 66 6f 72 6d 61 74 2d 72 65 73 6f | t."%s".v).(signal.'s-format-reso |
| 5ec0 | 6c 76 65 20 6d 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 2d 6d 61 | lve.md)))................(set-ma |
| 5ee0 | 74 63 68 2d 64 61 74 61 20 72 65 70 6c 61 63 65 72 2d 6d 61 74 63 68 2d 64 61 74 61 29 29 29 29 | tch-data.replacer-match-data)))) |
| 5f00 | 0a 20 20 20 20 20 20 20 20 20 74 65 6d 70 6c 61 74 65 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 4e | ..........template..........;;.N |
| 5f20 | 65 65 64 20 6c 69 74 65 72 61 6c 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 69 74 20 77 6f 72 6b | eed.literal.to.make.sure.it.work |
| 5f40 | 73 0a 20 20 20 20 20 20 20 20 20 74 20 74 29 0a 20 20 20 20 20 20 28 73 65 74 2d 6d 61 74 63 68 | s..........t.t).......(set-match |
| 5f60 | 2d 64 61 74 61 20 73 61 76 65 64 2d 6d 61 74 63 68 2d 64 61 74 61 29 29 29 29 0a 0a 28 64 65 66 | -data.saved-match-data))))..(def |
| 5f80 | 76 61 72 20 73 2d 6c 65 78 2d 76 61 6c 75 65 2d 61 73 2d 6c 69 73 70 20 6e 69 6c 0a 20 20 22 49 | var.s-lex-value-as-lisp.nil..."I |
| 5fa0 | 66 20 60 74 27 20 69 6e 74 65 72 70 6f 6c 61 74 65 20 6c 69 73 70 20 76 61 6c 75 65 73 20 61 73 | f.`t'.interpolate.lisp.values.as |
| 5fc0 | 20 6c 69 73 70 2e 0a 0a 60 73 2d 6c 65 78 2d 66 6f 72 6d 61 74 27 20 69 6e 73 65 72 74 73 20 76 | .lisp...`s-lex-format'.inserts.v |
| 5fe0 | 61 6c 75 65 73 20 77 69 74 68 20 28 66 6f 72 6d 61 74 20 5c 22 25 53 5c 22 29 2e 22 29 0a 0a 28 | alues.with.(format.\"%S\").")..( |
| 6000 | 64 65 66 75 6e 20 73 2d 6c 65 78 2d 66 6d 74 7c 65 78 70 61 6e 64 20 28 66 6d 74 29 0a 20 20 22 | defun.s-lex-fmt|expand.(fmt)..." |
| 6020 | 45 78 70 61 6e 64 20 46 4d 54 20 69 6e 74 6f 20 6c 69 73 70 2e 22 0a 20 20 28 64 65 63 6c 61 72 | Expand.FMT.into.lisp."...(declar |
| 6040 | 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c 69 73 74 20 | e.(side-effect-free.t))...(list. |
| 6060 | 27 73 2d 66 6f 72 6d 61 74 20 66 6d 74 20 28 71 75 6f 74 65 20 27 61 67 65 74 29 0a 20 20 20 20 | 's-format.fmt.(quote.'aget)..... |
| 6080 | 20 20 20 20 28 61 70 70 65 6e 64 20 27 28 6c 69 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ....(append.'(list)............. |
| 60a0 | 20 20 20 20 28 6d 61 70 63 61 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 | ....(mapcar..................(la |
| 60c0 | 6d 62 64 61 20 28 6d 61 74 63 68 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | mbda.(matches).................. |
| 60e0 | 20 20 28 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 63 6f 6e | ..(list.....................'con |
| 6100 | 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 64 72 20 6d 61 74 63 | s.....................(cadr.matc |
| 6120 | 68 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 66 6f 72 6d 61 | hes).....................`(forma |
| 6140 | 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 73 2d 6c 65 | t.......................(if.s-le |
| 6160 | 78 2d 76 61 6c 75 65 2d 61 73 2d 6c 69 73 70 20 22 25 53 22 20 22 25 73 22 29 0a 20 20 20 20 20 | x-value-as-lisp."%S"."%s")...... |
| 6180 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 28 69 6e 74 65 72 6e 20 28 63 61 64 72 20 | .................,(intern.(cadr. |
| 61a0 | 6d 61 74 63 68 65 73 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 | matches)))))..................(s |
| 61c0 | 2d 6d 61 74 63 68 2d 73 74 72 69 6e 67 73 2d 61 6c 6c 20 22 24 7b 5c 5c 28 5b 5e 7d 5d 2b 5c 5c | -match-strings-all."${\\([^}]+\\ |
| 61e0 | 29 7d 22 20 66 6d 74 29 29 29 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 73 2d 6c 65 78 2d 66 6f | )}".fmt)))))..(defmacro.s-lex-fo |
| 6200 | 72 6d 61 74 20 28 66 6f 72 6d 61 74 2d 73 74 72 29 0a 20 20 22 60 73 2d 66 6f 72 6d 61 74 60 20 | rmat.(format-str)..."`s-format`. |
| 6220 | 77 69 74 68 20 74 68 65 20 63 75 72 72 65 6e 74 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 2e 0a 0a 46 | with.the.current.environment...F |
| 6240 | 4f 52 4d 41 54 2d 53 54 52 20 6d 61 79 20 75 73 65 20 74 68 65 20 60 73 2d 66 6f 72 6d 61 74 27 | ORMAT-STR.may.use.the.`s-format' |
| 6260 | 20 76 61 72 69 61 62 6c 65 20 72 65 66 65 72 65 6e 63 65 20 74 6f 20 72 65 66 65 72 20 74 6f 0a | .variable.reference.to.refer.to. |
| 6280 | 61 6e 79 20 76 61 72 69 61 62 6c 65 3a 0a 0a 20 28 6c 65 74 20 28 28 78 20 31 29 29 0a 20 20 20 | any.variable:...(let.((x.1)).... |
| 62a0 | 28 73 2d 6c 65 78 2d 66 6f 72 6d 61 74 20 5c 22 78 20 69 73 3a 20 24 7b 78 7d 5c 22 29 29 0a 0a | (s-lex-format.\"x.is:.${x}\")).. |
| 62c0 | 54 68 65 20 76 61 6c 75 65 73 20 6f 66 20 74 68 65 20 76 61 72 69 61 62 6c 65 73 20 61 72 65 20 | The.values.of.the.variables.are. |
| 62e0 | 69 6e 74 65 72 70 6f 6c 61 74 65 64 20 77 69 74 68 20 5c 22 25 73 5c 22 20 75 6e 6c 65 73 73 0a | interpolated.with.\"%s\".unless. |
| 6300 | 74 68 65 20 76 61 72 69 61 62 6c 65 20 60 73 2d 6c 65 78 2d 76 61 6c 75 65 2d 61 73 2d 6c 69 73 | the.variable.`s-lex-value-as-lis |
| 6320 | 70 27 20 69 73 20 60 74 27 20 61 6e 64 20 74 68 65 6e 20 74 68 65 79 20 61 72 65 0a 69 6e 74 65 | p'.is.`t'.and.then.they.are.inte |
| 6340 | 72 70 6f 6c 61 74 65 64 20 77 69 74 68 20 5c 22 25 53 5c 22 2e 22 0a 20 20 28 64 65 63 6c 61 72 | rpolated.with.\"%S\"."...(declar |
| 6360 | 65 20 28 64 65 62 75 67 20 28 66 6f 72 6d 29 29 29 0a 20 20 28 73 2d 6c 65 78 2d 66 6d 74 7c 65 | e.(debug.(form)))...(s-lex-fmt|e |
| 6380 | 78 70 61 6e 64 20 66 6f 72 6d 61 74 2d 73 74 72 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 63 6f 75 | xpand.format-str))..(defun.s-cou |
| 63a0 | 6e 74 2d 6d 61 74 63 68 65 73 20 28 72 65 67 65 78 70 20 73 20 26 6f 70 74 69 6f 6e 61 6c 20 73 | nt-matches.(regexp.s.&optional.s |
| 63c0 | 74 61 72 74 20 65 6e 64 29 0a 20 20 22 43 6f 75 6e 74 20 6f 63 63 75 72 72 65 6e 63 65 73 20 6f | tart.end)..."Count.occurrences.o |
| 63e0 | 66 20 60 72 65 67 65 78 70 27 20 69 6e 20 60 73 27 2e 0a 0a 60 73 74 61 72 74 27 2c 20 69 6e 63 | f.`regexp'.in.`s'...`start',.inc |
| 6400 | 6c 75 73 69 76 65 2c 20 61 6e 64 20 60 65 6e 64 27 2c 20 65 78 63 6c 75 73 69 76 65 2c 20 64 65 | lusive,.and.`end',.exclusive,.de |
| 6420 | 6c 69 6d 69 74 20 74 68 65 20 70 61 72 74 20 6f 66 20 60 73 27 20 74 6f 0a 6d 61 74 63 68 2e 20 | limit.the.part.of.`s'.to.match.. |
| 6440 | 20 60 73 74 61 72 74 27 20 61 6e 64 20 60 65 6e 64 27 20 61 72 65 20 62 6f 74 68 20 69 6e 64 65 | .`start'.and.`end'.are.both.inde |
| 6460 | 78 65 64 20 73 74 61 72 74 69 6e 67 20 61 74 20 31 3b 20 74 68 65 20 69 6e 69 74 69 61 6c 0a 63 | xed.starting.at.1;.the.initial.c |
| 6480 | 68 61 72 61 63 74 65 72 20 69 6e 20 60 73 27 20 69 73 20 69 6e 64 65 78 20 31 2e 0a 0a 54 68 69 | haracter.in.`s'.is.index.1...Thi |
| 64a0 | 73 20 66 75 6e 63 74 69 6f 6e 20 73 74 61 72 74 73 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20 74 68 | s.function.starts.looking.for.th |
| 64c0 | 65 20 6e 65 78 74 20 6d 61 74 63 68 20 66 72 6f 6d 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 | e.next.match.from.the.end.of.the |
| 64e0 | 0a 70 72 65 76 69 6f 75 73 20 6d 61 74 63 68 2e 20 20 48 65 6e 63 65 2c 20 69 74 20 69 67 6e 6f | .previous.match...Hence,.it.igno |
| 6500 | 72 65 73 20 6d 61 74 63 68 65 73 20 74 68 61 74 20 6f 76 65 72 6c 61 70 20 61 20 70 72 65 76 69 | res.matches.that.overlap.a.previ |
| 6520 | 6f 75 73 6c 79 0a 66 6f 75 6e 64 20 6d 61 74 63 68 2e 20 20 54 6f 20 63 6f 75 6e 74 20 6f 76 65 | ously.found.match...To.count.ove |
| 6540 | 72 6c 61 70 70 69 6e 67 20 6d 61 74 63 68 65 73 2c 20 75 73 65 0a 60 73 2d 63 6f 75 6e 74 2d 6d | rlapping.matches,.use.`s-count-m |
| 6560 | 61 74 63 68 65 73 2d 61 6c 6c 27 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 | atches-all'."...(declare.(side-e |
| 6580 | 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 | ffect-free.t))...(save-match-dat |
| 65a0 | 61 0a 20 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 28 69 | a.....(with-temp-buffer.......(i |
| 65c0 | 6e 73 65 72 74 20 73 29 0a 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 | nsert.s).......(goto-char.(point |
| 65e0 | 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 28 63 6f 75 6e 74 2d 6d 61 74 63 68 65 73 20 72 65 67 65 | -min)).......(count-matches.rege |
| 6600 | 78 70 20 28 6f 72 20 73 74 61 72 74 20 31 29 20 28 6f 72 20 65 6e 64 20 28 70 6f 69 6e 74 2d 6d | xp.(or.start.1).(or.end.(point-m |
| 6620 | 61 78 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 63 6f 75 6e 74 2d 6d 61 74 63 68 65 73 | ax))))))..(defun.s-count-matches |
| 6640 | 2d 61 6c 6c 20 28 72 65 67 65 78 70 20 73 20 26 6f 70 74 69 6f 6e 61 6c 20 73 74 61 72 74 20 65 | -all.(regexp.s.&optional.start.e |
| 6660 | 6e 64 29 0a 20 20 22 43 6f 75 6e 74 20 6f 63 63 75 72 72 65 6e 63 65 73 20 6f 66 20 60 72 65 67 | nd)..."Count.occurrences.of.`reg |
| 6680 | 65 78 70 27 20 69 6e 20 60 73 27 2e 0a 0a 60 73 74 61 72 74 27 2c 20 69 6e 63 6c 75 73 69 76 65 | exp'.in.`s'...`start',.inclusive |
| 66a0 | 2c 20 61 6e 64 20 60 65 6e 64 27 2c 20 65 78 63 6c 75 73 69 76 65 2c 20 64 65 6c 69 6d 69 74 20 | ,.and.`end',.exclusive,.delimit. |
| 66c0 | 74 68 65 20 70 61 72 74 20 6f 66 20 60 73 27 20 74 6f 0a 6d 61 74 63 68 2e 20 20 60 73 74 61 72 | the.part.of.`s'.to.match...`star |
| 66e0 | 74 27 20 61 6e 64 20 60 65 6e 64 27 20 61 72 65 20 62 6f 74 68 20 69 6e 64 65 78 65 64 20 73 74 | t'.and.`end'.are.both.indexed.st |
| 6700 | 61 72 74 69 6e 67 20 61 74 20 31 3b 20 74 68 65 20 69 6e 69 74 69 61 6c 0a 63 68 61 72 61 63 74 | arting.at.1;.the.initial.charact |
| 6720 | 65 72 20 69 6e 20 60 73 27 20 69 73 20 69 6e 64 65 78 20 31 2e 0a 0a 54 68 69 73 20 66 75 6e 63 | er.in.`s'.is.index.1...This.func |
| 6740 | 74 69 6f 6e 20 73 74 61 72 74 73 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20 74 68 65 20 6e 65 78 74 | tion.starts.looking.for.the.next |
| 6760 | 20 6d 61 74 63 68 20 66 72 6f 6d 20 74 68 65 20 73 65 63 6f 6e 64 0a 63 68 61 72 61 63 74 65 72 | .match.from.the.second.character |
| 6780 | 20 6f 66 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 6d 61 74 63 68 2e 20 20 48 65 6e 63 65 2c 20 | .of.the.previous.match...Hence,. |
| 67a0 | 69 74 20 63 6f 75 6e 74 73 20 6d 61 74 63 68 65 73 20 74 68 61 74 0a 6f 76 65 72 6c 61 70 20 61 | it.counts.matches.that.overlap.a |
| 67c0 | 20 70 72 65 76 69 6f 75 73 6c 79 20 66 6f 75 6e 64 20 6d 61 74 63 68 2e 20 20 54 6f 20 69 67 6e | .previously.found.match...To.ign |
| 67e0 | 6f 72 65 20 6d 61 74 63 68 65 73 20 74 68 61 74 20 6f 76 65 72 6c 61 70 20 61 0a 70 72 65 76 69 | ore.matches.that.overlap.a.previ |
| 6800 | 6f 75 73 6c 79 20 66 6f 75 6e 64 20 6d 61 74 63 68 2c 20 75 73 65 20 60 73 2d 63 6f 75 6e 74 2d | ously.found.match,.use.`s-count- |
| 6820 | 6d 61 74 63 68 65 73 27 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 | matches'."...(declare.(side-effe |
| 6840 | 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c 65 74 2a 20 28 28 61 6e 63 68 6f 72 65 64 2d 72 | ct-free.t))...(let*.((anchored-r |
| 6860 | 65 67 65 78 70 20 28 66 6f 72 6d 61 74 20 22 5e 25 73 22 20 72 65 67 65 78 70 29 29 0a 20 20 20 | egexp.(format."^%s".regexp)).... |
| 6880 | 20 20 20 20 20 20 28 6d 61 74 63 68 2d 63 6f 75 6e 74 20 30 29 0a 20 20 20 20 20 20 20 20 20 28 | ......(match-count.0)..........( |
| 68a0 | 69 20 30 29 0a 20 20 20 20 20 20 20 20 20 28 6e 61 72 72 6f 77 65 64 2d 73 20 28 73 75 62 73 74 | i.0)..........(narrowed-s.(subst |
| 68c0 | 72 69 6e 67 20 73 20 28 69 66 20 73 74 61 72 74 20 28 31 2d 20 73 74 61 72 74 29 20 30 29 0a 20 | ring.s.(if.start.(1-.start).0).. |
| 68e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
| 6900 | 20 28 77 68 65 6e 20 65 6e 64 20 28 31 2d 20 65 6e 64 29 29 29 29 29 0a 20 20 20 20 28 73 61 76 | .(when.end.(1-.end))))).....(sav |
| 6920 | 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 3c 20 69 20 28 | e-match-data.......(while.(<.i.( |
| 6940 | 6c 65 6e 67 74 68 20 6e 61 72 72 6f 77 65 64 2d 73 29 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 | length.narrowed-s)).........(whe |
| 6960 | 6e 20 28 73 2d 6d 61 74 63 68 65 73 3f 20 61 6e 63 68 6f 72 65 64 2d 72 65 67 65 78 70 20 28 73 | n.(s-matches?.anchored-regexp.(s |
| 6980 | 75 62 73 74 72 69 6e 67 20 6e 61 72 72 6f 77 65 64 2d 73 20 69 29 29 0a 20 20 20 20 20 20 20 20 | ubstring.narrowed-s.i))......... |
| 69a0 | 20 20 28 73 65 74 71 20 6d 61 74 63 68 2d 63 6f 75 6e 74 20 28 31 2b 20 6d 61 74 63 68 2d 63 6f | ..(setq.match-count.(1+.match-co |
| 69c0 | 75 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 69 20 28 31 2b 20 69 29 29 29 29 | unt))).........(setq.i.(1+.i)))) |
| 69e0 | 0a 20 20 20 20 6d 61 74 63 68 2d 63 6f 75 6e 74 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 77 72 61 | .....match-count))..(defun.s-wra |
| 6a00 | 70 20 28 73 20 70 72 65 66 69 78 20 26 6f 70 74 69 6f 6e 61 6c 20 73 75 66 66 69 78 29 0a 20 20 | p.(s.prefix.&optional.suffix)... |
| 6a20 | 22 57 72 61 70 20 73 74 72 69 6e 67 20 53 20 77 69 74 68 20 50 52 45 46 49 58 20 61 6e 64 20 6f | "Wrap.string.S.with.PREFIX.and.o |
| 6a40 | 70 74 69 6f 6e 61 6c 6c 79 20 53 55 46 46 49 58 2e 0a 0a 52 65 74 75 72 6e 20 73 74 72 69 6e 67 | ptionally.SUFFIX...Return.string |
| 6a60 | 20 53 20 77 69 74 68 20 50 52 45 46 49 58 20 70 72 65 70 65 6e 64 65 64 2e 20 20 49 66 20 53 55 | .S.with.PREFIX.prepended...If.SU |
| 6a80 | 46 46 49 58 20 69 73 20 70 72 65 73 65 6e 74 2c 20 69 74 0a 69 73 20 61 70 70 65 6e 64 65 64 2c | FFIX.is.present,.it.is.appended, |
| 6aa0 | 20 6f 74 68 65 72 77 69 73 65 20 50 52 45 46 49 58 20 69 73 20 75 73 65 64 20 61 73 20 62 6f 74 | .otherwise.PREFIX.is.used.as.bot |
| 6ac0 | 68 20 70 72 65 66 69 78 20 61 6e 64 0a 73 75 66 66 69 78 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 | h.prefix.and.suffix."...(declare |
| 6ae0 | 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a | .(pure.t).(side-effect-free.t)). |
| 6b00 | 20 20 28 63 6f 6e 63 61 74 20 70 72 65 66 69 78 20 73 20 28 6f 72 20 73 75 66 66 69 78 20 70 72 | ..(concat.prefix.s.(or.suffix.pr |
| 6b20 | 65 66 69 78 29 29 29 0a 0a 0c 0a 3b 3b 3b 20 41 6c 69 61 73 65 73 0a 0a 28 64 65 66 61 6c 69 61 | efix)))....;;;.Aliases..(defalia |
| 6b40 | 73 20 27 73 2d 62 6c 61 6e 6b 2d 70 20 27 73 2d 62 6c 61 6e 6b 3f 29 0a 28 64 65 66 61 6c 69 61 | s.'s-blank-p.'s-blank?).(defalia |
| 6b60 | 73 20 27 73 2d 62 6c 61 6e 6b 2d 73 74 72 2d 70 20 27 73 2d 62 6c 61 6e 6b 2d 73 74 72 3f 29 0a | s.'s-blank-str-p.'s-blank-str?). |
| 6b80 | 28 64 65 66 61 6c 69 61 73 20 27 73 2d 63 61 70 69 74 61 6c 69 7a 65 64 2d 70 20 27 73 2d 63 61 | (defalias.'s-capitalized-p.'s-ca |
| 6ba0 | 70 69 74 61 6c 69 7a 65 64 3f 29 0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d 63 6f 6e 74 61 69 6e | pitalized?).(defalias.'s-contain |
| 6bc0 | 73 2d 70 20 27 73 2d 63 6f 6e 74 61 69 6e 73 3f 29 0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d 65 | s-p.'s-contains?).(defalias.'s-e |
| 6be0 | 6e 64 73 2d 77 69 74 68 2d 70 20 27 73 2d 65 6e 64 73 2d 77 69 74 68 3f 29 0a 28 64 65 66 61 6c | nds-with-p.'s-ends-with?).(defal |
| 6c00 | 69 61 73 20 27 73 2d 65 71 75 61 6c 73 2d 70 20 27 73 2d 65 71 75 61 6c 73 3f 29 0a 28 64 65 66 | ias.'s-equals-p.'s-equals?).(def |
| 6c20 | 61 6c 69 61 73 20 27 73 2d 6c 65 73 73 2d 70 20 27 73 2d 6c 65 73 73 3f 29 0a 28 64 65 66 61 6c | alias.'s-less-p.'s-less?).(defal |
| 6c40 | 69 61 73 20 27 73 2d 6c 6f 77 65 72 63 61 73 65 2d 70 20 27 73 2d 6c 6f 77 65 72 63 61 73 65 3f | ias.'s-lowercase-p.'s-lowercase? |
| 6c60 | 29 0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d 6d 61 74 63 68 65 73 2d 70 20 27 73 2d 6d 61 74 63 | ).(defalias.'s-matches-p.'s-matc |
| 6c80 | 68 65 73 3f 29 0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d 6d 69 78 65 64 63 61 73 65 2d 70 20 27 | hes?).(defalias.'s-mixedcase-p.' |
| 6ca0 | 73 2d 6d 69 78 65 64 63 61 73 65 3f 29 0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d 6e 75 6d 65 72 | s-mixedcase?).(defalias.'s-numer |
| 6cc0 | 69 63 2d 70 20 27 73 2d 6e 75 6d 65 72 69 63 3f 29 0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d 70 | ic-p.'s-numeric?).(defalias.'s-p |
| 6ce0 | 72 65 66 69 78 2d 70 20 27 73 2d 73 74 61 72 74 73 2d 77 69 74 68 3f 29 0a 28 64 65 66 61 6c 69 | refix-p.'s-starts-with?).(defali |
| 6d00 | 61 73 20 27 73 2d 70 72 65 66 69 78 3f 20 27 73 2d 73 74 61 72 74 73 2d 77 69 74 68 3f 29 0a 28 | as.'s-prefix?.'s-starts-with?).( |
| 6d20 | 64 65 66 61 6c 69 61 73 20 27 73 2d 70 72 65 73 65 6e 74 2d 70 20 27 73 2d 70 72 65 73 65 6e 74 | defalias.'s-present-p.'s-present |
| 6d40 | 3f 29 0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d 73 74 61 72 74 73 2d 77 69 74 68 2d 70 20 27 73 | ?).(defalias.'s-starts-with-p.'s |
| 6d60 | 2d 73 74 61 72 74 73 2d 77 69 74 68 3f 29 0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d 73 75 66 66 | -starts-with?).(defalias.'s-suff |
| 6d80 | 69 78 2d 70 20 27 73 2d 65 6e 64 73 2d 77 69 74 68 3f 29 0a 28 64 65 66 61 6c 69 61 73 20 27 73 | ix-p.'s-ends-with?).(defalias.'s |
| 6da0 | 2d 73 75 66 66 69 78 3f 20 27 73 2d 65 6e 64 73 2d 77 69 74 68 3f 29 0a 28 64 65 66 61 6c 69 61 | -suffix?.'s-ends-with?).(defalia |
| 6dc0 | 73 20 27 73 2d 75 70 70 65 72 63 61 73 65 2d 70 20 27 73 2d 75 70 70 65 72 63 61 73 65 3f 29 0a | s.'s-uppercase-p.'s-uppercase?). |
| 6de0 | 0a 0c 0a 28 70 72 6f 76 69 64 65 20 27 73 29 0a 3b 3b 3b 20 73 2e 65 6c 20 65 6e 64 73 20 68 65 | ...(provide.'s).;;;.s.el.ends.he |
| 6e00 | 72 65 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | re.............................. |
| 6e20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6e40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6e60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6e80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6ea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6ec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6ee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6f00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6f20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6f40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6f60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6f80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6fa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6fc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6fe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7000 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 70a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 70c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 70e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 71a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 71c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 71e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 72a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 72c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 72e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 73a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 73c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 73e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7460 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7480 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 74a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 74c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 74e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 75a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 75c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 75e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7600 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7660 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7680 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 76a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 76c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 76e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 77a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 77c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 77e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |