mirror of
				https://github.com/janet-lang/janet
				synced 2025-10-31 15:43:01 +00:00 
			
		
		
		
	Drop leading and trailing newlines in longstrings.
Long, heredoc style strings can now have a non semantic leading newline character. This makes it easier to define large columns of text.
This commit is contained in:
		| @@ -4,7 +4,7 @@ | ||||
|     :name "numarray" | ||||
|     :source @["numarray.c"]) | ||||
|  | ||||
| (import build/numarray :prefix "") | ||||
| (import build/numarray :as numarray) | ||||
|  | ||||
| (def a (numarray/new 30)) | ||||
| (print (get a 20)) | ||||
|   | ||||
| @@ -100,12 +100,12 @@ Janet num_array_get(void *p, Janet key) { | ||||
|  | ||||
| static const JanetReg cfuns[] = { | ||||
|     { | ||||
|         "numarray/new", num_array_new, | ||||
|         "new", num_array_new, | ||||
|         "(numarray/new size)\n\n" | ||||
|         "Create new numarray" | ||||
|     }, | ||||
|     { | ||||
|         "numarray/scale", num_array_scale, | ||||
|         "scale", num_array_scale, | ||||
|         "(numarray/scale numarray factor)\n\n" | ||||
|         "scale numarray by factor" | ||||
|     }, | ||||
|   | ||||
| @@ -257,12 +257,24 @@ static int escape1(JanetParser *p, JanetParseState *state, uint8_t c) { | ||||
|  | ||||
| static int stringend(JanetParser *p, JanetParseState *state) { | ||||
|     Janet ret; | ||||
|     uint8_t *bufstart = p->buf; | ||||
|     int32_t buflen = (int32_t) p->bufcount; | ||||
|     if (state->flags & PFLAG_LONGSTRING) { | ||||
|         /* Check for leading newline character so we can remove it */ | ||||
|         if (bufstart[0] == '\n') { | ||||
|             bufstart++; | ||||
|             buflen--; | ||||
|         } | ||||
|         if (buflen > 0 && bufstart[buflen - 1] == '\n') { | ||||
|             buflen--; | ||||
|         } | ||||
|     } | ||||
|     if (state->flags & PFLAG_BUFFER) { | ||||
|         JanetBuffer *b = janet_buffer((int32_t)p->bufcount); | ||||
|         janet_buffer_push_bytes(b, p->buf, (int32_t)p->bufcount); | ||||
|         JanetBuffer *b = janet_buffer(buflen); | ||||
|         janet_buffer_push_bytes(b, bufstart, buflen); | ||||
|         ret = janet_wrap_buffer(b); | ||||
|     } else { | ||||
|         ret = janet_wrap_string(janet_string(p->buf, (int32_t)p->bufcount)); | ||||
|         ret = janet_wrap_string(janet_string(bufstart, buflen)); | ||||
|     } | ||||
|     p->bufcount = 0; | ||||
|     popstate(p, ret); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Calvin Rose
					Calvin Rose