mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 12:22:44 +00:00 
			
		
		
		
	LibJS: Implement String.prototype.split
This adds a String.prototype.split implementation modelled after ECMA262 specification. Additionally, `Value::to_u32` was added as an implementation of the standard `ToUint32` abstract operation. There is a tiny kludge for when the separator is an empty string. Basic tests and visiting google.com prove that this is working.
This commit is contained in:
		
							parent
							
								
									b53664a8ef
								
							
						
					
					
						commit
						b24ce0b5ee
					
				
					 5 changed files with 140 additions and 0 deletions
				
			
		|  | @ -0,0 +1,35 @@ | |||
| test("basic functionality", () => { | ||||
|     expect(String.prototype.split).toHaveLength(2); | ||||
| 
 | ||||
|     expect("hello friends".split()).toEqual(["hello friends"]); | ||||
|     expect("hello friends".split("")).toEqual([ | ||||
|         "h", | ||||
|         "e", | ||||
|         "l", | ||||
|         "l", | ||||
|         "o", | ||||
|         " ", | ||||
|         "f", | ||||
|         "r", | ||||
|         "i", | ||||
|         "e", | ||||
|         "n", | ||||
|         "d", | ||||
|         "s", | ||||
|     ]); | ||||
|     expect("hello friends".split(" ")).toEqual(["hello", "friends"]); | ||||
| 
 | ||||
|     expect("a,b,c,d".split(",")).toEqual(["a", "b", "c", "d"]); | ||||
|     expect(",a,b,c,d".split(",")).toEqual(["", "a", "b", "c", "d"]); | ||||
|     expect("a,b,c,d,".split(",")).toEqual(["a", "b", "c", "d", ""]); | ||||
|     expect("a,b,,c,d".split(",")).toEqual(["a", "b", "", "c", "d"]); | ||||
|     expect(",a,b,,c,d,".split(",")).toEqual(["", "a", "b", "", "c", "d", ""]); | ||||
|     expect(",a,b,,,c,d,".split(",,")).toEqual([",a,b", ",c,d,"]); | ||||
| }); | ||||
| 
 | ||||
| test("limits", () => { | ||||
|     expect("a b c d".split(" ", 0)).toEqual([]); | ||||
|     expect("a b c d".split(" ", 1)).toEqual(["a"]); | ||||
|     expect("a b c d".split(" ", 3)).toEqual(["a", "b", "c"]); | ||||
|     expect("a b c d".split(" ", 100)).toEqual(["a", "b", "c", "d"]); | ||||
| }); | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Marcin Gasperowicz
						Marcin Gasperowicz